[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