Skip to content

[AURON #2419] RowNullChecker may mis-detect null join keys for complex Arrow row types#2424

Open
weimingdiit wants to merge 1 commit into
apache:masterfrom
weimingdiit:fix/row-null-checker-complex-keys
Open

[AURON #2419] RowNullChecker may mis-detect null join keys for complex Arrow row types#2424
weimingdiit wants to merge 1 commit into
apache:masterfrom
weimingdiit:fix/row-null-checker-complex-keys

Conversation

@weimingdiit

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Closes #2419

Rationale for this change
Auron's sort merge join uses encoded Arrow rows for join key comparison and uses RowNullChecker to skip rows with null join keys.

RowNullChecker previously inspected Arrow row bytes manually. This is fragile for complex row encodings such as struct, list, and dictionary, because their layout is controlled by Arrow RowConverter and should not be interpreted with fixed or estimated field lengths.

This can cause RowNullChecker to mis-detect null join keys for complex key types.

What changes are included in this PR?
Adds an Arrow RowConverter to RowNullChecker.
Updates RowNullChecker's has_nulls path to decode Rows through Arrow RowConverter before building the null-key mask.
Preserves conservative join key null semantics:
top-level null key values are treated as null join keys
nested null fields or elements inside non-null struct/list keys do not make the key null
Keeps the existing RowNullChecker public method signatures unchanged.
Keeps the existing byte-level helper path unchanged.
Adds unit coverage for complex struct, list, and dictionary key rows.

Are there any user-facing changes?
No user-facing API changes.

How was this patch tested?
UT.

Was this patch authored or co-authored using generative AI tooling?

  • Yes
  • No
    Generated-by: OpenAI Codex (GPT-5)

…complex Arrow row types

Signed-off-by: weimingdiit <weimingdiit@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RowNullChecker may mis-detect null join keys for complex Arrow row types

1 participant