[teiid-commits] teiid SVN: r3322 - trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Jul 21 12:29:29 EDT 2011


Author: shawkins
Date: 2011-07-21 12:29:29 -0400 (Thu, 21 Jul 2011)
New Revision: 3322

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java
Log:
TEIID-1678 fix for ordering position

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java	2011-07-21 16:29:16 UTC (rev 3321)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java	2011-07-21 16:29:29 UTC (rev 3322)
@@ -172,8 +172,6 @@
             	joinNode.setProperty(NodeConstants.Info.RIGHT_EXPRESSIONS, rightExpressions);
             }
 
-            Set<SingleElementSymbol> outputSymbols = new LinkedHashSet<SingleElementSymbol>((List<SingleElementSymbol>)joinNode.getProperty(NodeConstants.Info.OUTPUT_COLS));
-
 			boolean pushedLeft = insertSort(joinNode.getFirstChild(), leftExpressions, joinNode, metadata, capabilitiesFinder, pushLeft);	
 			
 	        if (origExpressionCount == 1 
@@ -236,6 +234,8 @@
 	        }
         }
         
+        boolean sort = true;
+        
         if (sourceNode.getType() == NodeConstants.Types.ACCESS) {
         	if (distinct || NewCalculateCostUtil.usesKey(sourceNode, expressions, metadata)) {
                 joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.IS_LEFT_DISTINCT : NodeConstants.Info.IS_RIGHT_DISTINCT, true);
@@ -248,13 +248,18 @@
 	            }
 	            return true;
 	        }
+        } else if (sourceNode.getType() == NodeConstants.Types.GROUP) {
+        	sourceNode.addAsParent(sortNode);
+        	sort = false; // the grouping columns must contain all of the ordering columns
         }
         
         if (distinct) {
             joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.IS_LEFT_DISTINCT : NodeConstants.Info.IS_RIGHT_DISTINCT, true);
     	}
         
-        joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.SORT_LEFT : NodeConstants.Info.SORT_RIGHT, SortOption.SORT);
+        if (sort) {
+        	joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.SORT_LEFT : NodeConstants.Info.SORT_RIGHT, SortOption.SORT);
+        }        
         
         if (needsCorrection) {
             PlanNode projectNode = NodeFactory.getNewNode(NodeConstants.Types.PROJECT);



More information about the teiid-commits mailing list