yyanyy opened a new pull request, #57582:
URL: https://github.com/apache/spark/pull/57582

   ### What changes were proposed in this pull request?
   
   This is a follow-up to #56044 (which passed all options while loading 
changelogs). It does the same for table reads by adding 
`TableCatalog.loadTable(Identifier, TableContext, CaseInsensitiveStringMap)`, 
where `TableContext` carries the parsed, Spark-recognized parameters (time 
travel, write privileges) and the `CaseInsensitiveStringMap` carries all raw 
user options.
   
   - New public connector types `TableContext` and `TimeTravel` (a clean sealed 
interface with `Version`/`Timestamp` records), mirroring how #56044 introduced 
`ChangelogContext`/`ChangelogRange` rather than leaking the catalyst-internal 
`TimeTravelSpec`.
   - The new `loadTable` overload has a default implementation that delegates 
to the existing `loadTable` overloads based on `TableContext`, so existing 
connectors keep working unchanged.
   - `CatalogV2Util.getTable`/`loadTable` now build a `TableContext` from the 
catalyst `TimeTravelSpec` + write-privileges string and forward the user 
options, making the Java default the single dispatch site.
   - Options are threaded through the read paths in `RelationResolution` and 
`DataSourceV2Utils`.
   
   Potential follow-up (intentionally out of scope here): the `RelationCatalog` 
single-RPC `loadRelation(Identifier)` path is not updated to forward options. 
It applies only to catalogs that expose both tables and views, and fires only 
when there is no time travel or write privileges; closing that gap cleanly 
would add a `loadRelation(Identifier, CaseInsensitiveStringMap)` overload and 
is better done as a separate change.
   
   ### Why are the changes needed?
   
   To make the API usable in connectors like Iceberg and Delta, which need the 
user options while reading a table. The functionality hasn't been released yet.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No.
   
   ### How was this patch tested?
   
   New tests in `CatalogV2UtilSuite` (the default-dispatch mapping for each 
`TableContext` shape, and the time-travel/write-privileges mutual-exclusion 
invariant) and `DataSourceV2OptionSuite` (end-to-end option forwarding via the 
DataFrame API, SQL, streaming, time travel, and the write path). Existing 
`SupportsCatalogOptionsSuite`, `ChangelogResolutionSuite`, 
`ChangelogEndToEndSuite`, and the DataSourceV2 SQL/DataFrame suites pass.
   
   
   ### Was this patch authored or co-authored using generative AI tooling?
   Generated-by: Claude code Opus 4.8
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to