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]
