khazana — your personal signal terminal khazana — your personal signal terminal
No. 086 eng-blog gh-rel-duckdb 75

DuckDB v1.5.4 Bugfix Release

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 #22136 backport 21815 & 21427 by…

data-science data-strategy tech

5 min read open original ↗

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