Skip to content

[Backport] fix: clustered by virtual columns that depended on virtual columns now correctly preserve these dependencies#19279

Open
clintropolis wants to merge 1 commit intoapache:37.0.0from
clintropolis:backport-19262-to-37.0.0
Open

[Backport] fix: clustered by virtual columns that depended on virtual columns now correctly preserve these dependencies#19279
clintropolis wants to merge 1 commit intoapache:37.0.0from
clintropolis:backport-19262-to-37.0.0

Conversation

@clintropolis
Copy link
Copy Markdown
Member

Backport of #19262 to 37.0.0.

…w correctly preserve these dependencies (apache#19262)

changes:
* adds `addRequiredVirtualColumns` method to `SegmentGenerationStageSpec` which resolves transitive virtual column dependencies for virtual columns used by clustering, fixing a bug where these dependent virtual columns would be lost in the shard spec and compaction state
* adds `supportsRequiredRewrite` and `rewriteRequiredColumns` to `VirtualColumn` allowing a virtual column to rewrite its input references to equivalent names
* adds `Expr.rewriteBindings` to rewrite identifier bindings in an `Expr` tree
* `VirtualColumns.findEquivalent` is enhanced to transitively resolve dependent virtual columns across naming contexts before checking equivalence, enabling detection that e.g. `lower("v1")` ≡ `lower("v0")` when v0 and v1 are equivalent virtual columns
* `FilterSegmentPruner` updated to use transitive equivalence when matching shard virtual columns to query virtual columns (with Optional-based caching to correctly handle nulls)
* `Projections.matchQueryVirtualColumn` updated similarly
* intern range shardspec dimension strings and virtual columns
@clintropolis clintropolis added this to the 37.0.0 milestone Apr 8, 2026
@github-actions github-actions bot added Area - Batch Ingestion Backport Area - Segment Format and Ser/De Area - MSQ For multi stage queries - https://github.com/apache/druid/issues/12262 labels Apr 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area - Batch Ingestion Area - MSQ For multi stage queries - https://github.com/apache/druid/issues/12262 Area - Segment Format and Ser/De Backport

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant