JingsongLi opened a new pull request, #1155:
URL: https://github.com/apache/paimon-rust/pull/1155

   ### Purpose
   
   PyPaimon already supports the batch startup modes `latest`, `latest-full` 
and `from-snapshot-full`, but Rust rejects them in 
`CoreOptions::validate_scan_options`. This prevents Native reads and Native 
MERGE table sources from serving those existing Python routes.
   
   ### Changes
   
   - Accept `latest` and `latest-full` for the latest complete batch snapshot, 
and `from-snapshot-full` with `scan.snapshot-id` for the selected complete 
batch snapshot.
   - Reuse existing snapshot resolution and readers. This follows current Java 
`AbstractDataTableScan.createStartingScanner`: batch LATEST/LATEST_FULL use 
FullStartingScanner; batch FROM_SNAPSHOT_FULL uses 
StaticFromSnapshotStartingScanner.
   - Validate companion options against the selected mode before planning. 
Preserve the Format Table rejection: its scanner has no Paimon historical 
snapshot semantics.
   - Keep stream `latest` and `from-snapshot-full` unsupported, rather than 
applying batch behavior to continuous startup. `latest-full` retains the normal 
full initial stream plan.
   - Cover complete snapshot reads, projection/filtering, empty tables, all 
existing PK merge-engine visibility rules, MERGE source snapshot selection and 
PK vector snapshot planning. No public API, new dependency or metadata feature 
is added.
   
   ### Validation
   
   - Reproduced the old rejection with a failing `latest` regression test.
   - `cargo +1.98.0 test -p paimon --lib --no-default-features --features 
storage-memory,storage-fs`: **4210 passed, 6 ignored**.
   - Final `cargo +1.98.0 test -p paimon --lib full_startup_modes` with default 
features: **7 passed**.
   - `cargo +1.98.0 clippy -p paimon --lib --tests -- -D warnings`: passed.
   - `cargo +1.98.0 fmt --all --check` and `git diff --check`: passed.
   - Independent Java/option/snapshot/stream-boundary review completed with no 
remaining concrete finding.
   
   The companion PyPaimon PR keeps Native CI on Rust `main` and will depend on 
this PR merging first.
   


-- 
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