Skip to content

Bump DuckDB to v1.5.5 and build Windows binaries - #26

Draft
smaheshwar-pltr wants to merge 9 commits into
sm/distributionfrom
sm/windows-distribution
Draft

smaheshwar-pltr wants to merge 9 commits into
sm/distributionfrom
sm/windows-distribution

Conversation

@smaheshwar-pltr

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

Copy link
Copy Markdown
Owner

Bumps DuckDB to v1.5.5 and adds Windows (MSVC) to the distribution builds, so CI builds binaries for linux_amd64, linux_arm64, osx_amd64, osx_arm64 and windows_amd64.

This PR sits on #24 and carries #25's commits; I'll rebase it onto main once both merge, leaving the last two commits.

  • DuckDB v1.5.1's vendored fmt does not compile with the MSVC toolset on current Windows runners, and extension-ci-tools v1.5.1 can't find that toolset (the job silently fell back to MinGW). v1.5.5 fixes both.
  • DuckDB links the static MSVC runtime, so iceberg-cpp and the libraries it bundles are built the same way. The Windows binary imports only system DLLs.
  • windows_amd64_mingw stays excluded: rtools42's GCC predates C++23.

🤖 Generated with Claude Code

@smaheshwar-pltr smaheshwar-pltr changed the title Experiment: build Windows binaries with MSVC Experiment: DuckDB v1.5.5 and Windows binaries Sep 26, 2026
smaheshwar-pltr and others added 7 commits September 26, 2026 09:34
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>
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>
Move the duckdb and extension-ci-tools submodules, the workflows and the httpfs
pin to v1.5.5. The macOS C++23 patch still applies unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@smaheshwar-pltr smaheshwar-pltr changed the title Experiment: DuckDB v1.5.5 and Windows binaries Bump DuckDB to v1.5.5 and build Windows binaries Sep 26, 2026
DuckDB links the static MSVC runtime, so build iceberg-cpp and the libraries it
bundles the same way: forward CMAKE_MSVC_RUNTIME_LIBRARY, let it reach
dependencies that predate CMake 3.15, and set the option the AWS libraries use.
windows_amd64_mingw stays excluded because rtools42's GCC predates C++23.

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