HappenLee opened a new pull request, #66148:
URL: https://github.com/apache/doris/pull/66148
### What problem does this PR solve?
Issue Number: None
Related PR: #65975
**Note: This PR is stacked on #65975 and currently contains its commit. Only
the top commit (`Match null-safe keys through the null bucket`) is new; the
diff will shrink to a single commit once #65975 merges.**
Problem Summary: The existing single-column null-safe join fix canonicalizes
the physical payload of null keys before raw key comparison. That approach
still depends on type-specific default-value rewriting and scans or mutates the
whole nullable key column on both build and probe sides.
The hash table already routes these rows to a dedicated null bucket.
Introduce explicit discard, null-safe equality, and null-aware bucket modes. A
null-safe probe now matches the dedicated bucket chain directly without
invoking key equality, while null-aware joins keep their separate ternary-logic
path. Remove column default-value replacement and string-specific key
canonicalization so correctness no longer depends on the nested payload of a
null row. Also drop the now-unused keep_null_key() accessor.
### Release note
None
### Check List (For Author)
- Test:
- Unit Test: Added
HashTableMethodTest.testJoinNullBucketMatchesWithoutKeyNormalization, compiled
with ASAN and -Werror (not executed locally).
- Build: Compiled the hash join build/probe objects and all affected
join template instances with ASAN and -Werror.
- Static Analysis: clang-format 16, clang-tidy, and git diff checks
passed for all modified files.
- Behavior changed: No - preserves the corrected single-column null-safe
equality result while changing the implementation to use null-bucket semantics.
- Does this need documentation: No
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]