singhpk234 opened a new pull request, #18015: URL: https://github.com/apache/iceberg/pull/18015
When a table or view is loaded through a view, the catalog can't currently tell. This sends the chain of referencing views to the REST server as the spec'd referenced-by query parameter, and forwards it to credential providers, so a server can scope authorization and credentials to how the data was reached. Builds on the LoadContext API from #15895. No spec changes needed — referenced-by is already defined. Flow: LoadContext.referencedBy([outer, …, inner]) → RESTCatalog → RESTSessionCatalog → referenced-by on the load request → the table's FileIO config → /v1/credentials. Notes for reviewers - The whole chain is a single referenced-by key, with entries comma-separated and ordered outermost first, per the spec. A comma inside a view name is encoded as %2C so the delimiter stays unambiguous. - The value is appended verbatim in HTTPRequest.requestUri instead of going through URIBuilder. Entries are percent-encoded and the delimiter is literal, and addParameter would double-encode % (%1F → %251F). Nothing on the classpath produces this format. - Entries are encoded like the parent parameter, using PercentCodec. The namespace separator is used as configured. - The ETag cache is untouched. Servers already owe distinct ETags for responses that differ by query parameter, so this needs no client-side handling. - Credential providers read the chain from rest-referenced-by, an internal property mirroring rest-scan-plan-id. It's added inside tableFileIO, so the server's config still decides whether the catalog FileIO can be reused. ----------------- -- 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]
