diff --git a/plan/new_plan_test.go b/plan/new_plan_test.go index f312298464..79b97742c4 100644 --- a/plan/new_plan_test.go +++ b/plan/new_plan_test.go @@ -84,6 +84,11 @@ func (s *testPlanSuite) TestPredicatePushDown(c *C) { first string best string }{ + { + sql: "select count(*) from t a, t b where a.a = b.a", + first: "Join{DataScan(t)->DataScan(t)}->Selection->Aggr->Projection", + best: "Join{DataScan(t)->DataScan(t)}->Aggr->Projection", + }, { sql: "select a from (select a from t where d = 0) k where k.a = 5", first: "DataScan(t)->Selection->Projection->Selection->Projection", diff --git a/plan/predicate_push_down.go b/plan/predicate_push_down.go index d3cd56e4ac..74f862c68e 100644 --- a/plan/predicate_push_down.go +++ b/plan/predicate_push_down.go @@ -185,6 +185,7 @@ func (p *NewUnion) PredicatePushDown(predicates []expression.Expression) (ret [] // PredicatePushDown implements LogicalPlan PredicatePushDown interface. func (p *Aggregation) PredicatePushDown(predicates []expression.Expression) ([]expression.Expression, LogicalPlan, error) { // TODO: implement aggregation push down. + p.GetChildByIndex(0).(LogicalPlan).PredicatePushDown(nil) return predicates, p, nil }