[teiid-commits] teiid SVN: r2780 - in branches/7.1.x/engine/src: main/java/org/teiid/query/sql/lang and 1 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Tue Dec 14 16:40:45 EST 2010
Author: shawkins
Date: 2010-12-14 16:40:44 -0500 (Tue, 14 Dec 2010)
New Revision: 2780
Modified:
branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/Query.java
branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
Log:
TEIID-1399 fix for resolving unrelated with aggregates
Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2010-12-14 21:34:03 UTC (rev 2779)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2010-12-14 21:40:44 UTC (rev 2780)
@@ -313,7 +313,6 @@
* allowed to be in ORDER BY
* @param metadata
* QueryMetadataInterface
- * @param isSimpleQuery
*/
public static void resolveOrderBy(OrderBy orderBy, QueryCommand command, QueryMetadataInterface metadata)
throws QueryResolverException, QueryMetadataException, TeiidComponentException {
@@ -325,7 +324,7 @@
if (command instanceof Query) {
Query query = (Query)command;
- isSimpleQuery = !query.getSelect().isDistinct() && query.getGroupBy() == null;
+ isSimpleQuery = !query.getSelect().isDistinct() && !query.hasAggregates();
if (query.getFrom() != null) {
fromClauseGroups = query.getFrom().getGroups();
}
Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/Query.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/Query.java 2010-12-14 21:34:03 UTC (rev 2779)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/Query.java 2010-12-14 21:40:44 UTC (rev 2780)
@@ -34,6 +34,7 @@
import org.teiid.query.sql.LanguageVisitor;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.sql.symbol.SingleElementSymbol;
+import org.teiid.query.sql.visitor.AggregateSymbolCollectorVisitor;
/**
* A representation of a data query. A query consists of various parts,
@@ -446,4 +447,11 @@
public boolean returnsResultSet() {
return into == null;
}
+
+ public boolean hasAggregates() {
+ return getGroupBy() != null
+ || getHaving() != null
+ || !AggregateSymbolCollectorVisitor.getAggregates(getSelect(), false).isEmpty();
+ }
+
} // END CLASS
Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-12-14 21:34:03 UTC (rev 2779)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-12-14 21:40:44 UTC (rev 2780)
@@ -3049,4 +3049,8 @@
assertEquals("A.ret", resolvedQuery.getProjectedSymbols().get(0).getName());
}
+ @Test public void testOrderByAggregatesError() throws Exception {
+ helpResolveException("select count(*) from pm1.g1 order by e1");
+ }
+
}
\ No newline at end of file
More information about the teiid-commits
mailing list