branch-4.0 [fix](match) Allow MATCH on aliased variant subcolumns#63804
Open
eldenmoon wants to merge 1 commit into
Open
branch-4.0 [fix](match) Allow MATCH on aliased variant subcolumns#63804eldenmoon wants to merge 1 commit into
eldenmoon wants to merge 1 commit into
Conversation
### What problem does this PR solve? Issue Number: None Related PR: apache#63772 Problem Summary: MATCH predicates fail for VARIANT dot subcolumn access such as cast(msg.trace_id as string), while the equivalent bracket access msg['trace_id'] works. Dot access can leave an Alias around the pruned subcolumn slot, and CheckMatchExpression rejected the aliased slot. ### Release note Fix MATCH predicates on VARIANT dot subcolumn access such as msg.trace_id so they are accepted like equivalent bracket subcolumn access. ### Check List (For Author) - Test: - Unit Test: ./run-fe-ut.sh --run org.apache.doris.nereids.rules.rewrite.CheckMatchExpressionTest - Unit Test: ./run-fe-ut.sh --run org.apache.doris.nereids.rules.rewrite.VariantPruningLogicTest#testMatchOnDotVariantSubColumnUsesSlotRefInScanPredicate - Behavior changed: Yes. MATCH validation now accepts alias/cast chains that resolve to a SlotReference, while still rejecting aliases over non-slot expressions. - Does this need documentation: No (cherry picked from commit d0cfb94) (cherry picked from commit 26abcfcdb9a04a3d7244ccad5d17c7bdd7a1dfa9)
Contributor
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
Member
Author
|
run buildall |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR cherry-picks the fix to allow MATCH predicates on aliased VARIANT subcolumn accesses in the Nereids rewrite validation path.
Changes:
- Updates
CheckMatchExpressionto unwrapCastandAliaschains before validating the left operand as aSlotReference. - Adds unit coverage for accepted alias/cast chains and rejected non-slot alias expressions.
- Adds an end-to-end VARIANT pruning test for
cast(msg.trace_id as string) match_phrase_prefix.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CheckMatchExpression.java |
Allows MATCH validation to resolve slots through cast/alias wrappers. |
fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/CheckMatchExpressionTest.java |
Adds focused tests for slot, alias, cast, and invalid expression handling. |
fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/VariantPruningLogicTest.java |
Adds integration coverage for MATCH on dot-accessed VARIANT subcolumns. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Contributor
FE UT Coverage ReportIncrement line coverage |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
cherry-pick #63772