[VL][DO NOT MERGE] Test-only repro for nested FieldReference crash (verifies #12290)#12291
Draft
felipepessoto wants to merge 3 commits into
Draft
[VL][DO NOT MERGE] Test-only repro for nested FieldReference crash (verifies #12290)#12291felipepessoto wants to merge 3 commits into
felipepessoto wants to merge 3 commits into
Conversation
…erifies apache#12290) Contains ONLY the regression test from apache#12290, WITHOUT the SubstraitToVeloxExpr.cc fix, to confirm the test genuinely reproduces the crash. The cpp unit test job (ctest) is expected to FAIL here -- toVeloxExpr still dereferences a null RowType and the test process crashes with a SIGSEGV -- and passes in apache#12290 which includes the fix. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…crash Adds VeloxDeltaNestedFieldArraySuite: a Delta MERGE that updates a field nested under an array (`value.a` where `value` is `array<struct<a:int>>`). On an unfixed build this drives SubstraitVeloxExprConverter::toVeloxExpr to descend into the array, dereference the null RowType returned by asRowType(), and crash the forked JVM with a SIGSEGV -- the Spark-level companion to the existing SubstraitVeloxExprConverterTest.cc. This reaches the native converter (and the crash) under the Spark 4.0/4.1 -Pdelta CI jobs (Delta 4.x). With the fix in apache#12290 the converter throws a catchable VeloxUserError, Gluten falls back, and Delta raises the expected AnalysisException. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds an UPDATE-based test (`UPDATE t SET value.a = 2` where value is array<struct>) next to the existing MERGE test, to empirically check whether UPDATE reaches the native converter. Delta's PreprocessTableUpdate is an analyzer rule that raises the AnalysisException during analysis, so this is expected to fall back/throw without crashing -- but the velox CI (Delta 4.x) will confirm whether that holds, in contrast to MERGE. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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 changes are proposed in this pull request?
Verification PR — please do NOT merge. This contains only the regression test added in #12290, without the fix, to confirm the test is a genuine regression test.
ctest→velox_plan_conversion_test) is expected to fail —SubstraitVeloxExprConverter::toVeloxExprstill dereferences a nullRowTypewhen a field reference descends into an array, so the test process crashes with aSIGSEGV.Together these two PRs show the test fails without the fix and passes with it.
The actual fix is in #12290.
How was this patch tested?
By CI: this PR's
cpp-test-udf-testjob is expected to be red (crash), while #12290's is green.Was this patch authored or co-authored using generative AI tooling?
Generated-by: GitHub Copilot CLI (claude-opus-4.8)