Skip to content

Bump iceberg-cpp to upstream main - #25

Draft
smaheshwar-pltr wants to merge 7 commits into
mainfrom
sm/bump-iceberg-cpp
Draft

smaheshwar-pltr wants to merge 7 commits into
mainfrom
sm/bump-iceberg-cpp

Conversation

@smaheshwar-pltr

@smaheshwar-pltr smaheshwar-pltr commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Moves the iceberg-cpp pin to a new fork branch, duckdb-proto-iceberg: upstream main plus apache/iceberg-cpp#963 and apache/iceberg-cpp#964, the two open upstream PRs we still need, and the <cstdint> fix from smaheshwar-pltr/iceberg-cpp#24. Part of #1.

  • Upstream's RestCatalog is session-aware, so the extension uses it through AsCatalog(), and the S3 region property is now client.region.
  • The old fork sent X-Iceberg-Access-Delegation: vended-credentials itself; the extension now sets it via a header. property, since some catalogs only vend when asked. Upstream's new scan metrics reports to the catalog are turned off.
  • Vended storage credentials now reach DuckDB. Upstream keeps them apart from the FileIO properties, so the scoped S3 secret overlays the matching one, chosen the way iceberg-cpp chooses it. S3 booleans and the SSL setting also follow iceberg-cpp's new parsing.
  • The newer Arrow and AWS SDK that iceberg-cpp bundles sometimes crashed at exit, when Arrow shut the SDK down while a CRT thread still logged through it. The extension now defaults ARROW_S3_LOG_LEVEL to off unless the user set it, so the SDK installs no logger.

🤖 Generated with Claude Code

smaheshwar-pltr and others added 2 commits September 26, 2026 05:44
Pin a new fork branch, duckdb-proto-iceberg: upstream main plus the two open
upstream pull requests the extension needs (FileIO properties and the bundled
S3 link dependencies) and a missing include that breaks MinGW builds. Upstream
now covers the fork's other changes, credential vending and the public
SnapshotUtil header.

Adapt to upstream's API: RestCatalog is used through its Catalog view, and the
S3 region property is client.region.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
REST catalogs can vend credentials as storage credentials scoped to location
prefixes rather than in the table config. The old fork merged the best match
into the FileIO properties; upstream keeps them separate. Overlay the
credential with the longest prefix matching the table location, which
resolves the TODO for the storage credentials field.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
smaheshwar-pltr and others added 5 commits September 26, 2026 05:54
The old fork sent X-Iceberg-Access-Delegation: vended-credentials with every
request; upstream does not, and some catalogs only vend credentials when asked.
Upstream also reports scan metrics to the catalog by default, which would add a
request per scan outside the catalog lock.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Upstream reads a boolean as true only for a case-insensitive "true", lets
s3.ssl.enabled override the endpoint scheme, and matches storage credentials
by canonical S3 prefix against full paths. Do the same, and match against the
slash-terminated table location, so that DuckDB reads data files with the same
settings and credentials iceberg-cpp uses for metadata.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
With the Arrow 25 and AWS SDK versions iceberg-cpp now bundles, finalizing
Arrow's S3 support at exit sometimes crashed: an AWS CRT event loop still
shutting down on another thread logged through the SDK's logger after the SDK
had torn it down. With logging off the SDK installs no logger. The extension
defaults ARROW_S3_LOG_LEVEL to off before S3 is initialized, keeping a value
the user set.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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