QuakeWang opened a new issue, #218:
URL: https://github.com/apache/paimon-rust/issues/218

   ### Search before asking
   
   - [x] I searched in the 
[issues](https://github.com/apache/paimon-rust/issues) and found nothing 
similar.
   
   
   ### Please describe the bug 🐞
   
   In paimon-rust `TableScan::plan` currently resolves time-travel options by 
fixed precedence (`scan.tag-name` > `scan.snapshot-id` > 
`scan.timestamp-millis`) instead of rejecting conflicting selectors.
   
   This can produce silent wrong results. For example, if a table already has 
`scan.tag-name` in its options and DataFusion adds `scan.snapshot-id` through 
`FOR SYSTEM_TIME AS OF`, the query succeeds but reads the tagged snapshot 
instead of failing.
   
   `scan.snapshot-id` and `scan.timestamp-millis` are also parsed with lossy 
`parse().ok()` behavior today. Invalid numeric values are treated as unset and 
may fall back to another selector or the latest snapshot.
   
   Expected behavior:
     - only one of `scan.tag-name`, `scan.snapshot-id`, and 
`scan.timestamp-millis` may be set
     - invalid numeric option values should fail fast
     - behavior should align with Java `TimeTravelUtil`
   
   ### Solution
   
   Validate time-travel selectors before resolving the snapshot:
     - reject conflicting selectors with a clear error
     - parse numeric selectors strictly instead of silently ignoring invalid 
values
     - add tests for conflicting selectors and invalid numeric values
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!


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