diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index c2ed55c..219129a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -231,6 +231,7 @@ import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.mapred.InputFormat; import org.eigenbase.rel.AggregateCall; +import org.eigenbase.rel.AggregateRelBase; import org.eigenbase.rel.Aggregation; import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.InvalidRelException; @@ -245,6 +246,7 @@ import org.eigenbase.rel.metadata.ChainedRelMetadataProvider; import org.eigenbase.rel.metadata.RelMetadataProvider; import org.eigenbase.rel.rules.ConvertMultiJoinRule; +import org.eigenbase.rel.rules.FilterAggregateTransposeRule; import org.eigenbase.rel.rules.LoptOptimizeJoinRule; import org.eigenbase.rel.rules.MergeFilterRule; import org.eigenbase.rel.rules.PushFilterPastProjectRule; @@ -12296,7 +12298,11 @@ public RelNode applyPreCBOTransforms(RelNode basePlan, RelMetadataProvider mdPro HiveProjectRel.DEFAULT_PROJECT_FACTORY), new PushFilterPastSetOpRule( HiveFilterRel.DEFAULT_FILTER_FACTORY), new MergeFilterRule( HiveFilterRel.DEFAULT_FILTER_FACTORY), HivePushFilterPastJoinRule.JOIN, - HivePushFilterPastJoinRule.FILTER_ON_JOIN); + HivePushFilterPastJoinRule.FILTER_ON_JOIN, + new FilterAggregateTransposeRule( + FilterRelBase.class, + HiveFilterRel.DEFAULT_FILTER_FACTORY, + AggregateRelBase.class)); basePlan = hepPlan(basePlan, false, mdProvider, new TransitivePredicatesOnJoinRule( JoinRelBase.class, HiveFilterRel.DEFAULT_FILTER_FACTORY),