Class PushPredicateThroughProjectIntoWindow

  • All Implemented Interfaces:
    Rule<FilterNode>

    public class PushPredicateThroughProjectIntoWindow
    extends Object
    implements Rule<FilterNode>
    This rule pushes filter predicate concerning row number symbol into WindowNode by converting it into TopNRowNumberNode. It skips an identity projection separating FilterNode from WindowNode in the plan tree. TODO This rule should be removed as soon as WindowNode becomes capable of absorbing pruning projections (i.e. capable of pruning outputs).

    Transforms:

     - Filter (rowNumber <= 5 && a > 1)
         - Project (a, rowNumber)
             - Window (row_number() OVER (ORDER BY a))
                 - source (a, b)
     
    into:
     - Filter (a > 1)
         - Project (a, rowNumber)
             - TopNRowNumber (maxRowCountPerPartition = 5, order by a)
                 - source (a, b)