[teiid-commits] teiid SVN: r4164 - in trunk/engine/src: test/java/org/teiid/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Jun 5 06:45:59 EDT 2012


Author: shawkins
Date: 2012-06-05 06:45:58 -0400 (Tue, 05 Jun 2012)
New Revision: 4164

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
Log:
TEIID-2063 fix for NPE with proc relational logic

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java	2012-06-04 12:37:31 UTC (rev 4163)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java	2012-06-05 10:45:58 UTC (rev 4164)
@@ -514,7 +514,7 @@
     }
     
     static boolean isProcedure(PlanNode projectNode) {
-        if(projectNode.getType() == NodeConstants.Types.PROJECT && projectNode.getChildCount() > 0) {
+        if(projectNode != null && projectNode.getType() == NodeConstants.Types.PROJECT && projectNode.getChildCount() > 0) {
             PlanNode accessNode = projectNode.getFirstChild();
             Command command = getNonQueryCommand(accessNode);
             return command instanceof StoredProcedure;

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java	2012-06-04 12:37:31 UTC (rev 4163)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java	2012-06-05 10:45:58 UTC (rev 4164)
@@ -73,6 +73,21 @@
         TestProcessor.helpProcess(plan, dataManager, expected);
     }
     
+    @Test public void testProcTableFunction() throws Exception {
+        String sql = "select param1, param2, e1, e2 from pm1.vsp26 as x, texttable('abc' columns a string) as y where param1=1 and param2='a'"; //$NON-NLS-1$
+
+        List<?>[] expected = new List[] { 
+                Arrays.asList(new Object[] { new Integer(1), "a", "a", new Integer(3)}), //$NON-NLS-1$  //$NON-NLS-2$
+        };       
+
+        FakeDataManager dataManager = new FakeDataManager();
+        TestProcessor.sampleData1(dataManager);
+
+        ProcessorPlan plan = TestProcessor.helpGetPlan(sql, RealMetadataFactory.example1Cached());
+
+        TestProcessor.helpProcess(plan, dataManager, expected);
+    }
+    
     @Test public void testProcInSelectScalarSubquery() throws Exception {
         String sql = "select (EXEC pm1.vsp36(pm1.g1.e2)) from pm1.g1 where pm1.g1.e1 = 'a'"; //$NON-NLS-1$
 



More information about the teiid-commits mailing list