Since DuckDB 2.0.0 was released on October 21, seven of our new core fixes have merged, and 13 new code and build pull requests remain open across the DuckDB organization. We have also filed 17 issues, including reports that DuckDB maintainers have resolved with their own fixes.
Building DuckDB extensions and maintaining Haybarn exposes problems at the boundaries: named arguments reaching the wrong binding path, browser threads waiting on extension loads, and test paths failing on Windows. An extension cannot repair every part of that chain, so we bring reproductions and proposed fixes to the upstream projects that own it.
The statuses below are current as of November 5, 2026. Rusty Conover submitted this work on behalf of Query Farm; the contribution inventory lists each submission and its dates. Two older core submissions also merged during this period and appear in a separate section.
Select a status badge to view its referenced items.
Where the work landed
Those problems reach beyond the engine repository. Our new submissions span five repositories in the duckdb/ organization, including its build tooling. Community extension registry activity is excluded. Draft PRs count as open.
| Repository | New pull requests | Status on November 5 | New issues |
|---|---|---|---|
| duckdb | 15 | 13 | |
| duckdb-wasm | 3 | 3 | |
| duckdb-httpfs | 1 | 1 draft | 0 |
| extension-ci-tools | 1 | 1 open | 0 |
| duckdb-python | 0 | Issue report only | 1 |
Seven new core fixes have merged
Our extensions need named options to reach the right function arguments. But in a correlated table-function call, DuckDB could treat a named option as another positional input. The same failure reproduces with the built-in range function:
SELECT count(*)FROM (VALUES (3)) AS input(n), LATERAL range(input.n, hello => 123);range has no option called hello. Before the fix, this query returned a count of 120 because the binder treated 123 as a second positional argument. With the fix, it reports an invalid named argument. Extension functions that declare named options receive those options correctly. PR #27833 includes the regression tests.
Fixing the binder therefore helps both built-in functions and extensions. It is one of seven new core fixes that have merged, covering SQL behavior, query execution, and extension testing.
| Change | What it fixes | Status and merge date |
|---|---|---|
| Wait while other query tasks finish, #27738 | Materializing a result could leave the collecting thread spinning and competing with workers for locks. The change also addresses a threaded Wasm extension-loading deadlock. | Merged October 23 |
| Preserve SQL parameters when formatting, #27834 | Formatting could turn $customer into $ customer, or interpret a parameter named $select as a SQL clause. |
Merged October 26 |
| Keep parser error positions accurate, #27835 | Normalizing Unicode whitespace shifted error locations away from the offending byte in the original SQL. | Merged October 26 |
| Copy the HTTP PUT content type, #27967 | A request retained a reference to the caller’s string, allowing its content type to change or the reference to become invalid. It now owns a copy. | Merged October 28 |
| Make test temporary paths valid on Windows, #28042 | Absolute test paths left a drive-letter colon in generated directory names, breaking extension tests that spill to disk. | Merged October 29 |
| Handle negative clock intervals, #28245 | Backward clock readings could trigger an internal integer-cast error and invalidate the database. Negative elapsed intervals now become zero. | Merged November 2 |
| Bind named options in correlated table functions, #27833 | Named options could be treated as positional inputs, silently selecting different behavior instead of validating the function’s signature. | Merged November 5 |
But an upstream merge is only one step toward getting a fix to users. These seven PRs merged into main after 2.0.0 shipped, so they are not included in the released 2.0.0 binaries, which remain the latest stable engine release at this snapshot. A requested backport still needs to land on the release branch and ship before users receive it in a stable release.
Open work for extensions and applications
The remaining work needs more than a release containing the merged fixes. Eight new core PRs remain open: some correct existing behavior, while others give extensions information or control that the engine does not yet expose.
Open Arrow union correctness. #27854 proposes a fix for how Arrow union type IDs select their members. DuckDB reads the schema’s mapping but then uses the raw ID as an index. Data using IDs such as 5,9 can be rejected; swapped IDs can silently select the wrong values. The proposal follows the declared mapping and validates it, addressing an older report.
Checks and diagnostics for extension-defined SQL. #27986 would let an extension inspect a statement before a PRAGMA expands or a connected catalog executes it remotely. #28148 would let an extension add parameter guidance to a parser error while preserving DuckDB’s diagnostic. Both arose from Crossfield, where model definitions can supply information the parser does not have.
APIs for remote scans and storage. Checking a statement is only the start: once it runs, the engine and the extension must agree on the filters, columns, and request settings they exchange. Three proposals address gaps in those interfaces:
- Open #28090 would let a table function request join bounds it can send to another system, instead of Bloom or prefix-range filters that depend on engine memory.
- Open #28089 would let storage extensions distinguish virtual columns available during a scan from those they can actually return after a
DELETE. - Open #28088 would allow HTTP parameters to be copied through a virtual method, preserving provider-specific fields when a request needs different settings. Its companion, Draft HTTPFS #512, awaits the core change and an updated DuckDB dependency.
Progress that reflects completed work. But even a query that executes correctly can mislead its caller: some queries finish while their reported progress remains far below 100%. Two proposals address separate causes: #28413 would exclude a result-collector pipeline that never runs from progress accounting, and #28422 would account for materialized CTE pipelines fed directly by their producers.
Build improvements beyond the engine
Correct engine behavior is only part of delivering an extension or browser package. The same code still has to pass through build workflows, and those workflows can repeat work or wait on tasks they do not need. That led to four proposals to shorten the build process; all remain open.
Open In extension-ci-tools, #456 would forward VCPKG_HOST_TRIPLET into Linux build containers. The workflow sets this variable, but the container does not receive it, so host dependencies such as protobuf and gRPC can build unnecessary debug variants. We found this while building Airport for Haybarn. Passing the variable through would let the container use the intended release configuration.
Three DuckDB-Wasm proposals would remove avoidable CI work: #2292 would allow compilation to begin alongside test-data generation; #2294 would remove duplicate workflow triggers for new refs; and #2296 would skip native engine source checkouts in JavaScript jobs that consume already-built Wasm.
Reports that helped upstream fixes
But a useful upstream contribution does not always require us to write the fix. A reproduction can give a maintainer enough information to diagnose the problem or connect it to work already underway. Of our 17 new issues, seven are closed: our PRs resolved four, and DuckDB maintainers supplied fixes for the other three. Ten remain open.
- Fix merged Aggregate memory reservations. Work on DataSketches exposed repeated export and import of aggregate states despite ample memory. Our report #28040 reproduced the behavior with DuckDB’s built-in
list()aggregate. Laurens Kuiper’s fix #28065 merged on October 29. - Fix merged Python 3.14 shutdown. Our report #714 documented crashes and hangs when daemon threads scanned Python objects or Arrow data during interpreter shutdown. These failures persisted after an earlier fix. Evert Lammerts’s fix #719 merged on October 27; the report closed the following day.
- Fix merged Parser settings within one submission. #27832 tracked settings such as
integer_divisionfailing to affect later statements in the same query string. Denis Hirn already had fix #27321 under review. It merged on October 26, and the maintainer identified 2.0.1 as the intended release in the issue discussion.
Five open issues accompany the proposals above: three Wasm CI reports, query progress, and join-filter pushdown. The other five concern Windows compiler compatibility when loading extensions, commit callbacks interrupted by another callback’s exception, repeated copying of large constant values, function parameter discovery, and source row numbers for CSV and JSON readers. The last two request missing capabilities.
Earlier submissions with progress since release
But some of the progress since 2.0 came from proposals opened before the release.
Two PRs opened before October 21 merged on October 26, in addition to the seven new core fixes. #25941 adds ADBC statement progress so clients can poll while a statement executes or its result stream is consumed. #26409 corrects named-parameter type metadata in duckdb_functions(). Its closing discussion identifies it as a 1.5 issue that does not affect 2.0.
But merging those two proposals does not finish the earlier work. Nine older PRs with activity during this period remain open:
| Area | Proposals | Status |
|---|---|---|
| Browser startup | Preserve Chrome’s Wasm code-cache path, duckdb-wasm #2278 | Open |
| Arrow IPC | Write dictionary-encoded columns, duckdb-nanoarrow #129 | Open |
| Column metadata | Expose table-function metadata, #25813; report view column comments, #25811; trace DESCRIBE columns through forwarding operators, #25809 | |
| Table functions | Report table-in/out progress, #25762; accept multiple TABLE arguments, #25669 | |
| Filter pushdown | Pass multi-column filters to table functions, #25546 | Open |
| Time travel | Use scalar subqueries in table AT clauses, #25665 | Open |
A closed PR can also mean the problem was solved another way. Nine earlier PRs closed without merging during the period; upstream changes superseded our Wasm heap-view fix, Node extension-download fix, and CLI result-draining error fix. We closed the shared-transaction proposal in anticipation of upstream work and the Python subcursor proposal because it had been implemented differently.
The remaining closures were HTTPFS cancellation, which we are keeping in Haybarn for now; HTTP response decompression; a nanoarrow dependency update; and Quack documentation corrections, whose discussion points to documentation now maintained in duckdb-web. None of these closed PRs is counted as a merge.
Continuing the upstream work
These outcomes are why upstream work remains part of developing Airport, DataSketches, Crossfield, and Haybarn. The outcome may be our patch, a maintainer’s fix, or an upstream change that makes our proposal unnecessary. Sharing the problems our workloads expose gives other DuckDB users a chance to benefit from the same work.
We appreciate the DuckDB maintainers who have reviewed these changes and fixed the problems we reported. We will keep bringing that work upstream as we develop our extensions and distribution.
Merged pull requests
Status on November 5, 2026. Links open the items on GitHub.
- feat(adbc): implement ADBC_STATEMENT_OPTION_PROGRESS duckdb/duckdb #25941 · Merged
- duckdb_functions(): pair named table/pragma parameters with their own types duckdb/duckdb #26409 · Merged
- Materializing results: wait on NO_TASKS_AVAILABLE like the other execution loops duckdb/duckdb #27738 · Merged
- Bind named options in correlated table-function calls duckdb/duckdb #27833 · Merged
- Preserve parameter spelling when formatting SQL duckdb/duckdb #27834 · Merged
- Preserve parser error offsets across Unicode whitespace duckdb/duckdb #27835 · Merged
- Make HTTP PUT requests own their content type duckdb/duckdb #27967 · Merged
- sqllogictest: strip the drive colon from per-test temp directory names duckdb/duckdb #28042 · Merged
- Never report a negative TimePoint interval (fixes #27790) duckdb/duckdb #28245 · Merged
- Improve Radix HT memory reservation duckdb/duckdb #28065 · Merged
- Keep engine tasks out of Python once the interpreter finalizes duckdb/duckdb-python #719 · Merged
- Rebuild ParseIterator's cached parser when parser options change duckdb/duckdb #27321 · Merged
Open pull requests
Status on November 5, 2026. Links open the items on GitHub.
- Support multi-column filter pushdown for table functions duckdb/duckdb #25546 · Open
- Support scalar subqueries in table AT clauses duckdb/duckdb #25665 · Open
- Allow table functions to take more than one TABLE argument duckdb/duckdb #25669 · Open
- Support opt-in progress for table-in/out functions duckdb/duckdb #25762 · Open
- Trace DESCRIBE columns through all forwarding operators duckdb/duckdb #25809 · Open
- Report a view's own column comments in DESCRIBE and pragma_show duckdb/duckdb #25811 · Open
- Expose table function column metadata through BindInfo duckdb/duckdb #25813 · Open
- Write dictionary encoded columns to Arrow IPC streams with DICTIONARY_ENCODE duckdb/duckdb-nanoarrow #129 · Open
- Let Chrome code-cache the wasm module (count progress on a clone) duckdb/duckdb-wasm #2278 · Open
- Map Arrow union type ids to members through the format string duckdb/duckdb #27854 · Open
- Add an early statement check for extensions duckdb/duckdb #27986 · Open
- Add virtual `HTTPParams::Clone()` duckdb/duckdb #28088 · Open
- Add `TableCatalogEntry::GetDeleteReturningVirtualColumns()` duckdb/duckdb #28089 · Open
- Let table functions opt out of Bloom and prefix-range join filters duckdb/duckdb #28090 · Open
- Allow extensions to annotate parser errors duckdb/duckdb #28148 · Open
- Do not count the result collector pipeline in query progress duckdb/duckdb #28413 · Open
- Report progress for pipelines fed directly by their producer duckdb/duckdb #28422 · Open
- Mark HTTPFSParams::Clone() as override duckdb/duckdb-httpfs #512 · Draft
- ci: start Wasm builds without waiting for test-data generators duckdb/duckdb-wasm #2292 · Open
- ci: run tag builds only on push duckdb/duckdb-wasm #2294 · Open
- ci: avoid engine source checkouts in JavaScript jobs duckdb/duckdb-wasm #2296 · Open
- Pass VCPKG_HOST_TRIPLET into the Linux Docker build duckdb/extension-ci-tools #456 · Open
Pull requests closed without merge
Status on November 5, 2026. Links open the items on GitHub.
- Add shared transactions with read-only participants duckdb/duckdb #25703 · Closed without merge
- Report errors that occur while a query result is drained duckdb/duckdb #26199 · Closed without merge
- Enable CURL response decompression duckdb/duckdb-httpfs #278 · Closed without merge
- Add per-request cancellation hook to HTTPFSCurlClient duckdb/duckdb-httpfs #324 · Closed without merge
- Bump nanoarrow to ea215b0 for the IPC dictionary decoding fixes duckdb/duckdb-nanoarrow #128 · Closed without merge
- Add subcursor() for interleaved streaming + DML duckdb/duckdb-python #397 · Closed without merge
- Correct pushdown docs and document that remote SQL is evaluated in the server's session duckdb/duckdb-quack #270 · Closed without merge
- Keep heap views current on the COI bundle when other threads grow memory duckdb/duckdb-wasm #2276 · Closed without merge
- Node: don't cache a failed extension download duckdb/duckdb-wasm #2279 · Closed without merge
Seven new core fixes
Status on November 5, 2026. Links open the items on GitHub.
- Materializing results: wait on NO_TASKS_AVAILABLE like the other execution loops duckdb/duckdb #27738 · Merged
- Bind named options in correlated table-function calls duckdb/duckdb #27833 · Merged
- Preserve parameter spelling when formatting SQL duckdb/duckdb #27834 · Merged
- Preserve parser error offsets across Unicode whitespace duckdb/duckdb #27835 · Merged
- Make HTTP PUT requests own their content type duckdb/duckdb #27967 · Merged
- sqllogictest: strip the drive colon from per-test temp directory names duckdb/duckdb #28042 · Merged
- Never report a negative TimePoint interval (fixes #27790) duckdb/duckdb #28245 · Merged
Open core proposals since release
Status on November 5, 2026. Links open the items on GitHub.
- Map Arrow union type ids to members through the format string duckdb/duckdb #27854 · Open
- Add an early statement check for extensions duckdb/duckdb #27986 · Open
- Add virtual `HTTPParams::Clone()` duckdb/duckdb #28088 · Open
- Add `TableCatalogEntry::GetDeleteReturningVirtualColumns()` duckdb/duckdb #28089 · Open
- Let table functions opt out of Bloom and prefix-range join filters duckdb/duckdb #28090 · Open
- Allow extensions to annotate parser errors duckdb/duckdb #28148 · Open
- Do not count the result collector pipeline in query progress duckdb/duckdb #28413 · Open
- Report progress for pipelines fed directly by their producer duckdb/duckdb #28422 · Open
DuckDB-Wasm build improvements
Status on November 5, 2026. Links open the items on GitHub.
- ci: start Wasm builds without waiting for test-data generators duckdb/duckdb-wasm #2292 · Open
- ci: run tag builds only on push duckdb/duckdb-wasm #2294 · Open
- ci: avoid engine source checkouts in JavaScript jobs duckdb/duckdb-wasm #2296 · Open
Statement checks and parser diagnostics
Status on November 5, 2026. Links open the items on GitHub.
- Add an early statement check for extensions duckdb/duckdb #27986 · Open
- Allow extensions to annotate parser errors duckdb/duckdb #28148 · Open
Query progress fixes
Status on November 5, 2026. Links open the items on GitHub.
- Do not count the result collector pipeline in query progress duckdb/duckdb #28413 · Open
- Report progress for pipelines fed directly by their producer duckdb/duckdb #28422 · Open
Open issue reports
Status on November 5, 2026. Links open the items on GitHub.
- CSV and JSON readers reject the file_row_number option supported by Parquet duckdb/duckdb #27822 · Open
- DuckDB 2.0: expose parameter kinds and descriptions for reliable function discovery duckdb/duckdb #27823 · Open
- Windows: MSVC-built extensions can crash on load when linked against the clang-cl prebuilt static lib duckdb/duckdb #27857 · Open
- Transaction callback exceptions skip commit notifications and finalization duckdb/duckdb #27968 · Open
- Cross product copies a large VARCHAR/BLOB value twice per chunk (ConstantVector::Reference) duckdb/duckdb #28036 · Open
- Hash join pushes no min/max bounds to table functions when it chooses a prefix-range filter (regression from v1.5) duckdb/duckdb #28091 · Open
- Query progress stops far below 100% for materialized CTEs duckdb/duckdb #28414 · Open
- CI serializes Wasm builds behind unused test-data generators duckdb/duckdb-wasm #2291 · Open
- Main workflow runs twice for newly created refs duckdb/duckdb-wasm #2293 · Open
- JavaScript CI jobs check out native sources they do not build duckdb/duckdb-wasm #2295 · Open
Earlier submissions merged since release
Status on November 5, 2026. Links open the items on GitHub.
- feat(adbc): implement ADBC_STATEMENT_OPTION_PROGRESS duckdb/duckdb #25941 · Merged
- duckdb_functions(): pair named table/pragma parameters with their own types duckdb/duckdb #26409 · Merged
Column metadata proposals
Status on November 5, 2026. Links open the items on GitHub.
- Expose table function column metadata through BindInfo duckdb/duckdb #25813 · Open
- Report a view's own column comments in DESCRIBE and pragma_show duckdb/duckdb #25811 · Open
- Trace DESCRIBE columns through all forwarding operators duckdb/duckdb #25809 · Open
Table function proposals
Status on November 5, 2026. Links open the items on GitHub.
- Support opt-in progress for table-in/out functions duckdb/duckdb #25762 · Open
- Allow table functions to take more than one TABLE argument duckdb/duckdb #25669 · Open
Other submissions closed without merge
Status on November 5, 2026. Links open the items on GitHub.
- Add per-request cancellation hook to HTTPFSCurlClient duckdb/duckdb-httpfs #324 · Closed without merge
- Enable CURL response decompression duckdb/duckdb-httpfs #278 · Closed without merge
- Bump nanoarrow to ea215b0 for the IPC dictionary decoding fixes duckdb/duckdb-nanoarrow #128 · Closed without merge
- Correct pushdown docs and document that remote SQL is evaluated in the server's session duckdb/duckdb-quack #270 · Closed without merge