Repository navigation
Support primary-key full-text results through scan and read - #1132
Merged
JingsongLi merged 1 commit intoOct 15, 2026
Merged
Conversation
leaves12138
approved these changes
Oct 15, 2026
leaves12138
left a comment
There was a problem hiding this comment.
Reviewed the scan/read split and compared the primary-key full-text path with the Java implementation, including snapshot pinning, source-file reconciliation, deletion vectors, physical-position materialization, score ordering, and the unified SearchResult API. Focused Rust full-text and primary-key tests pass, and all PR CI checks are green. No blocking issues found.
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.
Purpose
PyPaimon already searches primary-key full-text indexes and reads the resulting physical file positions. Native full-text scan/read and its Python binding currently expose only global row IDs, so this existing operation stays on the Python path.
Changes
FullTextScan->FullTextRead->SearchResult, following Java's snapshot-scoped scan/read andPrimaryKeyScoredResultdesign.search_resultmodules in both core and Python bindings. Full-text bindings now return the existingSearchResultclass; remove the separate global-onlyFullTextSearchResultwrapper and update the stub.execute_scored()now returns the commontable::SearchResult. The ranges-onlyexecute()continues to reject PK positions, which cannot be interpreted as global row IDs. No dependency is added.Verification
cargo fmt --all --checkcargo +1.98.0 clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warningscargo check -p paimon --lockedCompanion PyPaimon PR: apache/paimon#10586. It enables this route once the Rust change reaches main.