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]

Reply via email to