[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