EnforceDistribution optimizer rule inspects the physical plan with respect
to distribution requirements and adds RepartitionExecs to satisfy them
when necessary. If increasing parallelism is beneficial (and also desirable
according to the configuration), this rule increases partition counts in
the physical plan.
The JoinSelection rule tries to modify a given plan so that it can
accommodate infinite sources and utilize statistical information (if there
is any) to obtain more performant plans. To achieve the first goal, it
tries to transform a non-runnable query (with the given infinite sources)
into a runnable query by replacing pipeline-breaking join operations with
pipeline-friendly ones. To achieve the second goal, it selects the proper
PartitionMode and the build side using the available statistics for hash joins.
This file implements the ProjectionPushdown physical optimization rule.
The function remove_unnecessary_projections tries to push down all
projections one by one if the operator below is amenable to this. If a
projection reaches a source, it can even disappear from the plan entirely.
The SanityCheckPlan rule ensures that a given plan can
accommodate its infinite sources, if there are any. It will reject
non-runnable query plans that use pipeline-breaking operators on
infinite input(s). In addition, it will check if all order and
distribution requirements of a plan are satisfied by its children.