Class PushDownDereferencesThroughTopN

java.lang.Object
io.trino.sql.planner.iterative.rule.PushDownDereferencesThroughTopN
All Implemented Interfaces:
Rule<ProjectNode>

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

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