[teiid-commits] teiid SVN: r2848 - branches/7.1.x/engine/src/test/java/org/teiid/query/processor/proc.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Tue Jan 18 13:47:07 EST 2011
Author: shawkins
Date: 2011-01-18 13:47:06 -0500 (Tue, 18 Jan 2011)
New Revision: 2848
Modified:
branches/7.1.x/engine/src/test/java/org/teiid/query/processor/proc/TestProcedureProcessor.java
Log:
TEIID-1438 correcting the validation that is performed on non-query commands to detect pushdown errors.
Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/processor/proc/TestProcedureProcessor.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/processor/proc/TestProcedureProcessor.java 2011-01-18 18:12:05 UTC (rev 2847)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/processor/proc/TestProcedureProcessor.java 2011-01-18 18:47:06 UTC (rev 2848)
@@ -57,6 +57,7 @@
import org.teiid.query.resolver.QueryResolver;
import org.teiid.query.rewriter.QueryRewriter;
import org.teiid.query.sql.lang.Command;
+import org.teiid.query.sql.lang.SPParameter;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.unittest.FakeMetadataFacade;
import org.teiid.query.unittest.FakeMetadataFactory;
@@ -2648,5 +2649,40 @@
helpTestProcess(plan, expected, new HardcodedDataManager(), metadata);
}
+ @Test public void testNonQueryPushdownValidation() throws Exception {
+
+ FakeMetadataFacade metadata = FakeMetadataFactory.example1();
+
+ FakeMetadataObject pm1 = metadata.getStore().findObject("pm1",FakeMetadataObject.MODEL); //$NON-NLS-1$
+
+ FakeMetadataObject rs2 = FakeMetadataFactory.createResultSet("pm1.rs1", pm1, new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.STRING }); //$NON-NLS-1$ //$NON-NLS-2$
+ FakeMetadataObject rs2p1 = FakeMetadataFactory.createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs2); //$NON-NLS-1$
+ FakeMetadataObject in = FakeMetadataFactory.createParameter("pm1.sq1.in1", 2, SPParameter.IN, DataTypeManager.DefaultDataTypes.INTEGER, null); //$NON-NLS-1$
+
+ StringBuffer procedure = new StringBuffer("CREATE VIRTUAL PROCEDURE \n"); //$NON-NLS-1$
+ procedure.append("BEGIN\n"); //$NON-NLS-1$
+ procedure.append("create local temporary table x (y string);\n"); //$NON-NLS-1$
+ procedure.append("update x set y = in1 || 'foo';\n"); //$NON-NLS-1$
+ procedure.append("update pm1.g1 set e1 = lookup('pm1.g1', 'e1', 'e2', in1);\n"); //$NON-NLS-1$
+ procedure.append("exec pm1.sq2(in1 || 'foo');\n"); //$NON-NLS-1$
+ procedure.append("END"); //$NON-NLS-1$
+
+ QueryNode sq2n1 = new QueryNode("pm1.sq1", procedure.toString()); //$NON-NLS-1$
+ FakeMetadataObject sq1 = FakeMetadataFactory.createVirtualProcedure("pm1.sq1", pm1, Arrays.asList(new FakeMetadataObject[] { in, rs2p1 }), sq2n1); //$NON-NLS-1$
+
+ metadata.getStore().addObject(rs2);
+ metadata.getStore().addObject(sq1);
+
+ String userUpdateStr = "EXEC pm1.sq1(1)"; //$NON-NLS-1$
+
+ FakeDataManager dataMgr = exampleDataManager(metadata);
+
+ ProcessorPlan plan = getProcedurePlan(userUpdateStr, metadata);
+
+ //Create expected results
+ List[] expected = new List[0];
+ helpTestProcess(plan, expected, dataMgr, metadata);
+ }
+
private static final boolean DEBUG = false;
}
More information about the teiid-commits
mailing list