JingsongLi opened a new pull request, #1132: URL: https://github.com/apache/paimon-rust/pull/1132
### 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 - Support PK full-text queries through `FullTextScan` -> `FullTextRead` -> `SearchResult`, following Java's snapshot-scoped scan/read and `PrimaryKeyScoredResult` design. - Reuse the existing vector/full-text shared result: global row IDs for DE, file positions for PK, original scores, serialized selected splits and projected materialization after search. - Keep the PK FAST-only restriction, reject non-partition row filters and global row-ID allowlists, and validate plan context even for empty plans. - Reuse the shared materializer from the existing direct PK full-text read, removing its duplicate materialization logic. - Move shared result code into `search_result` modules in both core and Python bindings. Full-text bindings now return the existing `SearchResult` class; remove the separate global-only `FullTextSearchResult` wrapper and update the stub. `execute_scored()` now returns the common `table::SearchResult`. The ranges-only `execute()` continues to reject PK positions, which cannot be interpreted as global row IDs. No dependency is added. ### Verification - Core tests passed: full-text 116, shared results 21, vector builders 28, hybrid search 20 (some groups overlap). - Python binding tests: 8 passed; extension rebuilt locally. - PyPaimon Native regression: 422 cases passed across full-text, PK full-text, vector and hybrid search; original Python tests: 59 passed. - Java golden archives verify historical snapshots, original BM25 scores and physical positions. Tests also cover delayed/projected reads, zero projections, plan reuse, context mismatch, FAST-only errors and no retry after Native failures. - Removing the data Parquet files temporarily still permits searching their indexes; materialization alone fails on the missing files. - `cargo fmt --all --check` - `cargo +1.98.0 clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warnings` - Default-feature `cargo check -p paimon --locked` The companion PyPaimon change enables this route once the Rust change reaches main. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
