Class PushDownDereferencesThroughTopNRanking

java.lang.Object
io.trino.sql.planner.iterative.rule.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.