Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Comments

Support storage-credentials in REST catalog LoadTableResult#3042

Open
rcjverhoef wants to merge 3 commits intoapache:main from
rcjverhoef:rcjverhoef/storage-creds-support
Open

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

Conversation

@rcjverhoef
Copy link

@rcjverhoef rcjverhoef commented Feb 13, 2026

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.

@rcjverhoef rcjverhoef force-pushed the rcjverhoef/storage-creds-support branch from 2864ab7 to b2cd702 Compare February 13, 2026 14:47
Fokko pushed a commit that referenced this pull request Feb 15, 2026
# Rationale for this change
While reviewing some open PRs #3041, #3042, I noticed CI kept failing on
the Python 3.13 job in the hive tests. Turns out [CPython 3.13.12
](https://docs.python.org/3.13/whatsnew/changelog.html#id3)was just
released and included a change
python/cpython#142651 which made
`Mock.call_count` thread-safe by deriving it from `len(call_args_list)`.
This broke our hive test, which was resetting the counter with
`mock.call_count = 0` directly. This switches to use reset_mock(), which
properly clears all the internal call tracking state.
## Are these changes tested?
`make test` passes
## Are there any user-facing changes?
no
rcjverhoef and others added 3 commits February 23, 2026 20:43
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 b3dab54 to bc9bacb Compare February 23, 2026 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /