[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