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

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Mar 3 14:32:24 EST 2011


Author: shawkins
Date: 2011-03-03 14:32:23 -0500 (Thu, 03 Mar 2011)
New Revision: 2961

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java
   trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptionalJoins.java
Log:
TEIID-1471 fixing a regression in optional join removal

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java	2011-03-03 19:29:04 UTC (rev 2960)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java	2011-03-03 19:32:23 UTC (rev 2961)
@@ -103,6 +103,7 @@
     	// remove the parent node and move the sibling node upward
 		PlanNode parentNode = joinNode.getParent();
 		joinNode.removeChild(optionalNode);
+		joinNode.getFirstChild().setProperty(NodeConstants.Info.OUTPUT_COLS, joinNode.getProperty(NodeConstants.Info.OUTPUT_COLS));
 		NodeEditor.removeChildNode(parentNode, joinNode);
 
 		return NodeEditor.findAllNodes(optionalNode, NodeConstants.Types.JOIN);

Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptionalJoins.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptionalJoins.java	2011-03-03 19:29:04 UTC (rev 2960)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptionalJoins.java	2011-03-03 19:32:23 UTC (rev 2961)
@@ -500,4 +500,11 @@
 				});
 	}
     
+    @Test public void testOptionalJoinNodeStar() throws Exception { 
+        ProcessorPlan plan = TestOptimizer.helpPlan("SELECT g2.e1 FROM /* optional */ ( /* optional */ pm1.g1 as g1 makedep INNER JOIN /* optional */ pm2.g2 ON g1.e1 = pm2.g2.e1) makedep INNER JOIN /* optional */ pm2.g3 ON g1.e1 = pm2.g3.e1", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
+            new String[] {"SELECT g_0.e1 FROM pm2.g2 AS g_0"}, ComparisonMode.EXACT_COMMAND_STRING ); //$NON-NLS-1$
+
+        TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);    
+    }
+    
 }



More information about the teiid-commits mailing list