Class PushDownDereferencesThroughWindow

  • All Implemented Interfaces:
    Rule<ProjectNode>

    public class PushDownDereferencesThroughWindow
    extends Object
    implements Rule<ProjectNode>
    Transforms:
      Project(G := f1(A.x), H := f2(B.x), J := f3(C.x), K := f4(D.x), L := f5(F))
          Window(orderBy = [B], partitionBy = [C], min_D := min(D))
              Source(A, B, C, D, E, F)
      
    to:
      Project(G := f1(symbol), H := f2(B.x), J := f3(C.x), K := f4(D.x), L := f5(F))
          Window(orderBy = [B], partitionBy = [C], min_D := min(D))
              Project(A, B, C, D, E, F, symbol := A.x)
                  Source(A, B, C, D, E, F)
     

    Pushes down dereference projections through Window. Excludes dereferences on symbols in ordering scheme and partitionBy to avoid data replication, since these symbols cannot be pruned.