JingsongLi opened a new pull request, #1098: URL: https://github.com/apache/paimon-rust/pull/1098
## What changes - Let `Table::copy_with_pinned_snapshot` capture complete snapshot metadata or an explicitly empty read view, preserving the caller-resolved read schema. - Reuse that state in snapshot resolution, vector prepared filters, manifest/index/partition metadata and DataFusion partition count execution. - Normalize the supported point/incremental selectors when pinning; invalidate changed read selections and prevent timestamp windows from bypassing the stale-schema guard. - Plan primary-key vector data and index files from one complete snapshot, without reopening expired snapshot JSON. Validate the original scan configuration first and follow Java's rejection of nonempty incremental PK vector plans. - Add a thin Python binding to pass Java-format Snapshot JSON or `None` into the core Table. ## Why PyPaimon already captures a snapshot before multimodal search and lookup. Its Native bridge currently transports only schema/options, so a captured empty view follows later commits and retained-tag searches can reopen an expired snapshot file. The existing Rust cache cannot distinguish an unresolved view from an explicitly empty one. The implementation reuses the existing Table cache and resolution path. Snapshot metadata is shared across table copies. Java `PrimaryKeyVectorScan` and search read plans provide the reference for reusing one complete snapshot across data/index/read stages. ## Tests - Before the fix: all 8 REST empty-view/retained-tag Native regression cases failed. - 260 passing Rust tests across snapshot, PK vector, DE vector, batch vector, hybrid, full-text and MERGE suites. - 16 passing DataFusion tests: metadata empty-view regression and all partition count pushdown tests. - 154 passing Python tests with all five Native CI flags, including captured read views, hybrid, the entire Native MERGE suite and update/write/commit smoke tests. Also 110 passing existing Native vector/search-snapshot tests. The wider search run passed its full-text cases and caught an internal MERGE scan-mode rewrite, fixed by using the common pinning method and verified by the MERGE reruns. - Rust format and Clippy on 1.98.0; Python binding build. The paired Python PR will enable these existing Python read views through the common Native Table bridge and retain CI's dependency on upstream Rust `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]
