Class UnnestDecorrelateRule

All Implemented Interfaces:
TransformationRule

@Enclosing public class UnnestDecorrelateRule extends RelRule<UnnestDecorrelateRule.Config> implements TransformationRule
Convert representations of a projected Unnest that use LogicalCorrelate into simple Unnest representations.

Original plan: LogicalProject // only uses rightmost columns of correlate, outerProject LogicalCorrelate(correlation=[$cor0], joinType=[inner], requiredColumns=[{...}]) LeftSubquery LogicalProject (optional; innerProject) Uncollect LogicalProject(COL=[$cor0.ARRAY]) LogicalValues(tuples=[[{ 0 }]])

is converted to

Resulting plan: LogicalProject LogicalProject (optional) Uncollect LogicalProject LeftSubquery