Class PushDownDereferenceThroughFilter

  • All Implemented Interfaces:
    Rule<ProjectNode>

    public class PushDownDereferenceThroughFilter
    extends Object
    implements Rule<ProjectNode>
    Transforms:
      Project(D := f1(A.x), E := f2(B), G := f3(C))
          Filter(A.x.y = 5 AND B.m = 3)
              Source(A, B, C)
      
    to:
      Project(D := f1(expr), E := f2(B), G := f3(C))
          Filter(expr.y = 5 AND B.m = 3)
              Project(A, B, C, expr := A.x)
                  Source(A, B, C)
     

    Pushes down dereference projections in project node assignments and filter node predicate.