Repository navigation
Support DuckDB 2.0 alongside 1.5 - #17
Merged
Merged
Conversation
DuckDB 2.0 changed internal C++ APIs the extension uses. One source tree now builds against both, with the differences confined to two headers selected at compile time via __has_include: - firestore_duckdb_compat.hpp: Identifier names, GetDataMutable, SetChildCardinality, table-function parameters declared through FunctionSignature (named params as typed kwargs, varargs as *args), comparisons bound as function expressions, and accessor-only members on bound expressions, column bindings and aggregates. - firestore_variant.hpp: VariantValue was removed in 2.0; a small tree with the same interface is streamed into VariantBuilder instead. On 1.5 it is VariantValue itself. On 2.0, positional table-function arguments are named in the signature so duckdb_functions() keeps reporting real names. The unused TableFilter-based ConvertDuckDBFilter is removed (pushdown goes through pushdown_complex_filter). CI gains an informational DuckDB 2.0 build job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8
- 'not-a-list' passed for a VARCHAR[] argument now fails with a cast error on 2.0 rather than 'No function matches'; accept either. - The empty-list batch test used an untyped [] (no overload on 1.5, VARCHAR[] on 2.0); use []::VARCHAR[] and assert the documented no-op result, 0. - DuckDB 2.0 rejects the arrow lambda syntax; use 'lambda x: ...', which 1.5 also accepts, in the integration script and the README vector example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8
On DuckDB 1.5, duckdb_functions() lists the named parameters of the copy GetFunctionByOffset returns, iterated as is. FirestoreNamedParameterNames copied that map again before iterating it; with libc++ and MSVC a copy of an unordered_map can iterate in a different order, so the parameter names were paired with the wrong types (firestore_function_docs.test on osx_arm64 and windows_amd64). Iterate the given overload directly, as before the 2.0 port. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8
Owner
Author
|
Several jobs on ce00233 (DuckDB 2.0 windows_amd64 / osx_amd64 / osx_arm64 / wasm_threads, and 1.5.5 DuckDB-Wasm wasm_mvp) failed during "Prepare all required actions", before any build step: GitHub could not download Generated by Claude Code |
Every commit on a PR branch ran the whole pipeline twice, once for push and once for pull_request, so each needed twice the macOS runners and carried two "CI passed" checks; with long macOS queues one of the two could fail or be cancelled and block the merge even when the other passed. Run on push for main only; pull_request still covers PRs, and workflow_dispatch builds any other branch on demand. The informational DuckDB 2.0 job no longer builds osx_amd64/osx_arm64: it only has to catch 2.0 API breakage, and the stable build already covers macOS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DuckDB 2.0 changed internal C++ APIs the extension uses. One source tree now
builds against both, with the differences confined to two headers selected at
compile time via __has_include:
SetChildCardinality, table-function parameters declared through
FunctionSignature (named params as typed kwargs, varargs as *args),
comparisons bound as function expressions, and accessor-only members on
bound expressions, column bindings and aggregates.
the same interface is streamed into VariantBuilder instead. On 1.5 it is
VariantValue itself.
On 2.0, positional table-function arguments are named in the signature so
duckdb_functions() keeps reporting real names. The unused TableFilter-based
ConvertDuckDBFilter is removed (pushdown goes through
pushdown_complex_filter). CI gains an informational DuckDB 2.0 build job.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_0159dLVN7efE1WXtE1L97Us8