objectPushGB extends Rule[LogicalPlan] with PredicateHelper
GB([Proj](Join([Proj]))) => Proj(Join(GB))
PushGB
Push
1.Join is Cross Product)
1.1. Get Push Info
1.1.1. Get Push Candidate Info
1.1.1.1 Join has one side that has aggregate without
any cardinality augmenters above (Non push side)
1.1.1.2 Join's other side has no agg or there is
a cardinality augmenter above it (Push Side)
1.1.2. Max cardinality of Non Push Side is 1 and
all of GB/AggFn keys are deterministic
1.1.3. All of agg exprs come from push side
1.1.4.None of GB exprs include attributes from both sides &
there exists GB exprs from push side
1.1.5. If pushside child is project then Translate AggFns, GB Keys below project
2. Setup pipeline
Linear Supertypes
PredicateHelper, Rule[LogicalPlan], Logging, AnyRef, Any