Author: shawkins
Date: 2011-07-22 06:29:03 -0400 (Fri, 22 Jul 2011)
New Revision: 3324
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
branches/7.4.x/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
Log:
TEIID-1645 re-enabling agg rewrite optimization
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
---
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-07-21
19:28:44 UTC (rev 3323)
+++
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-07-22
10:29:03 UTC (rev 3324)
@@ -240,6 +240,7 @@
* @throws QueryValidatorException
*/
private Command rewriteCommand(Command command, boolean removeOrderBy) throws
TeiidComponentException, TeiidProcessingException{
+ boolean oldRewriteAggs = rewriteAggs;
QueryMetadataInterface oldMetadata = metadata;
CreateUpdateProcedureCommand oldProcCommand = procCommand;
@@ -299,6 +300,7 @@
break;
}
+ this.rewriteAggs = oldRewriteAggs;
this.metadata = oldMetadata;
this.procCommand = oldProcCommand;
return command;
@@ -764,6 +766,7 @@
*/
private Query rewriteGroupBy(Query query) throws TeiidComponentException,
TeiidProcessingException{
if (query.getGroupBy() == null) {
+ rewriteAggs = false;
return query;
}
if (isDistinctWithGroupBy(query)) {
@@ -1664,6 +1667,7 @@
private BigDecimal BIG_DECIMAL_ZERO = new BigDecimal("0"); //$NON-NLS-1$
private Short SHORT_ZERO = new Short((short)0);
private Byte BYTE_ZERO = new Byte((byte)0);
+ private boolean rewriteAggs = true;
/**
* @param criteria
@@ -2358,6 +2362,9 @@
expression.setAggregateFunction(Type.MAX);
}
}
+ if (rewriteAggs && expression.getExpression() != null &&
EvaluatableVisitor.willBecomeConstant(expression.getExpression())) {
+ return expression.getExpression();
+ }
return expression;
}
Modified:
branches/7.4.x/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
===================================================================
---
branches/7.4.x/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java 2011-07-21
19:28:44 UTC (rev 3323)
+++
branches/7.4.x/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java 2011-07-22
10:29:03 UTC (rev 3324)
@@ -2460,4 +2460,10 @@
@Test public void testRewriteNestedConvert2() throws Exception {
helpTestRewriteExpression("cast(cast(pm1.g1.e3 as string) as clob)",
"convert(convert(pm1.g1.e3, string), clob)",
RealMetadataFactory.example1Cached()); //$NON-NLS-1$ //$NON-NLS-2$
}
+
+ @Test public void testRewriteConstantAgg() throws Exception {
+ helpTestRewriteCommand("select max(1) from pm1.g1 group by e1",
"SELECT 1 FROM pm1.g1 GROUP BY e1");
+ }
+
+
}
Show replies by date