Class PruneEmptyRules

    • Field Detail

      • UNION_INSTANCE

        public static final RelOptRule UNION_INSTANCE
        Rule that removes empty children of a LogicalUnion.

        Examples:

        • Union(Rel, Empty, Rel2) becomes Union(Rel, Rel2)
        • Union(Rel, Empty, Empty) becomes Rel
        • Union(Empty, Empty) becomes Empty
      • MINUS_INSTANCE

        public static final RelOptRule MINUS_INSTANCE
        Rule that removes empty children of a LogicalMinus.

        Examples:

        • Minus(Rel, Empty, Rel2) becomes Minus(Rel, Rel2)
        • Minus(Empty, Rel) becomes Empty
      • INTERSECT_INSTANCE

        public static final RelOptRule INTERSECT_INSTANCE
        Rule that converts a LogicalIntersect to empty if any of its children are empty.

        Examples:

        • Intersect(Rel, Empty, Rel2) becomes Empty
        • Intersect(Empty, Rel) becomes Empty
      • PROJECT_INSTANCE

        public static final RelOptRule PROJECT_INSTANCE
        Rule that converts a LogicalProject to empty if its child is empty.

        Examples:

        • Project(Empty) becomes Empty
      • FILTER_INSTANCE

        public static final RelOptRule FILTER_INSTANCE
        Rule that converts a LogicalFilter to empty if its child is empty.

        Examples:

        • Filter(Empty) becomes Empty
      • SORT_INSTANCE

        public static final RelOptRule SORT_INSTANCE
        Rule that converts a Sort to empty if its child is empty.

        Examples:

        • Sort(Empty) becomes Empty
      • SORT_FETCH_ZERO_INSTANCE

        public static final RelOptRule SORT_FETCH_ZERO_INSTANCE
        Rule that converts a Sort to empty if it has LIMIT 0.

        Examples:

        • Sort(Empty) becomes Empty
      • AGGREGATE_INSTANCE

        public static final RelOptRule AGGREGATE_INSTANCE
        Rule that converts an Aggregate to empty if its child is empty.

        Examples:

        • Aggregate(key: [1, 3], Empty)Empty
        • Aggregate(key: [], Empty) is unchanged, because an aggregate without a GROUP BY key always returns 1 row, even over empty input
        See Also:
        AggregateValuesRule
      • JOIN_LEFT_INSTANCE

        public static final RelOptRule JOIN_LEFT_INSTANCE
        Rule that converts a Join to empty if its left child is empty.

        Examples:

        • Join(Empty, Scan(Dept), INNER) becomes Empty
      • JOIN_RIGHT_INSTANCE

        public static final RelOptRule JOIN_RIGHT_INSTANCE
        Rule that converts a Join to empty if its right child is empty.

        Examples:

        • Join(Scan(Emp), Empty, INNER) becomes Empty
    • Constructor Detail

      • PruneEmptyRules

        public PruneEmptyRules()
    • Method Detail

      • isEmpty

        private static boolean isEmpty​(RelNode node)