diff options
| author | alexpaniman <[email protected]> | 2026-06-07 17:01:28 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-06-07 14:01:28 +0000 |
| commit | 4c78e92e6c9d99cd82d19d2ef380ed2bc7c33c6f (patch) | |
| tree | 5af1b56402201bf82d0ab1a8017675931784265c /contrib/tools/python3/Python/object_stack.c | |
| parent | c06e99f991237c8eece4fabd0fd7d3a5071d42a7 (diff) | |
[NEW RBO] Eliminate projections (#40533)
This reworks logical Map handling in the new RBO, along with the
supporting infrastructure needed to make that model work.
Main changes:
- Rework the logical Map operator model and remove logical projections.
- Rework plan conversion: ignore Project in KqpOpMap, then add renames
only where name collisions appear.
- Add reusable plan-property analyses that rules can request:
- RequireLiveness tracks which columns are needed after each operator.
This is used for logical cleanup and later physical narrowing.
- RequireConflicts tracks names that cannot be introduced across an edge
because they would conflict later downstream. This is needed for
diamond-like plans where the same lineage flows through multiple paths,
gets renamed or handled differently, and then comes back through a join.
- RequireNameAliases tracks equivalent column names, allowing rules to
choose better aliases and eliminate older or less useful names.
- Replace the old RenameStage logic with a rule-based map/alias stage:
- map cleanup: remove identity maps, prune dead map elements, convert
safe renames to appends;
- append pushing: push appends into maps, through unary operators,
aggregates, and joins;
- rename pushing: push renames into reads, map producers, aggregate
results, aggregate keys, join sides, and through transparent maps/unary
operators;
- alias/expression normalization: rewrite expressions to preferred aliases;
- liveness-based pruning: prune dead read columns, aggregate traits, and
logical outputs.
- Add liveness-based physical narrowing so reads, aggregates, and stages can
drop columns that are no longer needed while preserving dependencies such
as OLAP filter inputs.
- Rework ApplyCBO infrastructure so CBO can run cleanly on top of arbitrary
trees.
- Include related correctness fixes found while integrating the new model.
Diffstat (limited to 'contrib/tools/python3/Python/object_stack.c')
0 files changed, 0 insertions, 0 deletions
