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

DuckDB v1.5.3 Bugfix Release

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 #22004…

data-science data-strategy tech

6 min read open original ↗

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