[teiid-commits] teiid SVN: r2926 - in trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc: postgresql and 1 other directory.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Feb 23 10:30:33 EST 2011
Author: shawkins
Date: 2011-02-23 10:30:32 -0500 (Wed, 23 Feb 2011)
New Revision: 2926
Modified:
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2ExecutionFactory.java
trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLExecutionFactory.java
Log:
TEIID-247 adding h2 and postgres pushdown support for array functions
Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2ExecutionFactory.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2ExecutionFactory.java 2011-02-23 01:53:08 UTC (rev 2925)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/h2/H2ExecutionFactory.java 2011-02-23 15:30:32 UTC (rev 2926)
@@ -165,6 +165,8 @@
supportedFunctions.add(SourceSystemFunctions.CONVERT);
supportedFunctions.add(SourceSystemFunctions.IFNULL);
supportedFunctions.add(SourceSystemFunctions.COALESCE);
+ supportedFunctions.add(SourceSystemFunctions.ARRAY_GET);
+ supportedFunctions.add(SourceSystemFunctions.ARRAY_LENGTH);
return supportedFunctions;
}
Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLExecutionFactory.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLExecutionFactory.java 2011-02-23 01:53:08 UTC (rev 2925)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/postgresql/PostgreSQLExecutionFactory.java 2011-02-23 15:30:32 UTC (rev 2926)
@@ -110,6 +110,24 @@
//specific to 8.2 client or later
registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new EscapeSyntaxModifier());
registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new EscapeSyntaxModifier());
+
+ registerFunctionModifier(SourceSystemFunctions.ARRAY_GET, new FunctionModifier() {
+
+ @Override
+ public List<?> translate(Function function) {
+ return Arrays.asList(function.getParameters().get(0), '[', function.getParameters().get(1), ']');
+ }
+ });
+ registerFunctionModifier(SourceSystemFunctions.ARRAY_LENGTH, new FunctionModifier() {
+
+ @Override
+ public List<?> translate(Function function) {
+ if (function.getParameters().size() == 1) {
+ function.getParameters().add(new Literal(1, TypeFacility.RUNTIME_TYPES.INTEGER));
+ }
+ return null;
+ }
+ });
//add in type conversion
ConvertModifier convertModifier = new ConvertModifier();
@@ -427,6 +445,8 @@
// supportedFunctions.add("USER"); //$NON-NLS-1$ // no ()
// supportedFunctions.add("VERSION"); //$NON-NLS-1$
//
+ supportedFunctions.add(SourceSystemFunctions.ARRAY_GET);
+ supportedFunctions.add(SourceSystemFunctions.ARRAY_LENGTH);
return supportedFunctions;
}
More information about the teiid-commits
mailing list