[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