Impact Score: 5/10
DuckDB v1.5.4 Bugfix Release
Source available β automated, not human-reviewed
Component: duckdb Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
β‘ Executive Summary (TL;DR)
DuckDB v1.5.4. Source highlight: This is a bug fix release for various issues discovered after we released v1.5.3.
Who Does This Impact? (Role-Based Analysis)
π» Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
π Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
βοΈ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
β¨ New Features & Capabilities (6)
- Add vacuum_rebuild_indexes as an (experimental) ATTACH option
- Add avro and unity_catalog to extension list
- Add v1.4.5 to storage version map
- Merge v1.4-andium into v1.5-variegata, and add storage versions v1.4.5 and v1.5.4
- Add hardening to many DuckDB/Parquet decompression/deserializing paths
- [Dev] Add missing `ORDER BY ALL` or `rowsort` to merge into tests
β‘ Performance & Enhancements (1)
- backport GetLocalFileSystem improvements to andium
π§ Bug Fixes & Patches (6)
- Backport revert append fix to v1.4
- Backport windows-32bit test fix to 1.4
- Fix `TemporaryFileManager` reported size to reflect live blocks
- Fix double free and memory leak in Arrow GeoArrow CRS serialization
- Fix `WindowSelfJoinOptimizer` ignore exception
- fix progress bar output and crash when piping SQL
π View Raw Release Notes (Original Developer Log)
This is a bug fix release for various issues discovered after we released v1.5.3.
Please also refer to the announcement blog post: https://duckdb.org/2026/06/17/announcing-duckdb-154.html
## What's Changed
* backport 22094 by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22136
* backport 21815 & 21427 by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22137
* remove CleanupState destructor and remove noexcept on DuckCleanupInfo⦠by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22186
* Backport revert append fix to v1.4 by @Mytherin in https://github.com/duckdb/duckdb/pull/22414
* Backport windows-32bit test fix to 1.4 by @staticlibs in https://github.com/duckdb/duckdb/pull/22639
* Fix `TemporaryFileManager` reported size to reflect live blocks by @DinosL in https://github.com/duckdb/duckdb/pull/22767
* Set query text on PIVOT MultiStatement sub-statements at construction by @bleskes in https://github.com/duckdb/duckdb/pull/22769
* Fix double free and memory leak in Arrow GeoArrow CRS serialization by @rustyconover in https://github.com/duckdb/duckdb/pull/21854
* Render MAP values as valid SQL in Value::ToSQLString() by @carlopi in https://github.com/duckdb/duckdb/pull/22815
* Remove time-out waiting for terminal background color by @Mytherin in https://github.com/duckdb/duckdb/pull/22838
* Fix `WindowSelfJoinOptimizer` ignore exception by @qsliu2017 in https://github.com/duckdb/duckdb/pull/22800
* fix progress bar output and crash when piping SQL by @DinosL in https://github.com/duckdb/duckdb/pull/22836
* Internal #9438: TopN Window Projections by @hawkfish in https://github.com/duckdb/duckdb/pull/22851
* Fix: check if `ParseFormatSpecifier` returns unrecognized format by @DinosL in https://github.com/duckdb/duckdb/pull/22850
* Issue #22791: Window Self-Join Limits by @hawkfish in https://github.com/duckdb/duckdb/pull/22844
* [Backport] Column-level metadata loading and serialization by @ywelsch in https://github.com/duckdb/duckdb/pull/22768
* Fix json_keys with wildcard paths by @feichai0017 in https://github.com/duckdb/duckdb/pull/22855
* Fix: JSON add list type check by @DinosL in https://github.com/duckdb/duckdb/pull/22862
* Use committed row count in `RowGroupReorderer` by @lnkuiper in https://github.com/duckdb/duckdb/pull/22884
* Fix geometry stats checkpointing when no changes are detected by @Maxxen in https://github.com/duckdb/duckdb/pull/22882
* Check for `nullptr` expressions in deserialized JSON by @lnkuiper in https://github.com/duckdb/duckdb/pull/22906
* Add vacuum_rebuild_indexes as an (experimental) ATTACH option by @evertlammerts in https://github.com/duckdb/duckdb/pull/22690
* Use non-deleted row count in `RowGroupReorderer` by @lnkuiper in https://github.com/duckdb/duckdb/pull/22911
* Validate width/scale in duckdb_create_decimal_type and duckdb_create_decimal by @mlafeldt in https://github.com/duckdb/duckdb/pull/22905
* Bump httpfs to fix CI by @sebastiaan-dev in https://github.com/duckdb/duckdb/pull/22817
* Update vortex extension by @samansmink in https://github.com/duckdb/duckdb/pull/22930
* Fix alias propagation when replacement scan is wrapped in SubqueryRef by @truffle-dev in https://github.com/duckdb/duckdb/pull/22852
* Rowgroup index append by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22940
* Bump Julia to v1.5.3 by @carlopi in https://github.com/duckdb/duckdb/pull/22804
* Make url a value, not a const ref by @NiclasHaderer in https://github.com/duckdb/duckdb/pull/22953
* fix(adbc): support `StatementExecuteSchema` of ADBC 1.1.0 by @eitsupi in https://github.com/duckdb/duckdb/pull/22965
* Fix partial column metadata reuse bug by @ywelsch in https://github.com/duckdb/duckdb/pull/22994
* bump avro hash for 1.4.5 by @djouallah in https://github.com/duckdb/duckdb/pull/22952
* Add avro and unity_catalog to extension list by @d-justen in https://github.com/duckdb/duckdb/pull/22948
* Fix case-insensitive column match in INSERT ... SELECT ON CONFLICT by @remsky in https://github.com/duckdb/duckdb/pull/22825
* Normalize db_type to lowercase on ATTACH, apply extension aliases on compare by @carlopi in https://github.com/duckdb/duckdb/pull/22758
* MERGE INTO: only consider target table when binding `WHEN NOT MATCHED` and source table when binding `WHEN NOT MATCHED BY TARGET` by @Mytherin in https://github.com/duckdb/duckdb/pull/23014
* In the optimistic writer always start a new row group after merging by @Mytherin in https://github.com/duckdb/duckdb/pull/22997
* Merge Into: Avoid recursively binding in the ProjectionBinder by @Mytherin in https://github.com/duckdb/duckdb/pull/23022
* Rename emscripten action in v1.5 by @smvv in https://github.com/duckdb/duckdb/pull/23044
* Rename emscripten action in v1.4 by @smvv in https://github.com/duckdb/duckdb/pull/23045
* Fix VARIANT cast reading wrong rows under a filter by @mlafeldt in https://github.com/duckdb/duckdb/pull/23031
* fix(adbc): implement ADBC 1.1.0 Rich Error Metadata API by @eitsupi in https://github.com/duckdb/duckdb/pull/23073
* Add v1.4.5 to storage version map by @carlopi in https://github.com/duckdb/duckdb/pull/23081
* Merge v1.4-andium into v1.5-variegata, and add storage versions v1.4.5 and v1.5.4 by @carlopi in https://github.com/duckdb/duckdb/pull/23082
* Backport PR #22348 to andium by @carlopi in https://github.com/duckdb/duckdb/pull/23084
* Backport variegata bugfixes into andium by @carlopi in https://github.com/duckdb/duckdb/pull/23085
* Bump vortex in andium by @carlopi in https://github.com/duckdb/duckdb/pull/23091
* Bump lance in variegata by @carlopi in https://github.com/duckdb/duckdb/pull/23094
* Bump vortex in variegata by @carlopi in https://github.com/duckdb/duckdb/pull/23096
* Bump extensions to v1.4-andium by @carlopi in https://github.com/duckdb/duckdb/pull/23090
* v1.5-variegata: bump extensions by @carlopi in https://github.com/duckdb/duckdb/pull/23089
* Fix Parquet thrift byte order on windows + relax geometry stats pruning by @Maxxen in https://github.com/duckdb/duckdb/pull/23095
* fix(adbc): fill metadata of GetObjects by @eitsupi in https://github.com/duckdb/duckdb/pull/23110
* backport GetLocalFileSystem improvements to andium by @ccfelius in https://github.com/duckdb/duckdb/pull/23130
* Reject NULL json key by @dentiny in https://github.com/duckdb/duckdb/pull/23116
* Fix windows last modification timestamp by @dentiny in https://github.com/duckdb/duckdb/pull/23136
* Fix: ignore_errors silently accepting invalid json by @DinosL in https://github.com/duckdb/duckdb/pull/23137
* [v1.5] Backport external file cache fix by @dentiny in https://github.com/duckdb/duckdb/pull/23132
* Internal #9375: PRAGMA enum NULL by @hawkfish in https://github.com/duckdb/duckdb/pull/23146
* Clarify BIGNUM C API data is big endian by @mlafeldt in https://github.com/duckdb/duckdb/pull/23127
* Allow array type for array_to_json by @dentiny in https://github.com/duckdb/duckdb/pull/23129
* Fix json argument order affecting result by @DinosL in https://github.com/duckdb/duckdb/pull/23144
* Fix #21931: avoid trying to bind an expression that doesn't exist in `UNPIVOT` by @Mytherin in https://github.com/duckdb/duckdb/pull/23156
* Fix RowGroup assertion by @ywelsch in https://github.com/duckdb/duckdb/pull/23155
* Upgrade ducklake for release by @pdet in https://github.com/duckdb/duckdb/pull/23182
* Update Postgres, SQLite and ODBC in 1.5 by @staticlibs in https://github.com/duckdb/duckdb/pull/23172
* Fix native geometry parquet stats pruning and add `OPERATOR_ROW_GROUPS_SCANNED` to parquet reader by @Maxxen in https://github.com/duckdb/duckdb/pull/23140
* Expose bytes to parquet variant function by @Tmonster in https://github.com/duckdb/duckdb/pull/23057
* Minor fixes by @DinosL in https://github.com/duckdb/duckdb/pull/23162
* Bump aws extension by @ccfelius in https://github.com/duckdb/duckdb/pull/23170
* Merge v1.4-andium into v1.5-variegata by @carlopi in https://github.com/duckdb/duckdb/pull/23171
* Backport to variegata some isolated fixes by @carlopi in https://github.com/duckdb/duckdb/pull/23175
* Fix: guard againt null row group reorder stats by @DinosL in https://github.com/duckdb/duckdb/pull/23189
* bump iceberg by @Tmonster in https://github.com/duckdb/duckdb/pull/23192
* Replace ARTConflictType::TRANSACTION with fatal exception by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/23193
* [Dev] Fix variant shredding analysis logic discrepancy with shredded writing by @Tishj in https://github.com/duckdb/duckdb/pull/23194
* Initialize all `BaseStatistics` members and zero `stats_union` by @krlmlr in https://github.com/duckdb/duckdb/pull/23202
* Initialize `TransactionContext::invalidation_policy` and `auto_rollback` by @krlmlr in https://github.com/duckdb/duckdb/pull/23203
* Fix selection vector use in Arrow extension callbacks by @evertlammerts in https://github.com/duckdb/duckdb/pull/23190
* Add hardening to many DuckDB/Parquet decompression/deserializing paths by @Tishj in https://github.com/duckdb/duckdb/pull/23100
* Out-of-line `SelectionData` destructor to silence g++-16 `-Warray-bounds` by @krlmlr in https://github.com/duckdb/duckdb/pull/23204
* Bump quack to 9ac6521f712812cc6f2e58815ef0a6c85c5e06e0 by @carlopi in https://github.com/duckdb/duckdb/pull/23178
* Fix crash when storage path is not set by @guillesd in https://github.com/duckdb/duckdb/pull/23174
* Zero the inlined buffer in string_t's length-only constructor by @krlmlr in https://github.com/duckdb/duckdb/pull/23201
* [Dev] Fix "environment variable already defined" error in sqllogictest when `test_env` is used by @Tishj in https://github.com/duckdb/duckdb/pull/21305
* parquet: initialize `ParquetReader::rows_read` by @krlmlr in https://github.com/duckdb/duckdb/pull/23205
* Bump quack no patches by @carlopi in https://github.com/duckdb/duckdb/pull/23210
* bump delta & unity for 1.5.4 by @benfleis in https://github.com/duckdb/duckdb/pull/23212
* Bump DuckLake by @pdet in https://github.com/duckdb/duckdb/pull/23226
* Bump httpfs for variegata by @carlopi in https://github.com/duckdb/duckdb/pull/23215
* Hopefully fix timeouts on `v1.5-variegata` by @lnkuiper in https://github.com/duckdb/duckdb/pull/23224
* Variant fixes by @DinosL in https://github.com/duckdb/duckdb/pull/23195
* Fix VARIANT shredding, avoid including empty object keys by @Tishj in https://github.com/duckdb/duckdb/pull/23213
* Remove checked_array_iterator from fmt dep (1.5) by @staticlibs in https://github.com/duckdb/duckdb/pull/23238
* [Dev] Add missing `ORDER BY ALL` or `rowsort` to merge into tests by @Tishj in https://github.com/duckdb/duckdb/pull/23258
* Cherry picks on variegata by @carlopi in https://github.com/duckdb/duckdb/pull/23262
* Bump vortex to 275ac230e1d9afd08926b6989ec2467f92fae6e3 by @carlopi in https://github.com/duckdb/duckdb/pull/23263
* Add explicit `-dark-mode` and `-light-mode` options to the CLI, and improve terminal background color detection by @Mytherin in https://github.com/duckdb/duckdb/pull/23246
* Fix gzip compression write overflow by @dentiny in https://github.com/duckdb/duckdb/pull/23232
* Bump iceberg for v1.5.4 by @Tmonster in https://github.com/duckdb/duckdb/pull/23225
* Trim the system heap in the allocator flush path on jemalloc builds by @JelteF in https://github.com/duckdb/duckdb/pull/23253
* Backport loop in sleep_ms by @DinosL in https://github.com/duckdb/duckdb/pull/23245
* Fix NULL propagation for date parts of infinite dates by @DinosL in https://github.com/duckdb/duckdb/pull/23254
* [Dev][Parquet][VARIANT] Fix problem with re-use of cached transform data for differently shredded files by @Tishj in https://github.com/duckdb/duckdb/pull/23234
* bump iceberg by @Tmonster in https://github.com/duckdb/duckdb/pull/23277
* Fix more geom stats by @Maxxen in https://github.com/duckdb/duckdb/pull/23295
**Full Changelog**: https://github.com/duckdb/duckdb/compare/v1.5.3...v1.5.4