test(spark): characterize VortexScanBuilder predicate pushdown splitting#8857
Open
jackylee-ch wants to merge 1 commit into
Open
test(spark): characterize VortexScanBuilder predicate pushdown splitting#8857jackylee-ch wants to merge 1 commit into
jackylee-ch wants to merge 1 commit into
Conversation
Contributor
|
These are good checks. I realise I have implemented some of this for iceberg but haven't done similar thing here |
robert3005
approved these changes
Jul 20, 2026
Merging this PR will improve performance by 11.17%
Performance Changes
Tip Curious why this is faster? Comment Comparing Footnotes
|
Signed-off-by: jackylee <qcsd2011@gmail.com>
jackylee-ch
force-pushed
the
spark-scan-builder-tests
branch
from
July 21, 2026 10:32
0f90592 to
a12bf2a
Compare
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.
Rationale for this change
VortexScanBuilder(java/vortex-spark/src/main/java/dev/vortex/spark/read/VortexScanBuilder.java)decides which Spark V2 predicates are pushed into the Vortex scan and which are returned
to Spark for post-scan evaluation, and it currently has no direct test coverage. The
split logic encodes correctness-critical rules: predicates referencing partition columns
must not be pushed (partition values live in directory paths, not inside the Vortex
files), untranslatable operators must be returned to Spark, and
pushedPredicates()must not expose internal state. A regression in any of these silently drops filters or
scans the wrong data. This continues the characterization-test series from #8770,
#8782, #8783, and #8850.
What changes are included in this PR?
A new
VortexScanBuilderTestwith 9 tests covering:pushPredicateson data columns: a supported predicate on a data column is pushedand removed from the post-scan set; predicates referencing columns absent from the
read schema, or using operators
SparkPredicateToVortexExpressioncannot translate(e.g. a raw
LIKE), are returned to Spark and never recorded as pushed.pushPredicateson partition columns: a predicate on an identity-partitionedcolumn is left to Spark; mixed batches split correctly (data-column predicate pushed,
partition-column predicate post-scan); an
Andspanning a data column and a partitioncolumn is kept whole on the Spark side.
pushedPredicates: empty before any push, and returns a defensive copy so callerscannot mutate the builder's internal state.
build: fails fast withIllegalStateExceptionwhen no paths were added.This is a test-only change; no production code is modified. All tests pass locally
on both matrix legs (
:vortex-spark_2.12:testand:vortex-spark_2.13:testwith--tests 'dev.vortex.spark.read.VortexScanBuilderTest').What APIs are changed? Are there any user-facing changes?
None. No production code or public API is touched.