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);
}
}
Show replies by date