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
TemporaryFileManagerreported 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
WindowSelfJoinOptimizerignore 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
ParseFormatSpecifierreturns 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
RowGroupReordererby @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
nullptrexpressions 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
RowGroupReordererby @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
StatementExecuteSchemaof 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 MATCHEDand source table when bindingWHEN NOT MATCHED BY TARGETby @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
UNPIVOTby @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_SCANNEDto 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
BaseStatisticsmembers and zerostats_unionby @krlmlr in https://github.com/duckdb/duckdb/pull/23202 - Initialize
TransactionContext::invalidation_policyandauto_rollbackby @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
SelectionDatadestructor to silence g++-16-Warray-boundsby @krlmlr in https://github.com/duckdb/duckdb/pull/23204 - Bump quack to [9ac652] 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_envis used by @Tishj in https://github.com/duckdb/duckdb/pull/21305 - parquet: initialize
ParquetReader::rows_readby @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-variegataby @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 ALLorrowsortto 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 [275ac2] by @carlopi in https://github.com/duckdb/duckdb/pull/23263
- Add explicit
-dark-modeand-light-modeoptions 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