Skip to content

Support storage-credentials in REST catalog LoadTableResult#3042

Open
rcjverhoef wants to merge 2 commits intoapache:mainfrom
rcjverhoef:rcjverhoef/storage-creds-support
Open

Support storage-credentials in REST catalog LoadTableResult#3042
rcjverhoef wants to merge 2 commits intoapache:mainfrom
rcjverhoef:rcjverhoef/storage-creds-support

Conversation

@rcjverhoef
Copy link

Rationale for this change

Vended credentials don't work with REST catalogs following latests specs. Per latest spec:

Clients must first check whether the respective credentials exist in the storage-credentials field before checking the config for credentials.

This is missing in pyiceberg. REST catalogs that don't expose a config field are hence not compatible.

Are these changes tested?

Yes, ran locally against my REST catalog implementation, added tests.

Are there any user-facing changes?

No API changes. REST catalogs that return vended credentials via storage-credentials will now work correctly.

The Iceberg REST spec's LoadTableResult includes a storage-credentials
field for vended credentials (prefix-scoped temporary STS tokens).
PyIceberg was only reading the config field and silently dropping
storage-credentials, so vended credentials never reached the FileIO.

Per the spec: "Clients must first check whether the respective
credentials exist in the storage-credentials field before checking
the config for credentials."

This adds:
- storage_credentials field to TableResponse
- Longest-prefix credential resolution (mirroring Java's S3FileIO)
- Merging resolved credentials into FileIO with highest precedence

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rcjverhoef rcjverhoef force-pushed the rcjverhoef/storage-creds-support branch from 2864ab7 to b2cd702 Compare February 13, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant