[teiid-commits] teiid SVN: r2472 - 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 Aug 17 13:52:42 EDT 2010


Author: shawkins
Date: 2010-08-17 13:52:41 -0400 (Tue, 17 Aug 2010)
New Revision: 2472

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
Log:
TEIID-1216 fix for nested table correlated references not getting picked up with a nested join

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2010-08-17 17:12:03 UTC (rev 2471)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2010-08-17 17:52:41 UTC (rev 2472)
@@ -706,7 +706,7 @@
 	private SymbolMap getCorrelatedReferences(PlanNode parent, PlanNode node,
 			LanguageObject lo) {
 		PlanNode rootJoin = parent;
-		while (rootJoin.getParent() != null && rootJoin.getParent().getType() == NodeConstants.Types.JOIN) {
+		while (rootJoin.getParent() != null && rootJoin.getParent().getType() == NodeConstants.Types.JOIN && !rootJoin.getParent().getGroups().isEmpty()) {
 			rootJoin = rootJoin.getParent();
 		}
 		List<Reference> correlatedReferences = new ArrayList<Reference>();

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2010-08-17 17:12:03 UTC (rev 2471)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2010-08-17 17:52:41 UTC (rev 2472)
@@ -7485,6 +7485,21 @@
         helpProcess(plan, dataManager, expected);
     }
     
+    @Test public void testCorrelatedNestedTable5() {
+    	String sql = "select y.e1, y.e2, z.e2 from (exec pm1.sq1()) y, table (exec pm1.sq2(y.e1)) x, table (exec pm1.sq2(x.e1)) z where y.e2 = 2"; //$NON-NLS-1$
+    	
+        List[] expected = new List[] {
+        		Arrays.asList("b", 2, 2),
+        };    
+    
+        FakeDataManager dataManager = new FakeDataManager();
+        sampleData1(dataManager);
+        
+        ProcessorPlan plan = helpGetPlan(helpParse(sql), FakeMetadataFactory.example1Cached());
+        
+        helpProcess(plan, dataManager, expected);
+    }
+    
     @Test public void testUncorrelatedScalarSubqueryPushdown() throws Exception {
         FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
         FakeMetadataFacade metadata = example1();



More information about the teiid-commits mailing list