Fix full join filtering with duplicate equality keys - #24146
Conversation
|
No actionable comments were generated in the recent review. π βΉοΈ Recent review infoβοΈ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: π Files selected for processing (7)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. π SummarySummary by CodeRabbit
WalkthroughChangesFULL join filtering
Priority: β Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix Β· Severity of issue fixed: Medium Suggested reviewers: Merge Risk: βͺ Minimal Β· up to Empty candidate maps intentionally remain empty across filtering and sizing paths; no actionable merge risk remains. π₯ Pre-merge checks | β 3 | β 2β Failed checks (2 warnings)
β Passed checks (3 passed)
Full details: Linked Issues checkExplanation The implementation correctly tracks successful matches by row identity, preserves passing pairs, reconstructs unmatched rows, and routes AST and JIT FULL_JOIN filtering through the shared helper. The new tests cover duplicate keys, nulls, empty tables, sizing, ownership, and streams. However, Full details: Docstring CoverageExplanation Docstring coverage is 4.55% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 22 functions across 6 files. (1 skipped: 1 unsupported.)
β¨ Finishing Touches π‘ 1π οΈ Fix failing CI checks π‘
π§ͺ Generate unit tests (beta)
Comment |
Description
FULL join filtering currently splits each rejected candidate independently. With duplicate equality keys, this can emit an unmatched row even when that row has another successful match, or emit the same unmatched row multiple times.
Track successful matches by row identity, preserve every passing pair, and emit exactly one unmatched entry per row with no passing match. AST and JIT filtering share the corrected materialization, and output-size calculation and precomputed-size handling follow the same semantics. Add native regression and stream coverage, and clarify the input-map contract.
Closes #24145. This native fix is needed by the Java FULL filtering coverage in #24097.
Validation
Checklist