Releases: duckdb/duckdb
DuckDB v1.5.2 Bugfix Release
This is a bug fix release for various issues discovered after we released v1.5.1
What's Changed
- Backport various race condition fixes to v1.4 by @Mytherin in #20804
- bump ref to azure for v1.4.4 (rebuild) by @benfleis in #20888
- Internal #7584: AsOf Simple Joins by @hawkfish in #21090
- Do not write ccache to github cache for v1.4-andium by @smvv in #21109
- Disable extension caching for v1.4 to free github cache space by @smvv in #21150
- Disable save_cache for v1.4-andium by @smvv in #21167
- Backport #19232: allow * Not similar to 'pattern' by @Dtenwolde in #21177
- backport zstd PR to 1.4 by @artjomPlaunov in #21178
- Fix unbounded row group growth for indexed tables on repeated load+insert cycles by @abramk in #21316
- Backport #21271 by @artjomPlaunov in #21326
- [lance] Add for v1.4-andium by @carlopi in #21410
- add lance for v1.4 by @samansmink in #21113
- Correctly detect overflows when decoding integers from storage by @Mytherin in #21482
- Correctly revert dictionary size when reverting string appends by @Mytherin in #21489
- Add descriptions for vortex and lance by @carlopi in #21500
- Fixup Write bytes are counted as BYTES_WRITTEN by @carlopi in #21501
- Fix memory leak when reusing PreparedStatement (#21089) by @wzharies in #21104
- Make some MultiStatements and PRAGMAs Transactional by @yan-alex in #21171
- Reduce concurrent thread count in test by @Mytherin in #21511
- Fixing integer overflow in list_resize by @hannes in #21515
- Fix #21512: correctly render empty results in .mode json by @Mytherin in #21517
- Fix parsing test path to skip by @jeewonhh in #21495
- Add setting for limiting the number of threads launched concurrently in the test runner (
max_test_threads) by @Mytherin in #21520 - Unify adding suffixes to path in
Path:: AddSuffixToPath- fix temp directory split bug by @Mytherin in #21527 - Correctly deal with negative values in
GetPosixVersionTag, and fix constantNULLstruct scans after recent fix by @Mytherin in #21549 - Fix missing extension static libs in Windows MinGW bundle by @mlafeldt in #21559
- PEG grammar fixes: Update extension and allow numeric struct keys by @Dtenwolde in #21331
- [v1.5-variegata] Fix #21514: ASOF join empty right by @Pieczasz in #21553
- Fix data path in
test/sql/copy/parquet/parquet_no_stats.testby @jeewonhh in #21561 - TopNWindowElimination Column Binding Fix by @d-justen in #21564
- lance: bump lance-duckdb to 4d9ecab by @Xuanwo in #21572
- Bump Julia to
v1.5.0by @taniabogatsch in #21588 - Bump Julia to
v1.4.4onv1.4-andiumby @taniabogatsch in #21589 - Simplify the way we determine which row groups to checkpoint during checkpoints by @Mytherin in #21574
- Fix for CSV reader buffer-boundary value read by @Mytherin in #21577
- CLI: Avoid division by zero when formatting a large result with a non-wide shell by @Mytherin in #21591
- Backport
__EMSCRIPTEN__fix by @Mytherin in #21581 - Fix missing SetSizeAndFinalize in BIGNUM Add for zero result case by @pdet in #21465
- Segfault due to unchecked malloc/realloc, proposed fix to #21593 by @wasade in #21594
- Reduce arg_min_max_n heap preallocation by @feichai0017 in #21467
- Fixed an issue where the describe statement did not work correctly in markdown output mode(ISSUE:#21579) by @ArNine in #21611
- fix unpivot serialization by @Maxxen in #21595
- Windows shell: enable VT100 processing on startup by @staticlibs in #21615
- Make PEG Parser use strict mode in CI by @Dtenwolde in #21590
- Fix #21623: flatten input chunk in TopNHeap::CheckBoundaryValues by @Mytherin in #21629
- Issue #21592: Window Self-Join Framing by @hawkfish in #21628
- Bump Julia to v1.5.1 by @taniabogatsch in #21637
- Merge v1.4-andium into v1.5-variegata by @Mytherin in #21639
- Bump storage version to
v1.5.2by @taniabogatsch in #21638 - bump delta and unity_catalog ext refs in v1.5-variegata by @benfleis in #21640
- Fix cancellation order between pipelines and tasks in CancelTasks by @carlopi in #21642
- Fix shell completion enter handling by @atulagrwl in #21552
- fix(adbc): err use after free by @gishor in #21605
- Fix some Parquet fuzzer issues by @lnkuiper in #21635
- Re-organize WAL replay slightly, and correctly deal with empty checkpoint WAL files in WAL recovery by @Mytherin in #21645
- Warn instead of error when trying to persist geometry columns with CRS in old storage format by @Maxxen in #21649
- Avoid throwing an error when failing to bind views in
duckdb_columnsby @Mytherin in #21658 - Infer timestamps with timezone in read_json_auto by @leo-altertable in #21660
- Windows: remove prefix from canonical paths by @staticlibs in #21652
- CLI: Add .help shortcuts by @carlopi in #21662
- Internal #8553: Window TopN Except by @hawkfish in #21671
- Fix issue with struct filter on missing structs by @Mytherin in #21676
- Internal #7568: ASOF SEMI Test by @hawkfish in #21683
- Fix type check in
st_crsby @Maxxen in #21688 - Disable regular updates for geometry by @Maxxen in #21641
- Fix stoi crash in Arrow format string parsing for w: and +w: types by @yharby in #21692
- Test runner: Support replacement without dollar (
{i}instead of${i}) in loop iterators by @Mytherin in #21708 - Internal #8657: IEJoin Filter Sides by @hawkfish in #21721
- Add missing test for delta byte array by @ccfelius in #21714
- Fix variant shredding consistency issue by @Tishj in #21715
- TopNWindowElimination fixes by @d-justen in #21663
- Ignore
NULL/__HIVE_DEFAULT_PARTITION__when detecting types by @lnkuiper in #21731 - fix path test warnings by @benfleis in #21711
- Allow
SET DEFAULT / DROP DEFAULTfor tables that have dependencies by @Mytherin in #21729 - Add clickbench by @c-herrewijn in #21730
- Fix prepared temp-table INSERT invalidation after DROP by @wordhardqi in #21712
- Allow join filter pushdown through integral up/down casts by @lnkuiper in #21743
- Allow join filter pushdown for NOP collations by @lnkuiper in #21742
- counting fix by @artjomPlaunov in #21733
- [Variant] Re-add the removed
variant_legacy_encodingsetting by @Tishj in #21710 - Fix update plans when deserializing if type no longer supports regular updates by @Maxxen in #21718
- Re-instantiate dependencies of tables for
ALTER TABLE ... DROP COLUMNandALTER TABLE .. SET DEFAULTby @Mytherin in #21752 - Use correct error message for name conflicts between table and views by @JelteF in #21760
- Bump spatial by @taniabogatsch in #21781
- PEG parser strict mode: followup fixes and improvements by @Dtenwolde in #21709
- Fix DELETE RETURNING for rows inserted in the same transaction by @rustyconover in #21541
- Disable bloom filter pushdown through casts by @lnkuiper in #21792...
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
requireorder inInterpretedBenchmarkby @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
MultiFileReadermethod 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
MATERIALIZEDCTEs 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
mmapinBlockAllocatorby @lnkuiper in #21276 - Dynamically determine radix bits for external aggregation by @lnkuiper in #21274
- Avoid potential division by 0 in
PhysicalHashJoin::PrepareFinalizeby @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.1by @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.0ART storage by @taniabogatsch in #21270 - Add missing expression traversal in
merge intobinding 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
MarkBlockAsCheckpointedon 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
ParseExpressionListby @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 https://github.com/duckdb/duckdb/pull...
DuckDB v1.5.0 "Variegata"
This release of DuckDB is named "Variegata" after the paradise shelduck Tadorna Variegata, also known as the paradise duck, a species of Shelduck (a group of goose-like ducks), endemic to New Zealand.
Please also refer to the announcement blog post: https://duckdb.org/2026/03/09/announcing-duckdb-150.html
What's Changed
- Optimize LAST aggregate to iterate backward within batches by @xe-nvdk
- Allow user type with schema defined to have array bounds by @Dtenwolde in #18342
- Remove case-insensitive character from grammar files by @Dtenwolde in #18948
- Fix query() function error message for PIVOT statements without explicit IN clauses by @shivampr in #18900
- Merge v1.4-andium into main by @c-herrewijn in #18952
- [Dev] Some light code cleanup in
RemoveUnusedColumns::VisitOperatorby @Tishj in #18964 - Support renaming a database - ALTER DATABASE <> RENAME TO <> by @abramk in #18970
- V1.4 andium by @Mytherin in #18982
- Fix field id uniqueness for alter database by @abramk in #18988
- Fix unused variable warnings by @mlafeldt in #18913
- Avoid adding a TupleDataChunkPart with only one row. by @lance5401 in #18904
- Tiny fix for ColumnDataAllocator::ColumnDataAllocator by @baolinhuang in #18990
- Fixes for ALTER DATABASE - use serialization framework, and fix stringification of identifiers by @Mytherin in #18994
- Expected errors 2053 by @hmeriann in #18960
- Fix union semantics in recursive CTEs by @cryoEncryp in #19017
- Multifile
parquet_metadataand friends parallelism by @J-Meyers in #18854 - [Optimize] use StorageLock for CompressionFunction by @baolinhuang in #19028
- PEG grammar updates by @Dtenwolde in #19031
- Rework Compression Function registration to avoid grabbing locks by @Mytherin in #19045
- Merge v1.4 into main by @Mytherin in #19048
- [C-API] default to adding overload on conflict when registering functions by @Maxxen in #19036
- Destroy row groups in parallel by @Mytherin in #19053
- Switching core extension upload to dedicated credentials by @hannes in #19060
- CI: Increase stale bot timeout to 1 year by @szarnyasg in #19000
- Revert "set default value of MAIN_BRANCH_VERSIONING to false" by @c-herrewijn in #19057
- Fix extension load by @dentiny in #19079
- Change core extensions bucket name by @hannes in #19082
- Merge v1.4 into main by @Mytherin in #19098
- Allow directory override for extension build by @Mytherin in #19110
- Skip serialization of row_start in DataPointer when targeting latest storage by @Mytherin in #19111
- [C-API] Initial support for accessing file system by @Maxxen in #19086
- Rework
UNION (ALL)operators (SetOperationNode/LogicalSetOperation/PhysicalUnion) to have multiple children by @Mytherin in #19109 - pushdown filter when doing cross or lateral join with unnest by @DinosL in #19085
- Fix unholy interaction between
CREATE VIEWandCTEdefinitions by @kryonix in #19116 - Add support for
read_duckdb- a function that allows reading / globbing DuckDB database files by @Mytherin in #19108 - Fix typo by @szarnyasg in #19130
- fix: check tree depth and flatten dep join for custom operator extension by @Wal8800 in #19094
- During optimistic writing, gather N row groups and write them at the same time column-at-a-time by @Mytherin in #19118
- Remove unused code by @szarnyasg in #19134
- Add support for late materialization and filter pushdown to read_duckdb by @Mytherin in #19145
- Move storage block prefetching to an option instead of baking in testing during ALTERNATIVE_VERIFY + add a test config for this option by @Mytherin in #19146
- Introduce
parser_override_function_tby @Dtenwolde in #19126 - Perform deduplication based on join_keys when building ht by @tianjq16 in #19097
- Print help to stdout by @staticlibs in #19170
- Validate filesystem registration by @dentiny in #19168
- Fix missing replacement scan code for CTEs by @kryonix in #19159
- Correctly set row start in WAL replay by @Mytherin in #19192
- Use a
PartialBlockManagerper column, instead of sharing one over the entire row group by @Mytherin in #19194 - Internal #5380: AsOf Join Pipeline by @hawkfish in #19169
- Cross and lateral join pushdown with unnest or json - update by @DinosL in #19152
- Missing error messages for test cases by @hmeriann in #19129
- [Profiling] Move
EXTRA_INFOinto the metrics map by @maiadegraaf in #19124 - Common Subplan Elimination by @lnkuiper in #19080
GEOMETRYRework: Part 1 - Logical Type by @Maxxen in #19136- [Parquet] Implement (unshredded)
VARIANTsupport forCOPY TOparquet by @Tishj in #19125 - Add more missing error messages to test cases by @hmeriann in #19210
- [CI] - Fix failing
Extension updating testNightlyTests job by cleaning up some space on the runner by @hmeriann in #19214 - Inconsistent semicolon handling by @Dtenwolde in #19199
- Internal #5383: Range Join Sorting by @hawkfish in #19174
- [Profiling] Add QueryContext to more functions, for Reads by @maiadegraaf in #18726
- Merge v1.4-andium into main by @Maxxen in #19225
- [shell] Fix tilde parsing for .once statement by @dentiny in #19254
- Partially remove BoundQueryNode - have Bind directly emit a BoundStatement by @Mytherin in #19289
- Binder clean-up by @Mytherin in #19293
- test: add test for CREATE TABLE with
my_schema.my_enum[]by @NickCrews in #19296 - Fix uncaught exception in test_empty_profiling_settings.test by @maiadegraaf in #19286
GEOMETRYRework: Part 2 - Statistics by @Maxxen in #19203- Internal #5380: AsOf Sorting Conversion by @hawkfish in #19278
- Add option for opt-in to parser override by @Dtenwolde in #19181
- Remove BoundTableRef and make binding a TableRef directly return a BoundStatement by @Mytherin in #19294
- Rewrite Grouped Top-N Window Functions To Aggregations by @d-justen in #19280
- Perform optimistic reads while filling gaps in CachingFileSystem by @carlopi in #19122
- Issue #19027: AsOf Join Predicates by @hawkfish in #19316
- Enable experimental metadata re-use by default by @Mytherin in #19317
- Binder: BoundQueryNode cleanup by @Mytherin in #19322
- Remove old sort code by @lnkuiper in #19321
- [Parquet] Implement shredded
VARIANTsupport for COPY TO parquet by @Tishj in #19219 - Merge andium into main by @Tishj in #19325
- [C API] Expose column count and type for table description by @taniabogatsch in #19334
- Relocate the python sqllogic code to the dedicated repository by @Tishj in #19340
- Binder: Rework the way set operations work so that we can use the standard binding flow by @Mytherin in #19342
- Rework CTE binding: remove CTENode, and bind CommonTableExpressionMap directly instead by @Mytherin in #19351
- Avoid keeping shared ptr to ClientContext in QueryContext by @Mytherin in #19353
- Internal #6190: AsOf Threading by @hawkfish in #19328
- [Indexes] Buffer Managed Indexes Part 4: Segment Handles f...
v1.4.4 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.4.3. Please excuse the erroneous release earlier.
What's Changed
- Cast Fix: Correctly handle negative exponent with a number with a decimal in VARCHAR -> INTEGER cast by @Mytherin in #20098
- [Storage] Fix NULL filter check for constant segments by @Tishj in #20103
- fixing staged upload for install.duckdb.org - hopefully by @hannes in #20104
- Remove undefined loop by @artjomPlaunov in #20105
- [Test] Adjust concurrent attach-detach test to expect write-write conflict by @taniabogatsch in #20108
- Fix ALIAS function in filter pushdown to preserve column aliases(#20008) by @henry8128 in #20106
- Headers missing from http logs by @samansmink in #20030
- Bumping httpfs to include duckdb/duckdb-httpfs#174 by @carlopi in #20145
- Issue #20136: Secondary IGNORE NULLS by @hawkfish in #20153
- Fix minio nightly tests by @c-herrewijn in #20132
- Fix use-after-free in mode aggregate Combine function by @victor-ab in #20146
- Only pushdown varchar if the arrow type is not a string view by @evertlammerts in #20165
- Quote filters in adbc_get_objects by @evertlammerts in #20172
- Issue #20156: Streaming Window Unions by @hawkfish in #20191
- MergeInto: correctly clean-up buffer and handle non trivial GetData by @carlopi in #20163
- Fix extentension-ci-tools to latest release version in the v1.4-andium branch by @carlopi in #20227
- [Chore] Clean up CI nightly run to prevent time outs by @taniabogatsch in #20150
- Bump Julia to v1.4.3 by @maiadegraaf in #20248
- Internal #6881: 2025c Time Zones by @hawkfish in #20258
- Split statements by semicolon by @Dtenwolde in #20174
- [chore] Remove
numeric_cast.hppimport and other tidy stuff by @taniabogatsch in #20278 - [chore] Reduce latency of VARCHAR index creation test by @taniabogatsch in #20277
- Reuse correct table-level metadata during checkpoints by @ywelsch in #20267
- Fix view resolution not being stable if the referenced table lives in a different schema by @Tishj in #20260
- ConstantOrNullFunction input validity mask overwrite bugfix by @artjomPlaunov in #20283
- dbgen: use TaskExecutor framework by @Mytherin in #20284
- fix(adbc): return error when setting an empty sql query by @gishor in #20071
- Bump iceberg, and add wasm platforms! by @carlopi in #20205
- _extension_distribution: Pin to
v1.4-andiumbranch of extension-ci-tools by @carlopi in #20294 - Optimize prepared statement parameter lookups by @EtgarDev in #20252
- Update
VectorTypeinComputePartitionIndicesby @lnkuiper in #20343 - Add some defensive programming in
RadixPartitionedHashTable::CombineandRadixPartitionedHashTable::Finalizeby @lnkuiper in #20342 - Increase reserved size for paths in SetPathsInternal by @Flogex in #20340
- Use UTF-16 console output in Windows shell (1.4) by @staticlibs in #20339
- Force repartitioning in
RadixPartitionedHashTable::Combineby @lnkuiper in #20357 - Fixup comparison to wrong iterator on abdc's driver by @carlopi in #20360
- [chore] dsdgen generation signed integer overflow fix by @taniabogatsch in #20279
- Give preference do variables set in config by @pdet in #20396
- Add QueryContext also to Write(void *buffer, idx_t nr_bytes), so that BytesWritten are updated also there by @carlopi in #20393
- Fix Issue #20233: fix function chain in qualify by @ArNine in #20302
- Backport client data cleanup by @taniabogatsch in #20403
- Add v1.4.4 to Storage Version by @maiadegraaf in #20404
- Parquet Reader: Ignore invalid UTF8 in string stats, instead of throwing an error by @Mytherin in #20405
- Don't add a semicolon to final query when splitting statements by @Dtenwolde in #20401
- Fixup BRANCHES_TO_BE_CACHED, vars are not available on PRs, so env it is by @carlopi in #20411
- [Fix] Defensive infinite loop guard and UTF-8 check in C API by @taniabogatsch in #20348
- Add ducklake, httpfs and iceberg tests so they are run in CI by @carlopi in #20319
- [Stats]
date_truncstat propagation fix by @Tishj in #20421 - Refactor allowed path sanitize by @hannes in #20346
- Issue #20413: ASOF SEMI/ANTI Bindings by @hawkfish in #20433
- Fix #20410: fix for RIGHT SEMI/ANTI - cannot fully label chain as found if there are non-equality predicates present in the join condition by @Mytherin in #20435
- [Fix] Misaligned size in ART prefix count by @taniabogatsch in #20455
- Wrap ccache in own action by @carlopi in #20466
- [Chore] Add
ORDER BYtoAS OFtest by @taniabogatsch in #20465 - Fix segfault in hive partitioning with NULL values by @Schwarf in #20468
- Nightly test encryption fixes by @ccfelius in #20461
- [C API] Fix error data creation by @taniabogatsch in #20451
- Skip concurrent_encrypted_attach due to race in autoloading httpfs by @carlopi in #20471
- CI fixup: Comparisons needs to be done via strings (since input via workflow_call is a string) by @carlopi in #20464
- Add unity_catalog to extensions built by duckdb/duckdb by @carlopi in #20445
- Invert the setup of ccache and cleanup_runner by @carlopi in #20429
- bump spatial for andium by @Maxxen in #20479
- Reclaim disk space on MacOS runners by @lnkuiper in #20493
- Adding secure clear functions by @ccfelius in #20285
- rewrite unaligned scan by @artjomPlaunov in #20474
- Issue #20470: TIMESTAMPTZ to DATE by @hawkfish in #20498
- Reset cached dictionaries in
TRYexpression by @Maxxen in #20452 - [Copy] Fix #20324
partition_byoption binding by @Tishj in #20509 - Bump multiple extensions by @maiadegraaf in #20504
- update azure ref for v1.4-andium by @benfleis in #20506
- [Fix] Directly retrieve the logical column index during
MERGE INTObinding by @taniabogatsch in #20503 - Sanitize pragmas by @samansmink in #20514
- Bump httpfs, ducklake and postgres by @carlopi in #20518
- Revert vortex bump for v1.4.4 by @taniabogatsch in #20527
- Bump VSS by @taniabogatsch in #20542
- Bump Excel by @maiadegraaf in #20540
- Fix Issue #20233: Fix function chain in having and merge to v1.4 by @ArNine in #20532
- bump iceberg by @Tmonster in #20549
- Bump Iceberg v1.4 by @Tmonster in #20604
- Fix KeyValueSecretReader init by @NiclasHaderer in #20620
- Fail fast extensions by @carlopi in #20605
New Contributors
- @victor-ab made their first contribution in #20146
- @gishor made their first contribution in #20071
Full Changelog: v1.4.3...v1.4.4
v1.4.3 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.4.2.
What's Changed
- implement proper equals for table functions by @Maxxen in #19722
- Fix behavior for HAVING clause without a GROUP BY by @Tishj in #19739
- Remove httpfs patches and bump by @carlopi in #19763
- Correctly use a lock when accessing the EncryptionKeyManager by @Mytherin in #19772
- Bump iceberg to now default available extension by @carlopi in #19764
- Extract all column bindings of json each function by @Tmonster in #19766
- constraint violation bug fix by @artjomPlaunov in #19776
- Avoid binding macro arguments for untyped macros by @lnkuiper in #19779
- It should probably be
${EXTENSION_CONFIG_BUILD}instead ofEXTENSION_CONFIG_BUILDby @hannes in #19694 - Fix #19575: Fix illegal utf8 character by @flashmouse in #19699
- chore: bump vortex to 0.56.0 by @0ax1 in #19815
- PositionalScan: handle also HAVE_MORE_OUTPUT + empty chunk via iteration by @carlopi in #19824
- AttachDatabase: first set whether file is remote, then do the rest by @carlopi in #19826
- Add CacheBehavior::AUTOMATIC to DBInstanceCache that automatically does the right thing™ by @Mytherin in #19841
- Reuse metadata even in the presence of deletes by @ywelsch in #19823
- DuckIndexScanState::TableScanFunc, split into 2 explicit phases by @carlopi in #19838
- Bump httpfs and iceberg by @carlopi in #19859
- Keep cte_root alive while binding materialized CTEs in MERGE INTO children by @Mytherin in #19863
- CI Cleanup (#19840) by @yan-alex in #19857
- Fix #19517: preserve relation name for table-qualified star LIKE expression by @henry8128 in #19887
- avoid underflow/"inf" loop while reporting unittest summary (backport… by @benfleis in #19900
- Fixes incorrect handing of APPROX_QUANTILE TIME by @Damon07 in #19891
- Add v1.4.3 to Storage Version by @maiadegraaf in #19907
- clean up tmp files while building extensions by @c-herrewijn in #19908
- Bump: ducklake, mysql_scanner by @maiadegraaf in #19910
- remove large limit optimization whenever there is a filter by @guillesd in #19911
- free disk space in Upload Extensions job by @c-herrewijn in #19912
- [Compression] Prevent overriding
COMPRESSION_EMPTYwithCOMPRESSION_CONSTANTby @Tishj in #19913 - Make
make tidy-check-diffcompare against base branch, instead of always comparing againstorigin/mainby @Mytherin in #19917 - More testing for appender and attach-detach by @taniabogatsch in #19708
- Script to release a extension manually by @samansmink in #19881
- Assert that result types match with column data collection when fetching data by @pdet in #19750
- No longer auto-enable profiling on DEBUG mode by @maiadegraaf in #19931
- Fix optimizer incorrectly remove ORDER BY clause from aggregates by @tianjq16 in #19925
- Backport revert append fixes by @Mytherin in #19941
- Bump: spatial by @Maxxen in #19943
- Issue #19916: WASM Time Zones by @hawkfish in #19918
- Fix correlated column binding in ConstantBinder by @d-justen in #19945
- [chore] Increase slow threshold by @taniabogatsch in #19965
- [Parquet] Fix prepared copy option parameter by @Tishj in #19966
- [TestConfig] Fix
verify_fetch_rowconfig, reduce duplication inskip_testsby @Tishj in #19967 - remove sha from artifacts by @c-herrewijn in #19957
- Unbound index binding with context by @artjomPlaunov in #19953
- [Fix] Bug in
FetchRowafter update on indexed table withdict_fsstcompression by @taniabogatsch in #19970 - Null assertion on denormalized_table argument by @Dtenwolde in #19947
- [Art][Wal]Unbound index allocations by @artjomPlaunov in #19901
- No sampling over 281TB by @Tmonster in #19978
- Take in consideration if the sniffer used unstrictness while selecting candidates by @pdet in #20005
- [CSV] Avoid throwing unnecessary errors on strict mode by @pdet in #20007
- [Compression] Fix an issue with NULL updates to a column compressed with DICT_FSST by @Tishj in #20009
- Bump: delta, ducklake, iceberg by @maiadegraaf in #20012
- add unity_catalog, update delta by @samansmink in #20019
- Bump spatial by @staticlibs in #20020
- Retag #19821 to v1.4 - Use PLAIN_DICTIONARY for Parquet version 1 by @pdet in #20024
- Fix INSERT OR REPLACE BY NAME with partial columns(#19845) by @henry8128 in #19989
- Bump MySQL scanner by @staticlibs in #20025
- Windows must sample less by @Tmonster in #20018
- Issue #20015: Streaming Window Sequence by @hawkfish in #20027
- bump iceberg by @Tmonster in #20032
- Fix #20014: correctly use numeric_limits::min for NumericLimits::Min so that stats are initialized to -infinity for floating points by @Mytherin in #20039
- Enable windows_arm64 arch for main extensions by @staticlibs in #20004
- Fix mark join decorrelation by @kryonix in #20033
- propagate gate status in Node4::DeleteChild by @artjomPlaunov in #20044
- Bump: httpfs by @samansmink in #20036
- Bump ducklake by @pdet in #20054
- bump azure to v1.4.3 by @benfleis in #20057
- Bump extensions by @samansmink in #20055
- Fix unnecessary dependent join rewrite by @kryonix in #20048
- Version tag for local files for robust external file cache validation by @lnkuiper in #20058
- backport runner cleanup action by @hannes in #20085
Full Changelog: v1.4.2...v1.4.3
v1.4.2 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.4.1. PR #19716 addresses the issues raised in CVE-2025-64429. Users of the DuckDB encryption feature are encouraged to update.
What's Changed
- bump duckdb-azure ref for 1.4.1 by @benfleis in #19275
- Fix regex optimization to remove flags when converting to contains by @mlafeldt in #19290
- feat: Fix length of sort keys by @krlmlr in #19260
- Pass lambda bindings to next binder by @Dtenwolde in #19144
- bump Julia to v1.4.1 by @c-herrewijn in #19306
- Use cross-compilation for static libs on OSX by @hannes in #19304
- Allow multiple read-only attaches to the same database across database instances by @Mytherin in #19319
- hugeint_t fixes by @carlopi in #19318
- Use CMAKE__COMPILER_LAUNCHER by @evertlammerts in #19326
- Add settings field to test config by @Mytherin in #19330
- Keep track of which database managers have which databases attached in the DatabaseFilePathManager by @Mytherin in #19338
- Bugfixes by @lnkuiper in #19329
- skip several ci jobs on prs that only bump extensions by @samansmink in #19249
- [C API] bind_value out of range fix by @taniabogatsch in #19348
- Destroy TaskNotifier prior to calling FinishTask by @Mytherin in #19373
- Remove zip bombs by @Mytherin in #19380
- Avoid calling shared_from_this() and instead use the passed in ClientContext in buffered data by @Mytherin in #19379
- add test tag support [vfs integration tests p1] by @benfleis in #19331
- Throw if non-
VARCHARkey is passed tojson_objectby @lnkuiper in #19365 - BUGFIX: Silent failure to write row groups with large lists by @J-Meyers in #19376
- Fixes for CTE (de)serialization compatibility with older versions by @Mytherin in #19393
- Fix #18139: correctly initialize flush size in MemoryStream, and re-use writer states by @Mytherin in #19398
- Fixup Kalman fiter: bound it's (0, scale_factor), not (0, 1) by @carlopi in #19395
- Fix StringDecompress for hugeint_t values by @ywelsch in #19403
- Fix #19211: make INSERT OR IGNORE correctly handle multiple constraints by @Mytherin in #19409
- Issue #19386: ICU TZDEFAULT by @hawkfish in #19413
- Fix issue in MetadataManager triggered when doing concurrent reads while checkpointing, and rework concurrent attach / detach test by @Mytherin in #19424
- ADBC fix: escape schema, table and column identifiers by @evertlammerts in #19407
- v1.4: Only serialize CTE nodes when MATERIALIZED is specified by @Mytherin in #19420
- Add forwards compatibility tests to CI by @Mytherin in #19432
- Internal #6168: Unsupported Correlated Binds by @hawkfish in #19431
- Don't pull up filters through
DISTINCT ONand makeenumcasts in Parquet safe (bugfixes) by @lnkuiper in #19406 - Get table bindings for all operators under a logical get if the logical get function is an unnest by @Tmonster in #19467
- WASM #1897: UTC Offset Support by @hawkfish in #19464
- Add tests for nested lambda bindings by @Dtenwolde in #19453
- [Compression] Fix issue in ZSTD decompression related to mis-interpreted segment offsets by @Tishj in #19475
- vfs integration tests p2 - update (env) vars and tests by @benfleis in #19428
- CI Fix: clear benchmark cache between runs by @Mytherin in #19508
- Make
DatabaseInstance::log_manageraunique_ptrby @Flogex in #19471 - Support non-standard NULL in Parquet again by @Mytherin in #19523
- Bump: inet by @samansmink in #19526
- Bump multiple extensions by @samansmink in #19522
- add upcoming patch release to internal versions by @samansmink in #19525
- Add test that either 'latest' or 'vX.Y.Z' are supported STORAGE_VERSIONs by @carlopi in #19527
- Moving staging to cf and uploading to install bucket by @hannes in #19539
- Creating separate OSX cli binaries for each arch by @hannes in #19538
- [Dev] Disable the use of
ZSTDif the block_manager is theInMemoryBlockManagerby @Tishj in #19543 - Follow up to staging move by @hannes in #19551
- Bugfixes: Parquet JSON+DELTA_LENGTH_BYTE_ARRAY and sorting iterator by @lnkuiper in #19556
- [ported from main] Fix bug initializing std::vector for column names by @evertlammerts in #19555
- Disable jemalloc on BSD by @lnkuiper in #19560
- Fix race condition between
AppendandScanby @Captain32 in #19571 - Release relevant tests to still be run on all builds by @carlopi in #19559
- fix inconsistent behavior in remote read_file/blob, and prevent union… by @Maxxen in #19531
- [v1.4-andium] Add Profiler output to logger interface by @carlopi in #19572
- Fix edge case in uncompressed validity scan with offset and fix off-by-one in ArrayColumnData::Select by @Maxxen in #19567
- Skip compiling remote optimizer test when TSAN Is enabled by @Mytherin in #19590
- Wal index deletes by @artjomPlaunov in #19477
- add vortex external extension by @samansmink in #19580
- Avoid eagerly resolving the next on-disk pointer in the MetadataReader, as that pointer might not always be valid by @Mytherin in #19588
- [DevEx] Improve error message when FROM clause is omitted by @Tishj in #18995
- bump iceberg by @Tmonster in #19618
- Improve error message around compression type deprecation/availability checks by @Tishj in #19619
- Increase cast-cost of old-style implicit cast to string by @Maxxen in #19621
- Try to prevent overshooting of
FILE_SIZE_BYTESby pre-emptively increasing bytes written in Parquet writer by @lnkuiper in #19622 - Bump: spatial by @Maxxen in #19620
- Detect invalid merge into action and throw exception by @Mytherin in #19636
- Fix #19455: correctly extract root table in merge into when running ajoin that contains single-sided predicates that are transformed into filters by @Mytherin in #19637
- Remove
FlushAllfromDETACHby @lnkuiper in #19644 - Bump MySQL scanner by @staticlibs in #19643
- Enable running all extensions tests as part of the build step by @carlopi in #19631
- Always remember extra_metadata_blocks when checkpointing by @ywelsch in #19639
- duckdb_logs_parsed to do case-insensitive matching by @carlopi in #19669
- Categorize ParseLogMessage as CAN_THROW_RUNTIME_ERROR by @carlopi in #19672
- Fixup linking for LLVM by @carlopi in #19668
- Log total probe matches in hash join by @lnkuiper in #19683
- Fix InsertRelation on attached database by @evertlammerts in #19583
- Add request timing to HTTP log by @samansmink in #19691
- Add missing query location to blob cast by @Mytherin in #19689
- Bump: aws, ducklake, httpfs, iceberg by @samansmink in #19654
- Bump: delta, ducklake, httpfs by @samansmink in #19715
- Fix #19355: correctly resolve subquery in MERGE INTO action condition by @Mytherin in #19720
- Fix #19700: correctly sort output selection vector in nested selection operations by @Mytherin in #19718
- Bump httpfs and resume testing on Wind...
v1.4.1 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.4.0.
What's Changed
- Fix attach to right DB when using DuckLake by @pdet in #19011
- set default value of MAIN_BRANCH_VERSIONING to false by @c-herrewijn in #19014
- ComplexJSON: parse all valid JSON correctly by @Mytherin in #19024
- Issue #19016: ICU Offset Parsing by @hawkfish in #19029
- Throw if we detect a quoted new line with the null padding set in parallel mode by @pdet in #19012
- Bump iceberg & ducklake by @carlopi in #19037
- Build Fix:
unordered_map<enum classis not supported in all compilers, usemap<instead by @Mytherin in #19046 - Disable emitting versioned libraries by default by @Mytherin in #19047
- Re-add aliased settings to duckdb_settings() view, and some fixes for aliased settings by @Mytherin in #19050
- Fix threading issues in metadata manager, and expand concurrent attach / detach fuzz test by @Mytherin in #19054
- Correctly re-align all child column segments of the ColumnData on Deserialize, and add logging to checkpoints by @Mytherin in #19055
- [unittest] Fixes so that '{BASE_TEST_NAME}' can be used within --on-new-connection by @carlopi in #19056
- add a bunch of expected error messages to old macro tests and fix iss… by @lnkuiper in #19042
- Always execute cast and try_cast if they are not invertible by @DinosL in #19010
- Switching core extension upload to dedicated credentials by @hannes in #19061
- Include BeginQuery in latency metric by @taniabogatsch in #19064
- [Dev] Bit of code cleanup in (parquet) ColumnWriter by @Tishj in #19063
- Add config: one_schema_per_test.json by @carlopi in #19059
- Change bucket name for core extensions by @hannes in #19083
- Moved test data into testing dir by @NiclasHaderer in #19102
- Bump httpfs by @carlopi in #19104
- Fix example syntax in
variant_typeof()function by @krlmlr in #18977 - Avoid throwing on unset extension setting by @Mytherin in #19117
- Fix internal issue 5975 by @lnkuiper in #19101
- Properly initialize
StringStatsin Parquet reader by @lnkuiper in #19139 - Remove HTTPFS tests and setup scripts by @Mytherin in #19140
- Validate JSON in Parquet reader by @lnkuiper in #19143
- Fix bug in merge into when condition is in parenthesis by @pdet in #19137
- Allow implicit casts from
JSON[]toJSONagain by @lnkuiper in #19141 - [ci] Change logic for saving caches: Github variable that decides what gets cached by @carlopi in #19150
- Fix handling of quotes in ToString() of search_path in current_setting by @Mytherin in #19162
- Delay throwing
NotImplementedExceptioninExpressionBinderby @lnkuiper in #19153 - Issue #18303: AsOf NLJ Nulls by @hawkfish in #19173
- HTTPUtil: response might be null, perform check by @carlopi in #19179
- Handle malformed schema index in Parquet reader by @Mytherin in #19191
- ATTACH IF NOT EXISTS: avoid looping waiting for DETACH to finish, wait only for an ATTACH operation to finish by @Mytherin in #19193
- Implement duckdb_connection_count table function by @taniabogatsch in #19187
- Disable ALP for non-default block sizes by @taniabogatsch in #19197
- Check for unresolved parameters when binding
CREATE MACRO ... AS TABLEby @lnkuiper in #19196 - https://duckdb-blobs.s3.amazonaws.com -> https://blobs.duckdb.org by @carlopi in #19206
- [chore] Attempt at restoring workflow for MinGW Static libs by @carlopi in #19205
- Simple no default region return 301 response by @Tmonster in #19087
- [Fix] Correctly reset the gate status during ART merging by @taniabogatsch in #19204
- build spatial extension for mingw by @c-herrewijn in #19207
- Fixup templated version of TryGetSecretKeyOrSetting by @carlopi in #19218
- Bump: delta by @samansmink in #19220
- Autoloading helper file system: allow either autoloading or proper errors in more file operations by @carlopi in #19198
- Eargerly destroy sort buffers in Window by @lnkuiper in #19224
- [Transaction] Delete and drop of a table can now happen in the same transaction without error by @Tishj in #18918
- PRAGMA's MissingEntry: Suggest CALL might be an option by @carlopi in #18815
- Bump: aws, ducklake, iceberg by @samansmink in #19228
- Issue 18603 by @Tmonster in #19227
- Bump DuckLake to latest of V1.4 by @pdet in #19237
- Bump mysql and sqlite by @staticlibs in #19240
- Don't write parquet-native
GEOMETRYby default, add option to control GeoParquet version by @Maxxen in #19244 - When executing a relation, generate a query to set if it is not a query relation by @Mytherin in #19234
- add support for writing geoparquet with v2 metadata too by @Maxxen in #19246
- Bump: iceberg by @samansmink in #19250
- Bump: avro, httpfs by @samansmink in #19248
- bump duckdb-azure ref for 1.4.1 by @benfleis in #19275
Full Changelog: v1.4.0...v1.4.1
DuckDB 1.4.0 "Andium"
This release of DuckDB is named "Andium" after Anas Andium, a species of duck that lives in the Andes mountains in South America.
Please also refer to the announcement blog post: https://duckdb.org/2025/09/16/announcing-duckdb-140.html
What's Changed
- Python package devexp improvements by @evertlammerts in #17483
- change exception type to not be an internal exception by @samansmink in #17551
- Remove redundant code path in the ConflictManager by @taniabogatsch in #17562
- Add support for ToSqlString for union types by @wmTJc9IK0Q in #17513
- Update function descriptions and examples by @c-herrewijn in #17132
- Move query profiler's EndQuery after commit/rollback by @taniabogatsch in #17595
- fix extension troubleshooting link by @simon0191 in #17616
- C API tidying by @taniabogatsch in #17623
- bump DuckDB_jll to v1.3.0 by @c-herrewijn in #17677
- Add rowsort in generate_series test #43 by @jeewonhh in #17675
- [C API] Expose duckdb_scalar_function_bind_get_extra_info by @taniabogatsch in #17666
- Enable profiling output for all operator types by @taniabogatsch in #17665
- Output hashes in unittest and fix order by @niykko in #17664
- New Sorting Implementation by @lnkuiper in #17584
- Merge v1.3-ossivalis into main by @Mytherin in #17690
- Issue #17040: FILL Window Function by @hawkfish in #17686
- ClientBufferManager wrapper to access the client context in the buffer manager by @taniabogatsch in #17699
- Revert "set default for MAIN_BRANCH_VERSIONING to false" by @carlopi in #17708
- Sorting followup by @lnkuiper in #17717
- Correctly setting the delim offset by @Damon07 in #17716
- fix linux extension ci by @samansmink in #17720
- Aggregation performance by @lnkuiper in #17718
- Fix windows-2025 build errors by @adsharma in #17726
- [SQLLogicTester] Introduce
reset label <query label>in the tester by @Tishj in #17729 - Adding additional authenticated data for encryption by @ccfelius in #17508
- csv_scanner: correct code comment by @Djfe in #17735
- Deprecate windows-2019 runners by @hannes in #17745
- re-add httpfs apply_patches by @samansmink in #17755
- Rename decorator from test_nulls to null_test_parameters by @Mytherin in #17760
- [CAPI] Expose ErrorData by @taniabogatsch in #17722
- Expose file_size_bytes and footer_size in parquet_file_metadata by @gijshendriksen in #17750
- Pass
ExtensionLoaderwhen loading extensions, change extension entry function by @Maxxen in #17772 - Support glibc 2.28 environments by @James-Gilbert- in #17776
- Mark Upper/LowerComparisonType as const by @JelteF in #17773
- [Indexes] Buffer-managed indexes part 1: segment handles by @taniabogatsch in #17758
- [Julia] api docs improvements by @tqml in #15645
- Ensure we use the same layout in
RadixPartitionedHashTableandGroupedAggregateHashTableby @lnkuiper in #17790 - [Profiling] Propagate the ClientContext into file handle writes by @taniabogatsch in #17754
- Fix propagatesNullValues for case expr by @suibianwanwank in #17796
- Add qualified parameter to Python GetTableNames API by @evertlammerts in #17797
- Merge v1.3 into main by @Mytherin in #17806
- Pushdown pivot filter by @flashmouse in #17801
- Replace string for const data ptr in encryption api by @ccfelius in #17825
- Merge130 by @carlopi in #17833
- fix: escape using_columns on JoinRef::ToString by @akoshchiy in #17839
- Fix ICE with Windows ARM64 by @staticlibs in #17844
- Merge v1.3 into main by @Mytherin in #17851
- Add
duckdb_typecolumn to parquet_schema by @Mytherin in #17852 - Internal #4991: Remove Epoch_MS(MS) by @hawkfish in #17816
- #17853 Enable flexible page sizes and update Android NDK to r27 in workflow. by @aprock in #17854
- [Indexes] Buffer-managed indexes part 2: segment handle for base nodes by @taniabogatsch in #17828
- Function Serialization: adapt to removal of overloads by explicitly casting if argument types have changed by @Mytherin in #17864
- julia: add missing methods from C-API by @tqml in #17733
- Issue #17153: Window Order Columns by @hawkfish in #17835
- Issue #17040: FILL Secondary Sorts by @hawkfish in #17821
- Add STRUCT to MAP cast function by @evertlammerts in #17799
- Issue #17849: Test FILL Duplicates by @hawkfish in #17869
- Add GenAI policy by @szarnyasg in #17882
- Update function descriptions and examples for list, array, lambda functions by @c-herrewijn in #17886
- Issue #17861: FILL Argument Types by @hawkfish in #17888
- Reword GenAI policy by @szarnyasg in #17895
- Use an arena linked list for the physical operator children by @taniabogatsch in #17748
- Make CTE Materialization the Default Instead of Inlining by @kryonix in #17459
- Merge v1.3 into main by @Mytherin in #17897
- Leverage
VectorTypeinColumnDataCollectionby @lnkuiper in #17881 - Fix empty BP block when writing parquet by @platypii in #17929
- fix use after free in adbc on invalid stmt by @ruslandoga in #17927
- Do not dispatch JDBC/ODBC jobs in release CI runs by @staticlibs in #17937
- Block based encryption by @ccfelius in #17275
- Unittester failures summary by @hmeriann in #16833
- Add v1.3-ossivalis to Cross version workflow by @hmeriann in #17906
- [CI Nightly Fix] Skip logging test if not standard block size by @taniabogatsch in #17957
- Visual Studio 17 (2022) fixes by @edouarda in #17948
- [Nested] Add
struct_positionandstruct_containsfunctions by @maiadegraaf in #17819 - Enable building spatial and encodings extensions by @staticlibs in #17960
- [Nested] Optimize structs in
LIST_VALUEby @maiadegraaf in #17169 - Unit Tester Configuration by @Mytherin in #17972
- [nested] Allow fixed-size arrays to be unnested by @maiadegraaf in #17968
- Merge v1.3-ossivalis into main by @Mytherin in #17973
- [CI] Skip some workflows when updating out of tree extensions SHA by @hmeriann in #17949
- Issue #5144: AsOf Join Threshold by @hawkfish in #17979
- [Fix] Reset profiling info before preparing a query by @taniabogatsch in #17940
- Flag to disable database invalidation by @taniabogatsch in #17938
- Issue #5123: make_timestamp_ms by @hawkfish in #17908
- Rework extension loading to go through thread-safe ExtensionManager by @Mytherin in #17994
- Implement consumption and production of Arrow Binary View by @pdet in #17975
- Add support to produce Polars Lazy Dataframes by @pdet in #17947
- c-api to copy vector with selection by @abramk in #17870
- Fix #18007: correctly execute expressions with pivot operator by @Mytherin in #18020
- [Chore] Minor conflict manager refactoring by @taniabogatsch in #18015
- Remove Linux (32 Bit) job by @hmeriann in https://gith...
v1.3.2 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.3.1. There are no new major features, just bug fixes. Database files created by DuckDB versions all the way back to v0.9 can be read by this version.
What's Changed
- bump julia to v1.3.1 by @c-herrewijn in #17966
- [CI] adding DONT_LINK parameter to the test extension configuration for
inetextension by @hmeriann in #17967 - Eviction queue: Sort purged nodes and bulk re-add by @lnkuiper in #17913
- Grab lock before finalizing dynamic filters by @lnkuiper in #17964
- Issue #5144: AsOf Join Threshold by @hawkfish in #17978
- Fix for IsDenseRange check in filter_combiner by @pdet in #17988
- Use SharedLockTable in DataTable::Fetch by @Mytherin in #17983
- On Windows CI use zip from msys2 instead of choco by @staticlibs in #17993
- [FIX] Arrow ArrowBool8 Extension Type Add Validity Type Check by @rustyconover in #18005
- Make test more lenient by @lnkuiper in #18022
- Print internal exception stack traces on failed transaction rollback by @taniabogatsch in #18023
- More fixes around GetDatabases by @taniabogatsch in #18024
- [Fix] Binding error when resolving lambdas with a struct alias by @taniabogatsch in #18014
- Disable constexpr std::mutex on Windows by @staticlibs in #17991
- Use correct expression function after filter pushdown by @Tmonster in #17860
- Implement bulk enqueue for non-concurrent queue by @lnkuiper in #18032
- Bring back libduckdb-src.zip as release artifact by @mlafeldt in #18019
- Issue #18035: Zero Fill TIMESTAMP_NS by @hawkfish in #18045
- Fix handling dynamic table filters in RemoveUnusedColumns by @Damon07 in #18033
- Fix incorrect results in index scan by @taniabogatsch in #18058
- bump spatial (v1.3) by @Maxxen in #18059
- constant or null can be replaced when argument is a bound column reg by @Tmonster in #18018
- Issue #18047: TIMESTAMP_TZ Upcast Costs by @hawkfish in #18064
- Properly handle empty RHS in IE Join by @lnkuiper in #18067
- Avoid going too in-depth while computing join order by @carlopi in #17904
- Main.yml: Move very long job from debug to release with
-DDEBUGandFORCE_ASSERTby @carlopi in #18081 - Run Python workflow against both Python 3.9 and 3.13 on PR to ensure … by @evertlammerts in #18080
- fix statistics propagation for anti-joins on empty tables by @bradynwalsh in #17439
- OSX.yml: Move from using debug builds to release + DDEBUG + FORCE_ASSERT by @carlopi in #18102
- Fix copy constructor in SetVariableStatement by @staticlibs in #18101
- [Parquet] Add write_bloom_filter flag to allow disabling of bloom filters by @Mytherin in #18093
- Add Stack Trace marker to stack trace by @JelteF in #18089
- Add missing
INT128to decimal Parquet reader switch by @lnkuiper in #18104 - shared_ptr& must be reached from FileOpener by @carlopi in #18107
- Cleanup on correct branch (1.3-ossivalis) instead of v1.2-histrionicus by @carlopi in #18111
- Refactor extracting expressions for dynamic index scans by @lnkuiper in #18095
- Add v1.3.2 to version_map.json and generate storage_info.cpp by @hmeriann in #18112
- CI: Actually correctly skip building unnecessary extensions by @carlopi in #18119
- Absorb patch from #18107 by @carlopi in #18114
- Use unsigned hugeint for compressed materialization strings by @lnkuiper in #18128
- Throw internal exception on corrupted roaring bitmap offsets by @taniabogatsch in #18130
- Allow .tsv as an accepted db file by @pdet in #18133
- Fixing CSV Fuzzer issues by @pdet in #18134
- Bump iceberg for 1.3.2, from @Tishj, and bumping also httpfs by @carlopi in #18148
- Internal #5245: AsOf NLJ Comparisons by @hawkfish in #18159
- Add internal exceptions to compression paths to prevent segmentation violations by @taniabogatsch in #18151
- Fix for arrow.json production extension type by @pdet in #18132
- partially restore deprecated http logging settings by @samansmink in #18150
- Bump for wasm fixes (excel and httpfs) and test fixes (iceberg) by @carlopi in #18167
- bump spatial by @Maxxen in #18161
- Bump sqlsmith and aws by @Tmonster in #18155
- bump ducklake for v1.3.2. by @c-herrewijn in #18156
- Bump spatial again: include re-linking for handling global objects in Wasm by @carlopi in #18170
Full Changelog: v1.3.1...v1.3.2
v1.3.1 Bugfix Release
This is a bug fix release for various issues discovered after we released 1.3.0 "Ossivalis". There are no new major features, just bug fixes. Database files created by DuckDB versions all the way back to v0.9 can be read by this version.
What's Changed
- MultiFileReader: Fix for handling nested list/map default values by @Mytherin in #17589
- Signed to Unsigned is not reversible by @Tmonster in #17571
- [Dev][CLI] Use an unused bit for
DUCKDB_LATEST_STORAGE_VERSIONby @Tishj in #17598 - minor restructure MAIN_BRANCH_VERSIONING by @c-herrewijn in #17601
- Main branch versioning set to false by @c-herrewijn in #17602
- Generate correct UUID v7 by @Mytherin in #17612
- Issue #17606: Disable TIMESTAMPTZ Casts by @hawkfish in #17614
- Bugfixes by @lnkuiper in #17543
- Improve Windows lock conflict error by @Mytherin in #17622
- Actually initialize in batch copy to file by @Mytherin in #17627
- Issue #17621: Streaming Window Reset by @hawkfish in #17649
- CLI: Print codename for '-version' by @szarnyasg in #17637
- [Python][Dev] Ignore
DYNAMIC_FILTERTableFilters in filter pushdown by @Tishj in #17657 - [Dev] Throw if
dbis not available yet in setting certain configuration options by @Tishj in #17659 - chore: Fix initialization by @krlmlr in #17643
- chore: Fix initialization by @krlmlr in #17644
- DefaultSecretGenerator: require lock for modifying persistent_secrets by @Mytherin in #17650
- initialize the read with the OpenFile info and not just the path by @Tmonster in #17652
- Don't bail on TopN optimization if we don't have a cardinality by @lnkuiper in #17654
- Fixes for CSV fuzzer tests by @pdet in #17678
- chore: Fix strict aliasing warning on GCC by @krlmlr in #17641
- Partitioned copy: don't check if file exists for remote files by @Mytherin in #17689
- Fix version detection for sdist builds without git info by @evertlammerts in #17605
- Bugfixes by @lnkuiper in #17695
- Do not get file handle unnecessarily. by @Tmonster in #17698
- Allow table functions to disable statement caching by @Mytherin in #17702
- [SQLLogicTester] Replace keywords in
<FILE>:patternresult for thequerystatement by @Tishj in #17710 - Parquet Reader: only read strings as fixed length strings if the type is FIXED_LEN_BYTE_ARRAY by @Mytherin in #17723
- Internal #5022: IN Pushdown Equalities by @hawkfish in #17731
- Internal #4995: Commutative INTERVAL Multiply by @hawkfish in #17730
- Issue #17725: Quantile NaN Compare by @hawkfish in #17761
- Backport CI fixes by @Mytherin in #17763
- Have the skip_rows option consider empty csv lines by @pdet in #17756
- Fix wrong assertion in Parquet DBP encoder by @lnkuiper in #17746
- CLI: make -f always bail on error by @Mytherin in #17768
- Don't Flatten() then Reference() by @hannes in #17769
- [Dev] Fix
TRYexpression crash on literals by @Tishj in #17753 - Pop up ICU errors to the csv sniffer by @pdet in #17719
- [Nested] Fix incorrect type casting in list_reduce lambda expressions by @maiadegraaf in #17581
- [chore] Avoid caching msys artifacts on PRs by @carlopi in #17777
- Skip encodings and spatial extensions on PRs by @carlopi in #17775
- Add
FileBufferType::EXTERNAL_FILEand add to same queue asFileBufferType::BLOCKby @lnkuiper in #17771 - Storge the argument and value of arg_min_max in the state as a unique_ptr by @pdet in #17749
- Physical operator logging by @lnkuiper in #17752
- Take string size into account in
GetRowSizeinParquetWriterby @lnkuiper in #17793 - [CSV Sniffer] Consider if null_padding is set to true when detecting midcomment line during sniffing by @pdet in #17751
- Revert "Avoid early-out when catalog lookup fails - instead finish all look-ups" by @Mytherin in #17805
- Support file rotation with WRITE_EMPTY_FILE false by @Mytherin in #17804
- Check page filtered out flag before reading it by @Damon07 in #17786
- Avoid saving ccache on pull_requests by @carlopi in #17810
- Support glibc 2.28 environments in 1.3.x by @taniabogatsch in #17814
- arrow_output_version option to produce arrow depending on a format version. by @pdet in #17791
- Internal #5069: Win32 Cast Simplification by @hawkfish in #17820
- local_agnostic::isspace to avoid spaces be depending on locale by @carlopi in #17808
- MultiFileReader: Make column mapping mode configurable per-file, instead of requiring it to be set globally by @Mytherin in #17817
- Fixup confict by @carlopi in #17831
- [Fix] Throw serialisation error when encountering invalid row IDs in WAL delete by @taniabogatsch in #17832
remap_struct: Correctly reserve list vectors to deal with remapping larger-than-vector-size lists/maps by @Mytherin in #17836- Fixup
unique_ptr<T[], deleter>, now with working custom deleters by @carlopi in #17840 - Fix ICE with Windows ARM64 (1.3) by @staticlibs in #17846
- [Fix] WAL replay catalog error in AddForeignKeyConstraint by @taniabogatsch in #17830
- Add ducklake sha by @c-herrewijn in #17818
- add ducklake to internal_extensions by @c-herrewijn in #17811
- Use boolean operators instead of bitwise operators for (
u)hugeintby @lnkuiper in #17862 - Bump httpfs by @Tmonster in #17863
- Function Serialization: adapt to removal of overloads by explicitly casting if argument types have changed by @Mytherin in #17867
- Add FinalizeLoad callback to catalogs, which can be called after the database is fully instantiated by @Mytherin in #17868
- Set query location for interval constants in all cases by @Mytherin in #17876
- Add support for
option.scheduler_process_partialto the Executor by @bleskes in #17877 - Add array indices to nested paths in
json_each/json_treeby @lnkuiper in #17878 - Add urllib3 dependency and improve fixture download reliability by @evertlammerts in #17880
- Add option to control parquet NaN pruning by @Maxxen in #17883
- Issue #17781: ASOF Predicate Binding by @hawkfish in #17889
duckdb_base_std::plus compile time test on discontinued functions by @carlopi in #17866- Early-out on catalog errors to prevent GetDatabases by @taniabogatsch in #17865
- Fix mismatch between idx_t (64 bits) and size_t (implementation dependent) by @carlopi in #17898
- Skipping failing on OSX Release part by @hmeriann in #17899
- [Fix] Serialisation error for invalid block ID in index deserialization by @taniabogatsch in #17900
- Update
MemoryTagwhen converting block to persistent by @lnkuiper in #17893 - Add support for deserializing multiple json-serialized statements by @Maxxen in #17902
- Deprecated std::stringstream by @carlopi in #17894
- Bump extensions by @Mytherin in #17905
- http_log.test: solve non-determinism at the test level by @carlopi in #17914
- Fixup #17775, correct boolean logic by @carlopi in #17912
- Make sure distance is always an int when doing version b...