Merged upstreamCorrectnessMerged Jun 23, 2026
Fix DuckDB unparse for optimized join projections
Fixed Apache DataFusion SQL unparsing for optimized DuckDB plans so optimizer-introduced aliases and projected join inputs remain in scope after SQL regeneration.
apache/datafusion · #23002
Problem
Optimized logical plans could introduce common-expression aliases and qualified pass-through join projections. The SQL unparser could rebind optimizer aliases to a table alias or hide join-input aliases inside derived tables, producing invalid DuckDB SQL references such as "o"."__common_expr_1".
Approach
Changed alias rewriting to use DFSchema qualifier metadata, added a nested-join relation path for qualified pass-through join projections, and avoided derived-table wrapping when it would hide aliases needed by an outer join condition.
Impact and scope
- Improves DataFusion's ability to regenerate valid DuckDB SQL from optimized logical plans after common-subexpression and projection rewrites.
- Preserves alias scope across nested joins instead of emitting SQL that references columns hidden inside derived tables.
- Keeps existing table-scan and window-derived alias rebasing behavior while narrowing unqualified alias rewriting to the paths where it is intended.
Validation
- Added optimized_duckdb_unparse_preserves_derived_table_scope coverage for the original multi-join DuckDB unparse failure from GH-22961.
- Added a focused plan_to_sql regression for projected nested joins so pass-through projections stay in scope.
- PR validation covered cargo fmt, DataFusion SQL integration tests, unparser rewrite tests, core integration coverage, and clippy.