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

DuckDB v1.5.1 Bugfix Release

This is a bug fix release for various issues discovered after we released v1.5.0. Please also refer to the announcement blog post: https://duckdb.org/2026/03/23/announcing-duckdb-151 What's Changed [Extensions] Preserve require order in InterpretedBenchmark by @Tishj in #21214…

data-science data-strategy tech

6 min read open original ↗

This is a bug fix release for various issues discovered after we released v1.5.0. Please also refer to the announcement blog post: https://duckdb.org/2026/03/23/announcing-duckdb-151 What's Changed [Extensions] Preserve require order in InterpretedBenchmark by @Tishj in #21214 CLI: Make help entry uppercase by @szarnyasg in #21224 Restore view's bind_state when binding fails by @jeewonhh in #21193 [Regression v1.5] Fix INTERNAL Error in UnnestRewriter for deeply nested struct UNNEST by @guizmaii in #21209 fix(storage): prevent TrimFreeBlocks from zeroing concurrently alloca… by @llersch in #21146 Windows shell: UTF-8 mode when writing to pager by @staticlibs in #21202 [Dev] Add internal exception for misuse of MultiFileReader method by @Tishj in #21046 Before loading libraries in TryAutoLoadExtension check AutoloadKnownExtensions Setting by @pdet in #21051 fix: buffer overread in Arrow dictionary conversion with NULLs - fixes crash. by @rustyconover in #21083 Avoid misleading GetRequestInfo constructor that takes endpoint + path by @carlopi in #21151 Enable column pruning for MATERIALIZED CTEs by @kryonix in #21169 Add framework to test two DuckDB versions by @Y-- in #21184 Internal #7691: 2026a Time Zones by @hawkfish in #21204 Fix DuckFuzz #4325 by @kryonix in #21215 Fix decorrelation delim index bug by @kryonix in #21233 Fix two minor shell bugs: Avoid mutating rendered strings and avoid p… by @carlopi in #21234 Fix wrong cast in RecursiveDependentJoinPlanner by @kryonix in #21235 Use atomic load in bloom filter look-up by @Mytherin in #21238 Move BWC tests to nightly for now by @Mytherin in #21266 Internal #7740: AsOf Tidy Fix by @hawkfish in #21255 Re-add accidentally removed -jsonlines command line parameter by @Mytherin in #21263 Switch MAIN_BRANCH_VERSIONING to False for v1.5-variegata branch by @carlopi in #21239 Lazy call mmap in BlockAllocator by @lnkuiper in #21276 Dynamically determine radix bits for external aggregation by @lnkuiper in #21274 Avoid potential division by 0 in PhysicalHashJoin::PrepareFinalize by @lnkuiper in #21271 Do not use MSYS shell for MinGW builds by @staticlibs in #21296 add structured Path objects, update joinpath: normalize, support url/… by @benfleis in #21277 When stress testing FORCE_ASYNC, add the relevant error messages by @carlopi in #21267 Fix invalid JSON when casting from certain types by @Maxxen in #21280 Fix .open of Parquet files etc. in CLI by @hannes in #21269 Bump storage version to v1.5.1 by @taniabogatsch in #21287 Implement line number reporting in errors for PEG parser by @Dtenwolde in #21157 Support new v1.5 syntax for PEG grammar by @Dtenwolde in #21172 [Fix] Memory error when transforming to v1.0.0 ART storage by @taniabogatsch in #21270 Add missing expression traversal in merge into binding by @kryonix in #21283 Add UUID to settings cache by @Mytherin in #21290 Fix Terminal::TryGetBackgroundColor when stdin is reading from a pipe but stdout is still writing to the terminal by @Mytherin in #21288 Fix #21248: correctly expand type count in CSV header detection by @Mytherin in #21292 Add batch index support to parquet_metadata and friends to allow it to be executed in parallel also with order preservation by @Mytherin in #21314 Make overriding HTTPUtil thread safe by @Mytherin in #21210 Revert #21067 - and fix WAL corruption issue through calling MarkBlockAsCheckpointed on WAL blocks by @Mytherin in #21285 Fix sampling for UB in musl libc by @carlopi in #21318 TryGetCurrentSetting: Fixup paramater passing for FileOpenerInfo by @carlopi in #21301 Fix Row Group Reorderer Bug by @d-justen in #21282 Windows shell: fix UTF-8 to UTF-16 conversion by @staticlibs in #21319 Issue #21244: AsOf Unordered LIMIT by @hawkfish in #21250 Throw error on incorrect use of ParseExpressionList by @Dtenwolde in #21306 Issue #20481: Prepare Window Parameters by @hawkfish in #21323 CLI: Explicitly clean up shell state instead of letting static destructor order determine when it gets destroyed by @Mytherin in #21315 Fixup 401bcf0: "When stress testing … by @carlopi in #21329 CLI: Make bail on error the default in more situations by @Mytherin in #21344 Improve estimate when first Parquet file is almost empty, and get exact cardinality count when we are using union by name by @Mytherin in #21345 Fix infinite recursion in FileOpener::TryGetCurrentSetting by @Mytherin in #21356 fix argument check for .multiline and .singleline by @jaywgraves in #21336 Windows shell: remove .utf8 dot command by @staticlibs in #21343 When writing unsupported Parquet variant types to Parquet, try to convert them to INT64 by @Mytherin in #21357 Use cached Parquet metadata to improve cardinality estimates over Parquet files by @Mytherin in #21358 Parquet Reader: Allow merging of prefetch column ranges for columns that do not have table filters by @Mytherin in #21373 In the parquet reader, if we are globbing over a directory, use file sizes from the glob to estimate cardinalities instead of relying only on the first parquet file by @Mytherin in #21374 MbedTLS: Actually throw exception by @hannes in #21365 Well-defined environment for MinGW builds by @staticlibs in #21371 Fix #21335: correctly add checkpoint and recovery WAL to allowed paths when launching an initial db with enable_external_access set to false by @Mytherin in #21379 automate clangd/compile_commands.json gen via builds by @benfleis in #21361 Parquet: Ignore optional filters when deciding whether or not to do a lazy fetch by @Mytherin in #21383 parquet: avoid corrupting define buffers during skips by @Mikubill in #21298 CLI: Fix .tables rendering for large database names by @Mytherin in #21389 Fix column pruning for CTEs by @kryonix in #21275 add test for #21271 by @artjomPlaunov in #21398 Grab correct row group id in ValidityColumnData::UpdateWithBase by @Mytherin in #21397 Add lance extension by @carlopi in #21406 add lance for v1.5 by @samansmink in #21111 Fix #21289: correctly determine render width of UTF8 string with grapheme clusters by @Mytherin in #21409 Avoid calling PushCollation in create_sort_key by @Mytherin in #21412 Flush remaining operators in pipeline by @DinosL in #21405 Correctly limit auto-detection in read_json for files that don't have string columns by @Mytherin in #21411 Fix INSERT OR REPLACE updates on non-unique indexed columns by @feichai0017 in #20962 fix(adbc): support concurrent statements on the same connection by @eitsupi in #21415 Fix invalid common subplan CTE reuse for issue #21372 by @feichai0017 in #21386 Use regular pushdown path for semi/anti/left delim joins by @Mytherin in #21416 Predicate factoring by @lnkuiper in #21418 Bump SQLite by @staticlibs in #21414 Enable Row Group Pruner for NULLS_FIRST by @d-justen in #21399 Read geoparquet file with null CRS. Fix #21332 by @philippechataignon in #21333 test/sql/join/test_hash_join_many_columns.test needs 64bit by @carlopi in #21432 Parquet Reader: initialize scan without holding the global lock in the multi file reader by @Mytherin in #21439 bump spatial for v1.5.2 by @Maxxen in #21440 [vortex] Bump to d0b5bae4d907694e776c97b57de6edfb662c6c25 by @carlopi in #21430 Fix stale update read during index removal by @artjomPlaunov in #21427 Fix window elimination optimizer by @kryonix in #21428 Avoid scanning struct validity when executing pushdown extract by @Mytherin in #21421 Bump avro by @taniabogatsch in #21426 Add allowed_configs option for allow-listing configs when setting lock_configurations by @hrl20 in #20938 Fix minor typos in documentation and comments by @Monstertov in #21442 Fix parquet metadata cache invalidation in local file system by @Mytherin in #21435 Bump ducklake by @Mytherin in #21448 [httpfs] Bump to 7e86e7a5e5 and remove patches by @carlopi in #21437 verify_fetch_row.json + roaring seems to work as intended, restore by @carlopi in #21300 Refactor for multiple external extensions, and skip temporary for osx_amd64 by @carlopi in #21450 bump iceberg by @Tmonster in #21453 Fix #21436: correctly preserve spaces within unquoted struct values in pretty printing code by @Mytherin in #21457 Bump Postgres and MySQL by @staticlibs in #21433 Shell: use Unicode entry point on Windows by @staticlibs in #21472 Fix #21459: detect when read_duckdb is used to read a non-DuckDB file and throw a descriptive error by @Mytherin in #21460 Fix #21367: Prevent throwing in WindowSelfJoinOptimizer when a logical plan cannot be copied, instead fallback to not running the optimization by @Mytherin in #21461 bump delta && unity in prep for v1.5.1 by @benfleis in #21451 Adjust v1.5.0 for z/OS by @DNikolaevAtRocket in #21325 [vortex] Bump to 6ea8bd77fe8e6e814bde11b6981f934fa82ab961 by @carlopi in #21462 Fix NULL dereference in TryGetValueFromStats (#21477) by @carlopi in #21479 Bump spatial again by @Maxxen in #21485 Bump vcpkg-duckdb-ports baseline by @yan-alex in #21493 Full Changelog: v1.5.0...v1.5.1