Repository navigation
Conversation
feiniaofeiafei
requested review from
924060929,
englefly,
morrySnow and
starocean999
as code owners
September 8, 2026 08:59
Contributor
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
Collaborator
Author
|
run buildall |
Contributor
FE Regression Coverage ReportIncrement line coverage |
Problem Summary: Predicate inference unwraps narrowing DATETIMEV2 casts and incorrectly treats distinct raw join keys as equal. An IN predicate on one side can then filter valid matches on the other side. Require injective DATETIMEV2 casts before unwrapping, including nested casts, while preserving same-scale and widening inference. Add one unit test and a regression case comparing inference enabled and disabled. Fix missing join results caused by predicate inference across narrowing DATETIMEV2 casts. - Test: Checkstyle passed; remote unit and regression validation pending - Behavior changed: Yes, preserve valid matches for narrowing datetime casts - Does this need documentation: No
### What problem does this PR solve?
Problem Summary: Record generated regression output proving that narrowing
DATETIMEV2 join casts preserve matching rows with predicate inference both
enabled and disabled. Match unit-test literal precision to the source slots
so expression comparisons test inference without unrelated type coercion.
### Release note
None
### Check List (For Author)
- Test: Unit Test / Regression test / Manual test
- Checkstyle passed
- DISABLE_BUILD_UI=ON ./build.sh --fe passed on dev
- ./run-fe-ut.sh --run org.apache.doris.nereids.rules.rewrite.InferPredicateByReplaceTest: 11 passed
- infer_datetimev2_cast_precision regression suite: 1 passed
- Old FE returned 0 rows with inference enabled; updated FE returns the expected match
- EXPLAIN confirms the right scan has no incorrect raw IN predicate
- Behavior changed: No, test-only changes
- Does this need documentation: No
feiniaofeiafei
force-pushed
the
codex/fix-datetimev2-infer-precision
branch
from
September 10, 2026 01:58
846f879 to
db0ed53
Compare
Collaborator
Author
|
run buildall |
Contributor
FE UT Coverage ReportIncrement line coverage |
Collaborator
Author
|
run performance |
Contributor
TPC-H: Total hot run time: 16710 ms |
Contributor
TPC-DS: Total hot run time: 81523 ms |
Contributor
ClickBench: Total hot run time: 14.54 s |
924060929
approved these changes
Sep 11, 2026
yiguolei
pushed a commit
that referenced
this pull request
Nov 3, 2026
…dicate inference #67653 (#70015) picked from master #67653 Co-authored-by: feiniaofeiafei <[email protected]>
morrySnow
pushed a commit
to morrySnow/incubator-doris
that referenced
this pull request
Nov 3, 2026
### What problem does this PR solve? Related PR: apache#67919 Problem Summary: 不等式关系被误记为等式,且等值替换跨越不保值的类型或表示 Backport adaptation: Preserve existing index-dependent MATCH/multi_match/SEARCH exclusions and date-arithmetic pushdown protection while adding non-movable expression guards and injective cast checks. Keep all branch tests alongside the upstream test additions. Include only the common ExpressionTrait non-movable/volatile predicate helper from prerequisite apache#67067; retain its type-bitset fast path and conditional volatile semantics. Rebase adjustment: Rebase onto branch-4.2 after apache#67653 merged. Keep the generalized isInjectiveCastTo check, which includes DATETIMEV2 precision-loss rejection, and preserve the merged precision regression tests. ### Release note 不等式关系被误记为等式,且等值替换跨越不保值的类型或表示 ### Check List (For Author) - Test: Unit Test — org.apache.doris.nereids.rules.rewrite.InferPredicateByReplaceTest,org.apache.doris.nereids.rules.rewrite.UnequalPredicateInferTest,org.apache.doris.nereids.types.DataTypeTest,org.apache.doris.nereids.util.ExpressionUtilsTraversalTest,org.apache.doris.nereids.util.ExpressionUtilsTest; FE Checkstyle passed. Cluster regression tests were not run for this commit. - Behavior changed: Yes, fixes the behavior described above. - Does this need documentation: No (cherry picked from commit 5f107ef)
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.
What problem does this PR solve?
Related PR: #41731
Problem Summary:
Predicate inference unwraps narrowing DATETIMEV2 casts and incorrectly treats distinct raw join keys as equal. An IN predicate on one side can then filter valid matches on the other side. Require injective DATETIMEV2 casts before unwrapping, including nested casts, while preserving same-scale and widening inference. Add one unit test and a regression case comparing inference enabled and disabled.
Fix missing join results caused by predicate inference across narrowing DATETIMEV2 casts.
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)