Replaces the expression of CurrentDatabase with the current database name.
Optimizes expressions by replacing according to CodeGen configuration.
Replaces (value, seq[Literal]) with optimized version(value, HashSet[Literal]) which is much faster
Abstract class all optimizers should inherit of, contains the standard batches (extending Optimizers can override this.
Simplifies boolean expressions: 1.
Combines two adjacent Project operators into one and perform alias substitution, merging the expressions into one single expression.
Combines adjacent Repartition operators by keeping only the last one.
Attempts to eliminate the reading of unneeded columns from the query plan.
Combines two adjacent Filter operators into one, merging the non-redundant conditions into one conjunctive predicate.
Combines two adjacent Limit operators into one, merging the expressions into one single expression.
Combines all adjacent Union operators into a single Union.
Computes the current date and time to make sure we return the same result in a single query.
Replaces Expressions that can be statically evaluated with equivalent Literal values.
Converts local operations (i.
Speeds up aggregates on fixed-precision decimals by executing them on unscaled Long values.
Elimination of outer joins, if the predicates can restrict the result sets so that all null-supplying rows are eliminated
Removes cases where we are unnecessarily going between the object and serialized (InternalRow) representation of data item.
Removes no-op SortOrder from Sort
Typed Filter is by default surrounded by a DeserializeToObject beneath it and a SerializeFromObject above it.
Propagate foldable expressions: Replace attributes with aliases of the original foldable expressions if possible.
Generate a list of additional filters from an operator's existing constraint but remove those that are either already part of the operator's condition or are part of the operator's child constraints.
Simplifies LIKE expressions that do not need full regular expressions to evaluate the condition.
Pushes down LocalLimit beneath UNION ALL and beneath the streamed inputs of outer joins.
Replaces Expressions that can be statically evaluated with equivalent Literal values.
Removes filters that can be evaluated trivially.
Pushes Filter operators through many operators iff: 1) the operator is deterministic 2) the predicate is deterministic and the operator will not change any of rows.
Pushes down Filter operators where the condition
can be
evaluated using only the attributes of the left or right side of a join.
Pushes projects down beneath Sample to enable column pruning with sampling.
Pushes certain operations to both sides of a Union operator.
Removes the Project only conducting Alias of its child node.
Removes nodes that are not necessary.
Removes literals from group expressions in Aggregate, as they have no effect to the result but only makes the grouping key bigger.
Removes repetition from group expressions in Aggregate, as they have no effect to the result but only makes the grouping key bigger.
Reorder the joins and push all the conditions into join, so that the bottom ones have at least one condition.
Replaces logical Distinct operator with an Aggregate operator.
Replaces logical Except operator with a left-anti Join operator.
Finds all RuntimeReplaceable expressions and replace them with the expressions that can be evaluated.
Replaces logical Intersect operator with a left-semi Join operator.
This rule rewrites correlated ScalarSubquery expressions into LEFT OUTER joins.
This rule rewrites predicate sub-queries into left semi/anti joins.
An optimizer used in test code.
Simplifies binary comparisons with semantically-equal expressions: 1) Replace '<=>' with 'true' literal.
Removes the inner case conversion expressions that are unnecessary because the inner conversion is overwritten by the outer one.
Removes Casts that are unnecessary because the input is already the correct type.
Simplifies conditional expressions (if / case).