Class PushDownDereferenceThroughUnnest

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

public class PushDownDereferenceThroughUnnest extends Object implements Rule<ProjectNode>
Transforms:
  Project(D := f1(A.x), E := f2(C), B_BIGINT)
      Unnest(replicate = [A, C], unnest = (B_ARRAY -> [B_BIGINT]))
          Source(A, B_ARAAY, C)
  
to:
  Project(D := f1(symbol), E := f2(C), B_BIGINT)
      Unnest(replicate = [A, C, symbol], unnest = (B_ARAAY -> [B_BIGINT]))
          Project(A, B_ARRAY, C, symbol := A.x)
              Source(A, B_ARAAY, C)
 

Pushes down dereference projections through Unnest. Currently, the pushdown is only supported for dereferences on replicate symbols.