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

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Nov 16 16:28:39 EST 2010


Author: shawkins
Date: 2010-11-16 16:28:39 -0500 (Tue, 16 Nov 2010)
New Revision: 2725

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java
Log:
TEIID-211 fix for ordering of projected symbols

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java	2010-11-16 18:23:48 UTC (rev 2724)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java	2010-11-16 21:28:39 UTC (rev 2725)
@@ -26,6 +26,7 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -430,7 +431,7 @@
 		plannedResult.query = (Query)plannedResult.query.clone();
 
 		List<GroupSymbol> rightGroups = plannedResult.query.getFrom().getGroups();
-		Set<SingleElementSymbol> requiredExpressions = new HashSet<SingleElementSymbol>();
+		Set<SingleElementSymbol> requiredExpressions = new LinkedHashSet<SingleElementSymbol>();
 		final SymbolMap refs = plannedResult.query.getCorrelatedReferences();
 		boolean addGroupBy = false;
 		if (refs != null) {
@@ -476,14 +477,14 @@
 		if (addGroupBy) {
 			plannedResult.query.setGroupBy(new GroupBy(plannedResult.rightExpressions));
 		}
-		
+		HashSet<SingleElementSymbol> projectedSymbols = new HashSet<SingleElementSymbol>(plannedResult.query.getProjectedSymbols());
 		for (SingleElementSymbol ses : requiredExpressions) {
-			if (plannedResult.query.getSelect().getProjectedSymbols().indexOf(ses) == -1) {
+			if (projectedSymbols.add(ses)) {
 				plannedResult.query.getSelect().addSymbol(ses);
 			}
 		}
 		for (SingleElementSymbol ses : (List<SingleElementSymbol>)plannedResult.rightExpressions) {
-			if (plannedResult.query.getSelect().getProjectedSymbols().indexOf(ses) == -1) {
+			if (projectedSymbols.add(ses)) {
 				plannedResult.query.getSelect().addSymbol(ses);
 			}
 		}



More information about the teiid-commits mailing list