Rewrite Rule that pushes method applications on an aggregate down from a SPJ to a GBY node
![]() | ApplyRule (RelQueryNode *InNode, XxxBool &Success, RelQueryNode *&OutNode) applying this rule to a RelQueryNode |
![]() | findAggrMethodPushDown (XxxValueExpression **exp, XxxValueExpression **ancestor, int childNumber) Identifies all subexpressions of exp, that are method applications to constants or unknowns referencing childNumber |
![]() | pushDownAggrMethods (RelQueryNode *Parent, RelQueryNode *Child, XxxBool &Success) Application of the RelAggrFuncPushDown rewrite to a given SPJ operator and a given GBY operator child |
![]() | substituteColumnValues (XxxValueExpression* &exp, XxxValueExprList* TargetList) Substitutes all column references of an expression that is pushed down to the child |
Rewrite Rule that pushes method applications on an aggregate down from a SPJ to a GBY node. select x.a.imag() from ( select csum(y.f1) as a from C2 y group by y.f2) x; becomes: select x.XXX_GEN_ID_1 from ( select csum(y.f1) as a, csum(y.f1).imag() as XXX_GEN_ID_1 from .... ) For more examples, see the rewrite test suites.
class ValExprRefList
class GeneratedIDString
XxxErrCode pushDownAggrMethods(RelQueryNode *Parent, RelQueryNode *Child, XxxBool &Success)
XxxErrCode substituteColumnValues(XxxValueExpression* &exp, XxxValueExprList* TargetList)
ValExprRefList* findAggrMethodPushDown(XxxValueExpression **exp, XxxValueExpression **ancestor, int childNumber)
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de