[teiid-commits] teiid SVN: r2870 - in trunk: connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Jan 21 12:13:17 EST 2011


Author: shawkins
Date: 2011-01-21 12:13:16 -0500 (Fri, 21 Jan 2011)
New Revision: 2870

Modified:
   trunk/api/src/main/java/org/teiid/metadata/Schema.java
   trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
   trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
Log:
TEIID-796 adding an importer property to handle overloaded procedures

Modified: trunk/api/src/main/java/org/teiid/metadata/Schema.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Schema.java	2011-01-21 15:59:53 UTC (rev 2869)
+++ trunk/api/src/main/java/org/teiid/metadata/Schema.java	2011-01-21 17:13:16 UTC (rev 2870)
@@ -46,7 +46,9 @@
 	
 	public void addProcedure(Procedure procedure) {
 		procedure.setParent(this);
-		this.procedures.put(procedure.getName().toLowerCase(), procedure);
+		if (this.procedures.put(procedure.getName().toLowerCase(), procedure) != null) {
+			throw new AssertionError("Duplicate Procedure " + procedure.getName()); //$NON-NLS-1$
+		}
 	}
 	
 	public void addFunction(FunctionMethod function) {

Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java	2011-01-21 15:59:53 UTC (rev 2869)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCMetdataProcessor.java	2011-01-21 17:13:16 UTC (rev 2870)
@@ -82,6 +82,7 @@
 	private boolean importApproximateIndexes = true;
 	private boolean widenUnsingedTypes = true;
 	private boolean quoteNameInSource = true;
+	private boolean useProcedureSpecificName;
 	//TODO add an option to not fully qualify name in source
 	
 	private Set<String> unsignedTypes = new HashSet<String>();
@@ -129,13 +130,18 @@
 			DatabaseMetaData metadata) throws SQLException, TranslatorException {
 		LogManager.logDetail("JDBCMetadataProcessor - Importing procedures"); //$NON-NLS-1$
 		ResultSet procedures = metadata.getProcedures(catalog, schemaPattern, procedureNamePattern);
+		int rsColumns = procedures.getMetaData().getColumnCount();
 		while (procedures.next()) {
 			String procedureCatalog = procedures.getString(1);
 			String procedureSchema = procedures.getString(2);
 			String procedureName = procedures.getString(3);
+			String nameInSource = procedureName;
+			if (useProcedureSpecificName && rsColumns >= 9) {
+				procedureName = procedures.getString(9);
+			}
 			String fullProcedureName = getFullyQualifiedName(procedureCatalog, procedureSchema, procedureName);
 			Procedure procedure = metadataFactory.addProcedure(useFullSchemaName?fullProcedureName:procedureName);
-			procedure.setNameInSource(getFullyQualifiedName(procedureCatalog, procedureSchema, procedureName, true));
+			procedure.setNameInSource(getFullyQualifiedName(procedureCatalog, procedureSchema, nameInSource, true));
 			ResultSet columns = metadata.getProcedureColumns(catalog, procedureSchema, procedureName, null);
 			while (columns.next()) {
 				String columnName = columns.getString(4);
@@ -431,4 +437,8 @@
 		this.schemaPattern = schema;
 	}
 	
+	public void setUseProcedureSpecificName(boolean useProcedureSpecificName) {
+		this.useProcedureSpecificName = useProcedureSpecificName;
+	}
+	
 }

Modified: trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml	2011-01-21 15:59:53 UTC (rev 2869)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml	2011-01-21 17:13:16 UTC (rev 2870)
@@ -423,6 +423,11 @@
                         <entry>false will override the default and direct Teiid to create source queries using unquoted identifiers.</entry>
                         <entry>true</entry>
                     </row>
+                    <row>
+                        <entry>useProcedureSpecificName</entry>
+                        <entry>true will allow the import of overloaded procedures (which will normally result in a duplicate procedure error) by using the unique procedure specific name as the Teiid name.  This option will only work with JDBC 4.0 compatable drivers that report specific names.</entry>
+                        <entry>false</entry>
+                    </row>
                 </tbody>
             </tgroup>
         </table>



More information about the teiid-commits mailing list