This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryFixes ADBC ingest catalog resolution, TIMESTAMPFORMAT for TIMESTAMPTZ, and INSERT OR REPLACE BY NAME regression.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Issue #22096: TopN Window Casts Issue #22096: TopN Window Casts Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Add iceberg copy function autoload Add iceberg copy function autoload Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Add DISABLE_BUILTIN_HTTPLIB option Add DISABLE_BUILTIN_HTTPLIB option Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Row group append Row group append Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Add support for reading VARIANT using C API Add support for reading VARIANT using C API Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Correctly skip preprocessing PIVOT MultiStatements Correctly skip preprocessing PIVOT MultiStatements Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Also execute auto-rollback on CLI ClientContext::Query() query Also execute auto-rollback on CLI ClientContext::Query() query Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Use the latest storage version for temp storage Use the latest storage version for temp storage Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Low |
Add Top‑N window casts support (Issue #22096) Add Top‑N window casts support (Issue #22096) Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Dependency | Medium |
Bump Julia to v1.5.2 Bump Julia to v1.5.2 Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Medium |
Coorporative tasks might lead to busy spinning in TaskExecutor::WorkOnTasks Coorporative tasks might lead to busy spinning in TaskExecutor::WorkOnTasks Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Medium |
Avoid handling Ctrl+C during shutdown (state might be already gone) Avoid handling Ctrl+C during shutdown (state might be already gone) Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Medium |
Only build plan_serializer when building the main DuckDB library Only build plan_serializer when building the main DuckDB library Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Medium |
[v1.5 patch] Attempt to fix cache read [v1.5 patch] Attempt to fix cache read Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Medium |
Account for ROW_GROUP_SIZE when deciding whether to append to an existing row group Account for ROW_GROUP_SIZE when deciding whether to append to an existing row group Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Performance | Low |
Address busy‑spinning in TaskExecutor::WorkOnTasks caused by cooperative tasks Address busy‑spinning in TaskExecutor::WorkOnTasks caused by cooperative tasks Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Bugfix | Medium |
Resolve current catalog in ADBC Ingest to avoid temp table shadowing Resolve current catalog in ADBC Ingest to avoid temp table shadowing Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix TIMESTAMPFORMAT being ignored for TIMESTAMPTZ columns in copy to json Fix TIMESTAMPFORMAT being ignored for TIMESTAMPTZ columns in copy to json Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix DISABLE_EXTENSION_LOAD Fix DISABLE_EXTENSION_LOAD Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix INSERT OR REPLACE BY NAME regression by excluding conflict columns from SET list Fix INSERT OR REPLACE BY NAME regression by excluding conflict columns from SET list Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix constant struct args in lateral table in-out functions Fix constant struct args in lateral table in-out functions Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Set query field for statements in ALTER TABLE ... ADD COLUMN ... DEFAULT ... workaround Set query field for statements in ALTER TABLE ... ADD COLUMN ... DEFAULT ... workaround Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix empty parquet child schema Fix empty parquet child schema Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix commit iteration offset bug + relax RemoveFromIndexes assertion Fix commit iteration offset bug + relax RemoveFromIndexes assertion Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix Row Group Pruner Distinct Bug Fix Row Group Pruner Distinct Bug Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix window self join optimizer Fix window self join optimizer Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix pg_catalog.pg_collation compatibility view for SQLAlchemy 2.0.45 reflection Fix pg_catalog.pg_collation compatibility view for SQLAlchemy 2.0.45 reflection Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Fix union_by_name remap for non-nested parquet columns Fix union_by_name remap for non-nested parquet columns Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
fix(adbc): report the table name if the table doesn't exist when appending fix(adbc): report the table name if the table doesn't exist when appending Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Fix CSV escape Fix CSV escape Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Report missing table name in ADBC append errors Report missing table name in ADBC append errors Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Bugfix | Medium |
Correct CSV escape handling Correct CSV escape handling Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Refactor | Medium |
Internal #8812: From TIMESTAMPTZ Casts Internal #8812: From TIMESTAMPTZ Casts Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Refactor | Medium |
Git-ignore generated extension loader Git-ignore generated extension loader Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Refactor | Low |
Internal change: handle TIMESTAMPTZ casts (Issue #8812) Internal change: handle TIMESTAMPTZ casts (Issue #8812) Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
Full changelog
This is a bugfix release for various issues discovered after we released v1.5.2.
Please also refer to the announcement blog post: https://duckdb.org/2026/05/20/announcing-duckdb-153
What's Changed
- Use DB serialization compatibility for json_serialize_sql by @kryonix in https://github.com/duckdb/duckdb/pull/22004
- DuckLake Bump by @pdet in https://github.com/duckdb/duckdb/pull/22014
- fix: resolve current catalog in ADBC Ingest to avoid temp table shadowing by @eitsupi in https://github.com/duckdb/duckdb/pull/22020
- Fix TIMESTAMPFORMAT being ignored for TIMESTAMPTZ columns in copy to json by @DinosL in https://github.com/duckdb/duckdb/pull/21992
- Provide BWC support for join filter pushdowns by @ywelsch in https://github.com/duckdb/duckdb/pull/22029
- Add iceberg copy function autoload by @NiclasHaderer in https://github.com/duckdb/duckdb/pull/22037
- Fix DISABLE_EXTENSION_LOAD by @mlafeldt in https://github.com/duckdb/duckdb/pull/22019
- Fix
INSERT OR REPLACE BY NAMEregression by excluding conflict columns fromSETlist by @DinosL in https://github.com/duckdb/duckdb/pull/22049 - Git-ignore generated extension loader by @mlafeldt in https://github.com/duckdb/duckdb/pull/22056
- Fix constant struct args in lateral table in-out functions by @AlfieJones in https://github.com/duckdb/duckdb/pull/21827
- Avoid handling Ctrl+C during shutdown (state might be already gone) by @carlopi in https://github.com/duckdb/duckdb/pull/22059
- Add
DISABLE_BUILTIN_HTTPLIBoption by @carlopi in https://github.com/duckdb/duckdb/pull/22054 - Set
queryfield for statements inALTER TABLE ... ADD COLUMN ... DEFAULT ...workaround by @yan-alex in https://github.com/duckdb/duckdb/pull/22057 - Coorporative tasks might lead to busy spinning in
TaskExecutor::WorkOnTasksby @NiclasHaderer in https://github.com/duckdb/duckdb/pull/22092 - Row group append by @evertlammerts in https://github.com/duckdb/duckdb/pull/22060
- Fix empty parquet child schema by @dentiny in https://github.com/duckdb/duckdb/pull/22105
- Issue #22096: TopN Window Casts by @hawkfish in https://github.com/duckdb/duckdb/pull/22098
- Add support for reading
VARIANTusing C API by @Dtenwolde in https://github.com/duckdb/duckdb/pull/22065 - Bump Julia to v1.5.2 by @taniabogatsch in https://github.com/duckdb/duckdb/pull/22121
- fix commit iteration offset bug + relax RemoveFromIndexes assertion by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22094
- Internal #8812: From TIMESTAMPTZ Casts by @hawkfish in https://github.com/duckdb/duckdb/pull/22000
- Only build plan_serializer when building the main DuckDB library by @rustyconover in https://github.com/duckdb/duckdb/pull/22100
- Fix Row Group Pruner Distinct Bug by @d-justen in https://github.com/duckdb/duckdb/pull/22132
- Correctly skip preprocessing PIVOT MultiStatements by @yan-alex in https://github.com/duckdb/duckdb/pull/22141
- fix(adbc): report the table name if the table doesn't exist when appending by @eitsupi in https://github.com/duckdb/duckdb/pull/22146
- [v1.5 patch] Attempt to fix cache read by @dentiny in https://github.com/duckdb/duckdb/pull/22126
- Also execute auto-rollback on CLI ClientContext::Query() query by @yan-alex in https://github.com/duckdb/duckdb/pull/22159
- Fix window self join optimizer by @kryonix in https://github.com/duckdb/duckdb/pull/22164
- Account for ROW_GROUP_SIZE when deciding whether to append to an existing row group by @evertlammerts in https://github.com/duckdb/duckdb/pull/22109
- Use the latest storage version for temp storage by @Mytherin in https://github.com/duckdb/duckdb/pull/22169
- Fix: Add pg_catalog.pg_collation compatibility view for SQLAlchemy 2.0.45 reflection by @alonfaraj in https://github.com/duckdb/duckdb/pull/22160
- Fix CSV escape by @dentiny in https://github.com/duckdb/duckdb/pull/22176
- Fix union_by_name remap for non-nested parquet columns by @feichai0017 in https://github.com/duckdb/duckdb/pull/22177
- User-facing
enable_caching_operatorssetting by @lnkuiper in https://github.com/duckdb/duckdb/pull/22191 - Fix bignum sum Combine to correctly take over memory ownership of state by @Mytherin in https://github.com/duckdb/duckdb/pull/22209
- CompressedFile::Close -> calls Close on its child_handle by @benfleis in https://github.com/duckdb/duckdb/pull/22149
- ISSUE-22061: Fix JSON shell output: emit BOOLEAN as true/false, not strings by @herbenderbler in https://github.com/duckdb/duckdb/pull/22073
- [Bugfix] Reset pg_err_pos in pg_parser_init to prevent stale error position leaking by @p1p1bear in https://github.com/duckdb/duckdb/pull/22239
- Bump httpfs to 3139e40a by @carlopi in https://github.com/duckdb/duckdb/pull/22248
- Correctly use new row group when checkpointing, and avoid incorrectly re-using metadata when targeting older storage versions and row ids have changed by @Mytherin in https://github.com/duckdb/duckdb/pull/22253
- Fix: release ParquetReader when a file is marked SKIPPED in multi-file scan by @J-Meyers in https://github.com/duckdb/duckdb/pull/22261
- Fix UTC±NN00 cannot be parsed in SQL by @tianjq16 in https://github.com/duckdb/duckdb/pull/22244
- Defer Bloom Filter Pushdown until it's done by @lnkuiper in https://github.com/duckdb/duckdb/pull/22218
- [v1.5] Backport ADBC memleak fix on error path by @dentiny in https://github.com/duckdb/duckdb/pull/22216
- Allow package builds to choose linked extensions by @mlafeldt in https://github.com/duckdb/duckdb/pull/22305
- Fix UTC+HHMM time zone was parsed incorrectly by @tianjq16 in https://github.com/duckdb/duckdb/pull/22297
- Bump httpfs by @carlopi in https://github.com/duckdb/duckdb/pull/22312
- Exception format: accept string literals by @carlopi in https://github.com/duckdb/duckdb/pull/22314
- Skip schema analysis even if no shredding for rowgroup by @rgernhardt in https://github.com/duckdb/duckdb/pull/21937
- Use batch limit for table scans with filters by @Mytherin in https://github.com/duckdb/duckdb/pull/22315
- Also redacting bearer token for HTTP secrets by @hannes in https://github.com/duckdb/duckdb/pull/22323
- First initialize system, then load extensions (to peek at file to be opened) by @carlopi in https://github.com/duckdb/duckdb/pull/22341
- Node Handle Scoping fix by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22344
- Enable windows_amd64 for lance extension by @carlopi in https://github.com/duckdb/duckdb/pull/22367
- Internal #9003: TIMETZ Parsing Limit by @hawkfish in https://github.com/duckdb/duckdb/pull/22378
- Downcasting decimal fix incorrect out of range error by @Dtenwolde in https://github.com/duckdb/duckdb/pull/22386
- GetLocalFileSystem improvements by @carlopi in https://github.com/duckdb/duckdb/pull/21983
- Fix double decrement of evicted_data_per_tag in .block read-back by @krleonid in https://github.com/duckdb/duckdb/pull/22394
- RowGroup Operator metrics: sequentially scanned row groups + total row groups + cumulative counterparts by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22339
- PostgreSQL compatability: in
pg_catalog.pg_databasesimulate columns datallowconn, datistemplate by @muayyad-alsadi in https://github.com/duckdb/duckdb/pull/22302 - Fix eviction size metrics report by @dentiny in https://github.com/duckdb/duckdb/pull/22452
- Fix enable_logging() silently resetting logging_storage by @guillesd in https://github.com/duckdb/duckdb/pull/22475
- Avoid 3 instances of idx_t - idx_t > 0, and avoid unnecessary check on zLine by @carlopi in https://github.com/duckdb/duckdb/pull/22518
- Fix RESET my_global_extension_setting to actually be GLOBAL by @carlopi in https://github.com/duckdb/duckdb/pull/22520
- Fix BlockAllocator invalid memory access by @dentiny in https://github.com/duckdb/duckdb/pull/22503
- Patch httplib by making ThreadPool constructor more solid on pthread_create failures by @carlopi in https://github.com/duckdb/duckdb/pull/22516
- Fix duck fuzz #4430 by @dentiny in https://github.com/duckdb/duckdb/pull/22435
- Test runner: avoid running clean-up routine if there is no database to run it in by @Mytherin in https://github.com/duckdb/duckdb/pull/22540
- Fix bare numeric interval parsing at end of string on v1.5 by @M1llerF in https://github.com/duckdb/duckdb/pull/22534
- Fix parquet metadata cache validation by @dentiny in https://github.com/duckdb/duckdb/pull/22547
- ExtensionInstall: Remove use of IsHTTP to IsRemoteFile by @carlopi in https://github.com/duckdb/duckdb/pull/21900
- Fix variant write small decimal by @dentiny in https://github.com/duckdb/duckdb/pull/22544
- Move http_proxy setting to global setting, and use GetEnvVariable('HTTP_PROXY') as default by @carlopi in https://github.com/duckdb/duckdb/pull/22541
- Bump httpfs and remove patches by @carlopi in https://github.com/duckdb/duckdb/pull/22556
- Bump Postgres, MySQL and ODBC by @staticlibs in https://github.com/duckdb/duckdb/pull/22579
- Bump avro, azure, delta, ducklake, spatial, unity_catalog and vortex by @carlopi in https://github.com/duckdb/duckdb/pull/22554
- Fix variant selection vector index by @dentiny in https://github.com/duckdb/duckdb/pull/22573
- Fix for SIGABRT in setting size on zero-capacity vector by @ccfelius in https://github.com/duckdb/duckdb/pull/22571
- Fix incorrect profiling results when using
LIMITby @sebastiaan-dev in https://github.com/duckdb/duckdb/pull/22561 - Move Jemalloc into core by @Maxxen in https://github.com/duckdb/duckdb/pull/22558
- Allow json ts format variation across columns - issue 22103 by @benfleis in https://github.com/duckdb/duckdb/pull/22559
- Limit parallel linker jobs to avoid out-of-memory errors by @smvv in https://github.com/duckdb/duckdb/pull/22588
- ARTOperator::Delete return false if rowid not found in nested ART leaf by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22591
- Enable/disable jemalloc linking through BUILD/SKIP_EXTENSIONS by @Maxxen in https://github.com/duckdb/duckdb/pull/22594
- Bump AWS extension by @staticlibs in https://github.com/duckdb/duckdb/pull/22600
- bump spatial again by @Maxxen in https://github.com/duckdb/duckdb/pull/22602
- Jemalloc is not an extension anymore by @carlopi in https://github.com/duckdb/duckdb/pull/22603
- bump iceberg by @Tmonster in https://github.com/duckdb/duckdb/pull/22608
- CUMULATIVE_VACUUM_TIME metric by @artjomPlaunov in https://github.com/duckdb/duckdb/pull/22425
- parser_tools is apparently now a dependency for postgres by @carlopi in https://github.com/duckdb/duckdb/pull/22619
- Bump DuckLake for release by @pdet in https://github.com/duckdb/duckdb/pull/22651
- Bump lance to 533e0ee6cf419e4be2af3af56182fb04b87978e1 by @carlopi in https://github.com/duckdb/duckdb/pull/22640
- Add storage informations for v1.5.3 by @carlopi in https://github.com/duckdb/duckdb/pull/22638
- Add quack autoloading by @carlopi in https://github.com/duckdb/duckdb/pull/22631
- Add
quackextension by @carlopi in https://github.com/duckdb/duckdb/pull/22614 - bump aws extension by @samansmink in https://github.com/duckdb/duckdb/pull/22623
- bump avro+iceberg+vcpkg-duckdb-ports by @Tishj in https://github.com/duckdb/duckdb/pull/22621
- optimizer: don't return truncated VARCHAR MIN/MAX from statistics by @nahomar in https://github.com/duckdb/duckdb/pull/22538
- Bump excel / remove patch by @carlopi in https://github.com/duckdb/duckdb/pull/22633
- Bump sqlsmith, remove patch by @carlopi in https://github.com/duckdb/duckdb/pull/22622
- Fix free block for temporary file manageer by @dentiny in https://github.com/duckdb/duckdb/pull/22616
- Add dummy cmake target for jemalloc by @evertlammerts in https://github.com/duckdb/duckdb/pull/22632
- Bump quack by @carlopi in https://github.com/duckdb/duckdb/pull/22659
- Fix invalid access for file row number by @dentiny in https://github.com/duckdb/duckdb/pull/22662
- Fix enum type write to parquet by @dentiny in https://github.com/duckdb/duckdb/pull/22677
- Add
write_buffer_row_group_memory_limitsetting which controls when to flush row groups based on memory instead of only based on row group count by @Mytherin in https://github.com/duckdb/duckdb/pull/22666 - Fix max file row number by @dentiny in https://github.com/duckdb/duckdb/pull/22688
- Fix new jemalloc plumbing by @mlafeldt in https://github.com/duckdb/duckdb/pull/22628
- Bump DuckLake by @pdet in https://github.com/duckdb/duckdb/pull/22698
- Fix timer lifetime/timing issues by @taniabogatsch in https://github.com/duckdb/duckdb/pull/22697
- Enable jemalloc heap profiling with the libgcc unwinder by @mlafeldt in https://github.com/duckdb/duckdb/pull/22630
- Fix jemalloc thread flush threshold check by @xuke-hat in https://github.com/duckdb/duckdb/pull/22670
- Make several storage internals public by @samansmink in https://github.com/duckdb/duckdb/pull/22718
- Fix GCC jemalloc symbol leakage CI failure by @lnkuiper in https://github.com/duckdb/duckdb/pull/22729
- Fix iterator invalidation in ConnectionManager::GetConnectionList by @bleskes in https://github.com/duckdb/duckdb/pull/22719
- Bump quack, fixes quack_serve on wasm by @carlopi in https://github.com/duckdb/duckdb/pull/22722
- bump iceberg again by @Tmonster in https://github.com/duckdb/duckdb/pull/22723
- fix: list_zip SEGFAULT with empty / NULL argument by @carlopi in https://github.com/duckdb/duckdb/pull/22726
- Fix .sanitizer-thread-suppressions.txt jemalloc ref by @carlopi in https://github.com/duckdb/duckdb/pull/22736
- Revert "Enable jemalloc heap profiling with the libgcc unwinder" by @carlopi in https://github.com/duckdb/duckdb/pull/22740
- RowGroupPruner: treat UNSET LIMIT as unbounded by @ColtenOuO in https://github.com/duckdb/duckdb/pull/22744
- Return an error if a negative number is passed to the factorial function by @DinosL in https://github.com/duckdb/duckdb/pull/22731
Full Changelog: https://github.com/duckdb/duckdb/compare/v1.5.2...v1.5.3
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]