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