Class PushDownDereferencesThroughTopNRanking

  • All Implemented Interfaces:
    Rule<ProjectNode>

    public class PushDownDereferencesThroughTopNRanking
    extends Object
    implements Rule<ProjectNode>
    Transforms:
      Project(E := f1(A.x), G := f2(B.x), H := f3(C.x), J := f4(D))
          TopNRanking(partitionBy = [B], orderBy = [C])
              Source(A, B, C, D)
      
    to:
      Project(E := f1(symbol), G := f2(B.x), H := f3(C.x), J := f4(D))
          TopNRanking(partitionBy = [B], orderBy = [C])
              Project(A, B, C, D, symbol := A.x)
                  Source(A, B, C, D)
     

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