CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Releases: duckdb/duckdb
v1.3.2 Bugfix Release
0b83e5d
Compare
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
inet
extension 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
-DDEBUG
andFORCE_ASSERT
by @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
INT128
to 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
Assets 22
- sha256:6156fb4e80828f04f0dde5c33d343ba230fddae0c4bc8f376e3590d255ffb999
2025-07-08T10:39:51Z - sha256:682ff48f988cb6f054fe42e755b7037ade3441e7a406cce3180b05ac0287279d
2025-07-08T10:39:52Z - sha256:e00a784bfaee039cfc61e9aec13f3d008489521db96ff51f0b6404c8d3fcaa18
2025-07-08T10:39:53Z - sha256:f322807f0f5d146d2bb1eea253f894d0a015561695408fa22981f085eb2b77ad
2025-07-08T10:39:54Z - sha256:88e4d42cc453b3bd78047ceb642b4dea24bb9f2239697a299ffd1e79ecabd2ab
2025-07-08T10:39:55Z - sha256:660ed83745a7024fe7c92d4de6c28665cc79bfb6e22101e5761830cc4ec050ef
2025-07-08T10:39:56Z - sha256:0f20f96cc83540817e9e42f88d1f62e5452a9a2b4fcdef7f97cfc94a971d313f
2025-07-08T10:39:58Z - sha256:c8093ef9bdfa27d06b3f4f3d9a858044b7eac07e6a799012f5f722dc07242eb8
2025-07-08T10:39:58Z - sha256:c658df8a1bc78704f702ad0d954d82a1edd4518d7a04f00027ec53e40f591ff5
2025-07-08T10:39:59Z - sha256:748f7c3722f8a4a15e7666e24b917615776879a2e9d92e079d0191a7832e93c1
2025-07-08T10:40:00Z -
2025-07-07T10:21:18Z -
2025-07-07T10:21:18Z - Loading
v1.3.1 Bugfix Release
2063dda
Compare
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_VERSION
by @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_FILTER
TableFilters in filter pushdown by @Tishj in #17657 - [Dev] Throw if
db
is 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>:pattern
result for thequery
statement 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
TRY
expression 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_FILE
and add to same queue asFileBufferType::BLOCK
by @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
GetRowSize
inParquetWriter
by @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
)hugeint
by @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_partial
to the Executor by @bleskes in #17877 - Add array indices to nested paths in
json_each
/json_tree
by @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
MemoryTag
when 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...
Assets 21
DuckDB 1.3.0 "Ossivalis"
71c5c07
Compare
This release of DuckDB is named "Ossivalis" after Bucephala Ossivalis, an ancestor of the Goldeneye duck that lived Millions of years ago.
Please also refer to the announcement blog post: https://duckdb.org/2025/05/21/announcing-duckdb-130
What's Changed
- V1.2 histrionicus by @Mytherin in #16070
- V1.2 histrionicus by @Mytherin in #16072
- unittests: clear test directory after every test by @Mytherin in #16053
- Benchmark runner: catch and log errors + add support for
retry load N
syntax by @Mytherin in #16054 - Throw an error when unsupported commands are used in concurrentloop by @Mytherin in #16009
- Remove extension definitions to prevent re-compilation of the entire system on commit by @Mytherin in #15955
- Display schema information of currently selected database only by @ashwaniYDV in #15815
- Issue #14366: Average Intervals by @hawkfish in #15864
- Internal #2176: Temporal AVG by @hawkfish in #15661
- discussions #15981: remove confusing comment in "duckdb/tools/shell/shell.cpp" by @komainu8 in #15984
- Fix #15466 Transform LIMIT or OFFSET first based on order specified in prepared statement by @ashwaniYDV in #15484
- Bitpacking mode info by @arjenpdevries in #15623
- Sniff Timestamp_TZ from CSV FIles by @pdet in #15730
- [no-op] Add documentation for filesystem read behavior by @dentiny in #15937
- Accept "Auto" as date/timestamp format by @pdet in #15808
- Parquet Reader Cleanup: Move ColumnReaders to separate files by @Mytherin in #16092
- Parquet Reader: Move decoding logic into separate Decoder classes by @Mytherin in #16100
- BundleStaticLibs to be also triggered by InvokeCI by @carlopi in #16107
- Parquet Reader: Split DeltaLengthByteArray decoder from DeltaByteArray, and read the strings in a streaming manner by @Mytherin in #16105
- Parquet Dictionary reader: set NULL values as the last value in the dictionary by @Mytherin in #16106
- Parquet Reader: Share ResizeableBuffers across decoders, and unify Plain/PlainReference by @Mytherin in #16113
- Using GitHub ARM runners for Linux CLI builds by @hannes in #16119
- Parquet Reader: Implement dedicated Skip method by @Mytherin in #16117
- Use ColumnSegment::FilterSelection and SelectionVector for filtering in Parquet scans by @Mytherin in #16126
- [Dev] Fix output (long lines > 333 characters) getting truncated in shell by @Tishj in #16128
- Adaptive table filter: initialize filter order based on heuristics by @Mytherin in #16127
- Feature #16044: TimeZone Offset Seconds by @hawkfish in #16048
- ATTACH OR REPLACE database to allow swapping of new data. by @xevix in #15355
- [Dev] Remove
upsert_conflict_in_different_chunk.test
by @Tishj in #15980 - [Dev] Fix issue related to unpacked columns and the NOT operator by @Tishj in #15534
- [Julia] Add support for named params in prepared statements by @tqml in #15621
- Use Adaptive Filters in the Parquet reader by @Mytherin in #16133
- Parquet reader: push table filters directly into dictionaries by @Mytherin in #16136
- Parquet reader: Plain templates - make CHECKED a template parameter, and use memcpy/bulk skip when reading/skipping without defines by @Mytherin in #16141
- Parquet reader: only set invalid entry in the dictionary when the column has defines by @Mytherin in #16144
- Add uniq_ptr_cast for interpreted benchmark. by @Tmonster in #16151
- Hopefully fixing ci runs by @hannes in #16150
- Removed the last CI job that used the Ubuntu 18 setup by @hannes in #16155
- Parquet Reader: Split
CreateReader
into two separate stages -ParseSchema
andCreateReader
by @Mytherin in #16161 - Have CSV Parellel tests on CI again by @pdet in #16164
- [Python][Dev] Bump the minimum pybind11 version from
2.6
to2.9
by @Tishj in #16159 - Add StackTraces to FatalExceptions by @NiclasHaderer in #16158
- Rework invoke by @carlopi in #16108
- Adds pre-optimization hooks for DuckDB by @NiclasHaderer in #16115
- Unify behavior of
range
/generate_series
with PostgreSQL by @kryonix in #15935 - [CI] Avoid Linux CLI jobs to fail-fast by @carlopi in #16173
- Parquet: Add dedicated Select method that can be used to push selection vectors into the read by @Mytherin in #16174
- Unvendor ICU by @m-kuhn in #16176
- Parquet reader: batch check if buffer is available in RLEBpDecoder by @Mytherin in #16185
- Parquet Reader: for DeltaLengthByteArray encoding, directly refer to strings from the block without copying by @Mytherin in #16186
- unified names for duckdb-extensions by @hmeriann in #16179
- Only delete test directory when
--test-temp-dir
is not specified by @Mytherin in #16192 - Fix #16163: COLUMNS should not treat identifiers as strings by @Mytherin in #16193
- Parquet reader: Avoid applying bloom filters if we are casting columns by @Mytherin in #16194
- Pretty print sniffer values by @pdet in #16182
- V1.2 histrionicus by @Mytherin in #16191
- Bump Julia by @Mytherin in #16199
- Ensure that dependent targets are present after find_package. by @BillyONeal in #16197
- Concurrency groups for R and Wasm by @hmeriann in #16201
- Parquet Writer Cleanup: Move ColumnWriters to separate files by @Mytherin in #16202
- [fix] Use bigobj when building with MSVC by @m-kuhn in #16200
- Improve performance of
UNNEST/UNPIVOT
by using selection vectors to unnest multiple lists at once by @Mytherin in #16210 - Add the
TRY
expression by @Tishj in #15939 - [Python][Dev] Replace the default connection when it's closed by @Tishj in #16160
- Use steady clock for profiler by @dentiny in #16198
- Add parallel memset when building hash join table by @hehezhou in #16172
- Avoid unnecessarily projecting the input columns of the UNPIVOT operator in the UNNEST by @Mytherin in #16221
- Left join push down optimization by @Damon07 in #15881
- Do In-Filter pushdown in PyArrow by @pdet in #16224
- Use _win32 with MSVC by @cfis in #16235
- Fix Python 3 executable name on Windows by @cfis in #16236
- Fix -std=c++11 by @cfis in #16237
- Issue #8265: AsOf Nested Loop by @hawkfish in #16218
- Include extension_util.hpp in libduckdb by @mlafeldt in #16255
- Generalize
rowid
into the concept of virtual columns, and makefilename
a virtual column in the Parquet/CSV/JSON readers by @Mytherin in #16248 - Modify histogram test to more fuzzily check boundaries since the test can be inconsistent on different platforms by @Mytherin in #16261
- [Dev] Fix issue in
TRY
expression withdictionary_expression
Vector verification by @Tishj in #16262 - [Python Dev] Add the correct variant of the
-std=c++11
flag based on the compiler (MSVC or not) by @Tishj in #16267 - Fix extension install mode null by @samansmink in #16268
- A little cleanup. by @JasonPunyon in #16028
- Improve Parquet writer performance by @lnkuiper in #16243
- Merge v1.2-histrionicus into main by @Mytherin in #16284
- Many reclaim storage fixes by @taniab...
Assets 21
v1.2.2 Bugfix Release
7c03946
Compare
This is a bug fix release for various issues discovered after we released 1.2.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
- [Python] Fix deadlock in
from_parquet
withfile_globs
caused by not releasing the GIL by @Tishj in #16522 - [Python] Fix some stubs issues by @Tishj in #16523
- [Dev] Fix issues in the benchmark runner related to the serialized
storage_version
by @Tishj in #16533 - Set estimated cardinality to newly created logical operators by @jeewonhh in #16528
- custom_extension_repository to also be the default autoinstall_extension_repository by @carlopi in #16459
- [Python Dev] No longer trigger a DeprecationWarning when using a UDF by @Tishj in #16433
- Fixup problems connected to prep to 1.2.1 by @carlopi in #16578
- Give preference to quote=escape if we can't do better by @pdet in #16584
- Max ART key length by @taniabogatsch in #16588
- Issue #16617: Window Constant Finalize by @hawkfish in #16628
- [Fix] Index scan - Move the table scan state into the local state by @taniabogatsch in #16650
- [Fix] Perform eager constraint checking during physical batch insert by @taniabogatsch in #16651
- [Python] Don't push down
OPTIONAL_FILTER
intopyarrow
for the arrow scan. by @Tishj in #16657 - move OrderPreservationRecursive to physical_plan_generator.hpp by @jeewonhh in #16656
- Add libs folder to bundled static libs by @taniabogatsch in #16655
- Avoid UMA by @krlmlr in #16641
- Avoid UMA by @krlmlr in #16643
- Avoid UMA by @krlmlr in #16642
- Several fixes for CSV fuzzer tests by @pdet in #16636
- FSST Fix: Correctly detect the situation where we have 3 bytes remaining by @Mytherin in #16688
- Fix #16627: handle DISTINCT FROM and NOT DISTINCT FROM in zone-map pushdown by @Mytherin in #16691
- Fix #16554: emit blobs as part of .dump by @Mytherin in #16693
- add avro by @samansmink in #16708
- Issue #16652: Implicit Ordered Aggregation by @hawkfish in #16718
- Issue #16649: SelectNth Remainders by @hawkfish in #16705
- [Dev] Fix
EXPORT DATABASE
missing semicolons in producedschema.sql
by @Tishj in #16723 - Always throw the error that happens the earliest in the CSV Reader by @pdet in #16728
- Fix #16662 by @lnkuiper in #16732
- [Test] Add missing test for eager-constraint checking fix by @taniabogatsch in #16745
- Clamp reported memory in duckdb_memory by @Mytherin in #16753
- CLI
-help
: Fix default value for -nullvalue by @carlopi in #16755 - Apply RLE fix to v1.2 by @Mytherin in #16756
- [Arrow] Setting schema of the keys to not null for maps and properly write Null columns to arrow by @pdet in #16711
- Fix min/max values in numeric cast exception message by @abramk in #16777
- [ADBC] Add wrapper to connection new, set options at connection init, if any. by @pdet in #16748
- Remove delta from extensions built on a nightly basis (vs 1.2-histrionicus) by @carlopi in #16794
PhysicalTopN
: Buffer-allocatedStringHeap
by @lnkuiper in #16770- [chore] Add v1.2.2 to storage versions, preparation for upcoming patch release by @carlopi in #16799
- Fix issue when line is empty by @pdet in #16823
- Add extra check in normalize for commit, rollback and abort by @pdet in #16802
- Fix #16783: Fix DistributivityRule by @flashmouse in #16804
- Internal #4492: Ignore Nulls Orrification by @hawkfish in #16837
- Fix #16836: rewrite main column data in case of an update that only modifies the validity by @Mytherin in #16851
- Initialize type by @pdet in #16848
- [CSV Reader] Add check on ever quoted for candidate selection by @pdet in #16868
- Clean up partial deletes when encountering a transaction conflict in a vector by @Mytherin in #16905
- Fix clang-tidy: add missing include by @Mytherin in #16920
- Backport "Adding gzip version of shell for linux/osx install script" by @carlopi in #16917
- Backport "Adding gzip version of shell for linux/osx install script"/2 by @carlopi in #16924
- Skip tests for Python 3.8, already end-of-life by @carlopi in #16923
- Bump to avro version that now support wasm by @carlopi in #16916
- Unwrap DUCKDB_EXTENSION__LINKED_LIBS via CMake by @carlopi in #16914
- Skip manylinux-extensions-x64 job by @carlopi in #16932
- [Fix] Disable recursion for invalidated database error by @taniabogatsch in #16907
- bump excel (on v1.2) by @Maxxen in #16915
- [Fix] Flush local storage before any deletes by @taniabogatsch in #16951
- [Python] Fix PyArrow filter pushdown for NaN by @Tishj in #16952
- Allow overriding the Printer::Print output destination by @bleskes in #16909
- bump out-of-tree extensions to v1.2.2 by @Tmonster in #16913
- Allow SQL prepared statements to be rebound by @NiclasHaderer in #16820
- Fix #16959: binding constraints should not modify the original constraints by @Mytherin in #16971
- Add back manylinux extensions [on v1.2-histrionicus] AND bump extensions by @carlopi in #16976
- Skip TPC-DS Q67 on DOUBLE by @Mytherin in #16987
- Re-enable iceberg by @carlopi in #16992
- Try enabling and bump delta by @Maxxen in #16990
- Backport @szarnyasg's PR 16999 by @carlopi in #17013
Full Changelog: v1.2.1...v1.2.2
Assets 22
v1.2.1 Bugfix Release
8e52ec4
Compare
This is a bug fix release for various issues discovered after we released 1.2.0. 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
- [Dev] MultiFileReader fix InternalError in CreateFilterMap by @Tishj in #16114
- [bug-fix] Avoid throwing in catch block for failed commits by @Vegetable26 in #15903
- Issue #16098: ValidEnd Parallel Vectorisation by @hawkfish in #16140
- Adding an extension option shouldn't delete a set value and promote unrecognized options by @bleskes in #15919
- Parquet writer: Re-implement GetRowSize for Strings by @Mytherin in #16178
- Fix #16157: correctly get the first row when reading hive partitions from a dictionary vector by @Mytherin in #16180
- Fix #16122: bind default values in a sub-binder to avoid modifying the catalog search path of the current binder by @Mytherin in #16181
- Fix #16134: when a catalog/schema/table has the same name, we prefer to suggest the table name by @Mytherin in #16189
- Ensure MergeCollectionTask has a writer by @ywelsch in #16207
- Backport #16115 by @NiclasHaderer in #16227
- Deleted copy constructor of pending query by @NiclasHaderer in #16242
- Correctly report errors caused by get_database in C extensions by @mlafeldt in #16253
- use random seeds for bernoulli sample when parallel is enabled by @Tmonster in #16223
- Parquet Reader: avoid caching the compressed buffer in the ColumnReader by @Mytherin in #16263
- Fix #16260: correctly handle parameters in getvariable by @Mytherin in #16264
- Avoid calling SetFilterAlwaysTrue multiple times in RowGroup::CheckZonemap by @Mytherin in #16269
- [Fix] Scanning from normal leaf to nested leaf by @taniabogatsch in #16270
- Fix #16231: refer to order by condition in ARRAY(SUBQUERY) by alias instead of by index by @Mytherin in #16272
- Fix #16257 by @lnkuiper in #16275
- AFL Tests for the CSV reader by @pdet in #16280
- Issue #16250: Window Range Performance by @hawkfish in #16276
- Fix #16278: late materialization should not trigger on very large limits, and it should never trigger on limits without offsets when preserve_insertion_order = false by @Mytherin in #16282
- Overflow strings allocations: avoid rounding up memory allocated per overflow string - when reading "small" overflow strings place them directly into the vector instead by @Mytherin in #16283
- Use ordered map to preserve expressions order by @Damon07 in #16111
- [Dev]
register_filesystem
stubs, usefsspec.AbstractFileSystem
, notstr
by @Tishj in #16266 - [Python Dev] Fix crash with empty args for
isin
| Fix transformation forisnotin
by @Tishj in #16271 - Fix issue related to hang when all candidates are eliminated in refinement by @pdet in #16288
- [Fix] Early-out on CREATE INDEX (IF NOT EXISTS) by @taniabogatsch in #16093
- [Python] Fix the reverse binary expressions in the Expression API by @Tishj in #16300
- Bugfixes by @lnkuiper in #16244
- [Fix] MinGW bundle static libs by @taniabogatsch in #16292
- Fix heap buffer oveflow sampling by @Tmonster in #16279
- Expose STRING_LITERAL in C API by @taniabogatsch in #16293
- Allow accessing profiler query tree under lock by @ywelsch in #16314
- bump extensions by @Maxxen in #16313
- Inline virtual list lambda bind functions by @Maxxen in #16327
- Update shell.cpp to fix #16333 by @teaguesterling in #16335
- Add the suggestion to verify the nullstring as part of the cast error message by @pdet in #16336
- Take
NULL
s into account forDELTA_BINARY_PACKED
by @lnkuiper in #16317 - PhysicalTableScan: Adapt to allow async behaviour by @carlopi in #16310
- Allow querying attached catalog from detached catalog by @jeewonhh in #16289
- Reduce minimum expected memory usage in
RadixPartitionedHashTable
by @lnkuiper in #16332 - Backport ebb4dcc to v1.2-, adding missing include by @carlopi in #16369
- Excecption load on mismatched ABI: Use '%d' to print ABI type by @carlopi in #16367
- Aggregation: For dictionaries without an id - use the correct threshold to bail-out on using the dictionary by @Mytherin in #16364
- Bump excel to the same version distributed on
core
repository by @carlopi in #16375 - Accept valid dialects with escape set into the refinement phase by @pdet in #16387
- Push the correct casts for values of different types in (X, Y) IN (SELECT X, Y) by @Mytherin in #16392
- Add support for autoload and autoinstall for
ui
extension by @carlopi in #16393 - Add twine_upload option to Python.yml to trigger upload by @carlopi in #16410
- Only select options that generate more columns with null_padding, if they at least hold 50% of consistency by @pdet in #16404
- Use checkpoint bind in DuckTableEntry::Copy to avoid re-validating default values (and potentially causing issues during WAL replay) by @Mytherin in #16398
- Rename
DUCKDB_API
toDUCKDB_C_API
forduckdb.h
by @Mytherin in #16397 - Issue #16407: Try_Strptime Invalid TimeZone by @hawkfish in #16416
- Internal #4303: Windowed DISTINCT Leaks by @hawkfish in #16417
- Internal #4258: MODE Spooling Stability by @hawkfish in #16415
- Fix PyPi upload also for branches, when twine_upload is provided by @carlopi in #16421
- [Fix] Throw constraint violation for FK constraint checking by @taniabogatsch in #16399
- Add storage and serialization version for v1.2.1 by @Flogex in #16403
- Update flaky return_files.test by @jeewonhh in #16432
- Add python version to duckdb_api by @guenp in #15599
- Do not accept null values in lists for column parameters by @pdet in #16425
- Use seed for system sample when it is provided. by @Tmonster in #16408
- Bump delta to working commit by @carlopi in #16442
- Adding windows code signing using azure by @hannes in #16444
- CSV small code Improvements + initialising boolean variable. by @pdet in #16454
- [Python Dev] Make
pandas
not required in a couple places, check if it's installed in others by @Tishj in #16414 - fix passing a null path to the C API instance cache by @jraymakers in #16474
- Add methods to retrieve current task scheduler busyness by @NiclasHaderer in #16465
- Fixed reading piped JSON by @lnkuiper in #16480
- [Python Dev]
pyproject.toml
should not useoldest-supported-numpy
anymore by @Tishj in #16486 - [tests] Multiple FORMAT in copy, only last one matters by @carlopi in #16493
- Bump
postgres_scanner
andfts
extensions by @lnkuiper in #16492 - bump sqlsmith extension tag by @Tmonster in #16488
- [BugFix]: Swap join children, not left and right set by @Tmonster in #16487
- [tests] Add allow_unsigned_extensions require by @carlopi in #16499
- Provide callback when tasks are starting / stopping by @ywelsch in #16451
- CodeQuality: ubuntu-20 to ubuntu-22, lock black to version 24 and trick clang_format detection by @carlopi in #16513
- Move from ubuntu-20:04 to ubuntu-22:04, part I by @carlopi in #16510
- [chore] Build Linux releases also on PRs AND ubuntu-20 to 22 by @carlopi in https://github.com/duckdb/duckd...
Assets 25
DuckDB 1.2.0 "Histrionicus"
5f5512b
Compare
This release of DuckDB is named "Histrionicus" after the good-looking Harlequin duck (Histrionicus Histrionicus) that inhabits "cold fast moving streams in North America, Greenland, Iceland and eastern Russia".
Please also refer to the announcement blog post: https://duckdb.org/2025/02/05/announcing-duckdb-120
What's Changed
- Optimise division by a constant at runtime for integer division by @JAicewizard in #10348
- Add cross join to Python Relational and PySpark API by @khalidmammadov in #13519
- Fix #13805: throw a more descriptive error message when an on-disk file is referenced using a replacement scan for an unsupported file format by @Mytherin in #13871
- Make sampling accept parameters at the parser/transformer layer by @Mytherin in #13903
- Fix #13867: use 64-bit random numbers to generate random numbers for
random()
by @Mytherin in #13920 - Fix #13769: when binding views, always first search in the schema that the view is defined in by @Mytherin in #13921
- Rework table bindings to be components (
catalog
,schema
,table
) instead of flat strings by @Mytherin in #14017 - Add auto-loadable extension settings to duckdb_config_count and duckdb_get_config_flag by @Mytherin in #14021
- Fix #10961 - in the HAVING clause - in case of column name conflicts, bind to aliases instead of to ungrouped columns by @Mytherin in #14023
- Enable filter pushdown through Logical Unnest by @Tmonster in #14008
- Allow duplicate table aliases in the table binder by @Mytherin in #14035
- Unify DESCRIBE [query] and DESCRIBE [table] by @Mytherin in #14039
- Support qualified identifiers in the
EXCLUDE
clause by @Mytherin in #14043 - Add
SMALLER_BINARY
flag to reduce binary size by @Mytherin in #14057 - Smaller Binary: remove more templates from arg_min_max by @Mytherin in #14071
- Unify entropy and mode aggregates - and skip specialized implementations for entropy with smaller binary by @Mytherin in #14080
- [Python] Add
set_default_connection
to theduckdb
module by @Tishj in #13442 - Provide workaround for prefetching parquet files with incorrect page offsets by @samansmink in #13697
- Move
core_functions
to a separate extension by @Mytherin in #14149 - PySpark df.drop() to support expressions by @khalidmammadov in #14059
- add some RealNest benchmarks by @hmeriann in #13345
- feed table function into multifilereader initialization by @samansmink in #14112
- [Dev] Fix an issue causing ExecuteTask to do much more work than intended by @Tishj in #14034
- Overhaul Parquet dictionary handling by @hannes in #14194
- [Feature] Allow passing the catalog (database name) to appender by @taniabogatsch in #13692
- Add Taxi Dataset Benchmark by @pdet in #14197
- Feature #3036: Window Spooling by @hawkfish in #14181
- Small C Extension API changes by @samansmink in #13987
- Add HTML and Graphviz support for explain analyze by @abramk in #13942
- Fix #13064: offer more suggestions with same score by @Damon07 in #14048
- New Algorithm to find a new line on parallel execution by @pdet in #14260
- Making client context lock optional for relation binding by @pdet in #14093
- [Feature] Allow passing the catalog during C API appender creation by @taniabogatsch in #14256
- Make test random output ordered by @Damon07 in #14267
- Skip test_window_distinct by @Mytherin in #14309
- Taxi Benchmark by @pdet in #14301
- Switch to shared pointer for multfilelists by @samansmink in #14291
- Push #14298 to feature branch by @flashmouse in #14311
- Implement PullUp Empty Results optimizer by @Tmonster in #13524
- [Export/Import] Use the DependencyManager to (stable) sort the entries before export by @Tishj in #14196
- Partitioning-Aware Aggregation and Partitioning-Aware Infrastructure by @Mytherin in #14329
- Add df.unionByName to PySpark API by @khalidmammadov in #14063
- Or filter pushdown into zone maps by @Tmonster in #14313
- Get the current setting in the database file opener by @Mytherin in #14361
- [Feature + Fix] Support ALTER TABLE tbl ALTER col TYPE USING and fix null handling in struct_insert by @taniabogatsch in #14359
- [C API] Add table_description_create_ext and table_description_get_column_name by @taniabogatsch in #14285
- Move _rtools platform to be equivalent to _mingw by @carlopi in #14368
- Fix for accidental like skip in the CSV Buffer by @pdet in #14380
- Table locks - always grab table locks through the transaction interface by @Mytherin in #14379
- Implementing array_slice and [] for BLOB by @hannes in #14358
- Rework settings handling and implement auto-generation for new ones by @Mytherin in #14383
- Rework settings handling and implement auto-generation for new ones by @chrisiou in #14018
- Arrow list buffer - suggest setting
arrow_large_buffer_size
to true when regular list buffer size is exceeded by @Mytherin in #14384 - Fix incorrect merge conflict resolution in workflow file by @Mytherin in #14390
- Update Parquet Thrift to latest version by @hannes in #14258
- Reformat list functions by @c-herrewijn in #14372
- Tidy Check to do complete run also on feature by @carlopi in #14394
- [Python] Use an
ArrowQueryResult
inFetchArrowTable
when possible. by @Tishj in #14319 - Make mysql_scanner auto-loadable, and add mysql/postgres secrets by @Mytherin in #14392
- Improvement the speed of table sample systems by @continue-revolution in #12631
- Support defining column names in CTAS by @douenergy in #14327
- Fix pointer indirection in pyrelation.cpp by @carlopi in #14403
- Fix idx_t to int64_t implicit conversion flagged by clang-tidy by @carlopi in #14402
- Storage: make
ROW_GROUP_SIZE
configurable by @Mytherin in #14406 - [Dev] Update vendored ZSTD to v1.5.6 by @Tishj in #14360
- Top-N: Rework to use heap of sort keys by @Mytherin in #14424
- reformat string functions by @c-herrewijn in #14400
- Prefix Aliases in SQL by @hannes in #14436
- [Dev] Optimize
ValidityMask
when reading from aColumnDataCollection
by @Tishj in #14416 - [Dev] Further optimize the CDC ValidityMask deserialization by @Tishj in #14448
- Reformat date and map functions by @c-herrewijn in #14425
- Reformat generic functions by @c-herrewijn in #14423
- Push dynamically generated join filters through
UNION
,UNNEST
andAGGREGATE
by @Mytherin in #14453 - Try auto-casting for mismatching data chunks in the Appender API by @taniabogatsch in #14433
- Implement
DELTA_BINARY_PACKED
compression in Parquet writer by @lnkuiper in #14257 - Eviction Queue Partitioning by @lnkuiper in #14375
- Implement
map_extract_first
by @lnkuiper in #14175 - RowGroup no longer lives in format namespace by @Mytherin in #14469
- Convert the shell from C to C++ by @Mytherin in #14473
- Fixing an issue with parquet dictionary reading by @hannes in #14438
- Strip down unused/unsupported options from the CLI by @Mytherin in #14478
- [PySpark] Add withColumns, withColumnsRenamed, cos, acos, any_value, approx_count_distin...
Assets 22
v1.1.3 Bugfix Release
1986445
Compare
This is a bug fix release for various issues discovered after we released 1.1.2. 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
- [Adaptive Sniffer] In case files have only one row, be more permissive to detect headers and types. by @pdet in #14174
- Increase bounds for
test/sql/copy/file_size_bytes.test
by @lnkuiper in #14367 - Use table-level locking when acquiring shared locks by @ywelsch in #14370
- [Arrow] Fix scanning of BOOL columns when offsets are involved by @Tishj in #14395
- avoid unnecessary file list materialization when pruning readers by @samansmink in #14397
- Fixing type pushdown on the CSV Scanner by @pdet in #14399
- Issue #14398: Lead Shift Defaults by @hawkfish in #14409
- Escape should default to quoted by @pdet in #14418
- Sniff CSV rejects options and small sniffer fix for ignore_errors by @pdet in #14417
- Fix #14430 - throw an error when reading corrupt statistics in the perfect hash aggregate by @Mytherin in #14442
- Use corrent container to produce BinderErrors by @carlopi in #14437
- Rework list_concat to accept a variable number of arguments similar to string concat by @Mytherin in #14443
- SingleFileBlockManager::MarkBlockAsUsed - also erase from newly_freed_list to ensure trim does not prune blocks that are in-use by @Mytherin in #14467
- acosh: Change example to avoid returning NaN by @szarnyasg in #14477
- Don't move lvalue when inserting in order preserving map by @Maxxen in #14492
- bump vss by @Maxxen in #14493
- Bug in percentage calculation in query_graph by @bjornasm in #14494
- fix: standardize usage of LogicalType::ROW_TYPE for COLUMN_IDENTIFIER_ROW_ID by @rustyconover in #14480
- [Python][Dev] Fix up test to work with older version by @Tishj in #14505
- Avoid throwing on failure to open extensions's .info file (when force installing) by @carlopi in #14272
- Python 3.7 tests are particularly brittle, we will keep building wheels but avoid testing them by @carlopi in #14510
- Being more restrictive with the names option in the csv reader by @pdet in #14466
- [Arrow] Fix issue where uninitialized memory was being read when scanning empty lists by @Tishj in #14538
- Fix #14545 - pivot header must be defined in the grammar by @Mytherin in #14556
- [Python][Arrow] Cast to
py::bytes
when dealing with BLOB in filter pushdown by @Tishj in #14553 - [Dev] Include aliases for RETURNING list expressions in
ToString
by @Tishj in #14533 - CI: Mirror 'reproduced' / 'under review' to the internal repository by @szarnyasg in #14527
- Approx-Top K: Make aggregate state trivially destructible by @Mytherin in #14571
- Don't pre-initialize hash vector in DistinctStatistics construction by @abramk in #14570
- Fix query_graph tool for #14290 by @JasonPunyon in #14521
- Fix typos by @deining in #14579
- [Dev] Traverse the
replace_list
of StarExpression inParsedExpressionIterator::EnumerateChildren
by @Tishj in #14535 - chore: Add EOL to source files by @krlmlr in #14583
- Issue template: Add Swift redirect by @szarnyasg in #14588
- Fix for underflow issue on number of rows in the CSV Reader by @pdet in #14587
- Cas strong by @lnkuiper in #14592
- HTTPFS: HTTPException no longer inherits from IOException by @Mytherin in #14585
- [bufferpool] Fix PurgeAgedBlocksInternal() evictions by @Vegetable26 in #14446
- CI: Add bot for 'minimal reproducible example' by @szarnyasg in #14598
- CI: Fix and simplify 'needs reproducible example' labelling by @szarnyasg in #14608
- CI: Fix and simplify 'needs reproducible example' labelling by @szarnyasg in #14609
- Enable serialization of LogicalExport by @Mytherin in #14594
- Test fixes for new arrow release by @pdet in #14593
- CI: Fix labelling bot by @szarnyasg in #14611
- CI: Add repo name to labelling script by @szarnyasg in #14612
- Unexpected result comparing blob by @Tmonster in #14604
- Storage info update by @szarnyasg in #14371
- Fix #14600: use UUID to generate unique pivot enum names by @Mytherin in #14622
- Fix #14601: avoid exporting entries in the temp or system schema by @Mytherin in #14623
- Issue #14618: Year Day Year by @hawkfish in #14624
- Fix #14542 by @lnkuiper in #14610
- add index plan callback to IndexType by @Maxxen in #14511
- FIX: Discrepancy Between Count and Sum Queries in SQL by @Tmonster in #14634
- Fix Windows Extensions CI by @Mytherin in #14643
- chore: Add qualification for brotli code by @krlmlr in #14628
- fix: Initialize atomic class member by @krlmlr in #14627
- Fix secret serialization issues by @samansmink in #14652
- Add serialization for bitstring_agg function by @ywelsch in #14654
- Force error on CSV Sniffer Failure by @lcostantino in #14661
- bump vss + spatial by @Maxxen in #14667
- Bump extensions: AWS, Delta, Iceberg, INET by @carlopi in #14669
- fix scoping problem with function argument by @Damon07 in #14666
Full Changelog: v1.1.2...v1.1.3
Assets 14
v1.1.2 Bugfix Release
f680b7d
Compare
This is a bug fix release for various issues discovered after we released 1.1.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 DuckDB v1.1.2.
What's Changed
- [CI] Re-enable ART zero initialisation verification by @taniabogatsch in #14031
- Push filters instead of overwriting filters by @Tmonster in #14078
- Fix test by @Tmonster in #14079
- fix maximum_threads test inside containers by @wenjun93 in #14083
- Fix: remove is_probe_in_domain by @Light-City in #14084
- Add duckdb_extension.h to amalgamation release by @samansmink in #14086
- Bump minimum required cmake version by @abramk in #14089
- Fix parser error by removing alias by @taniabogatsch in #14090
- [Dev] Move
EnumTypeInfoTemplated
definition into ahpp
file by @Tishj in #14038 - Fix #14077: correctly reset next pointer when reconstructing new row group segment tree after vacuum by @Mytherin in #14092
- Format CSV error messages by @szarnyasg in #14097
- Fix the answer file for tpcds q67 at sf100 by @Tmonster in #14096
- Add v1.1.1 to version_map.json by @Flogex in #14110
- CREATE TABLE now supports columns with
ENUM[]
types. by @Tishj in #14102 - fix parquet cardinality when first file is empty by @wenjun93 in #14058
- [Python Dev] Make sure the GIL is released when the connection+db are being shut down by @Tishj in #14113
- Less salt by @lnkuiper in #14173
- remove redundant code by @flashmouse in #14172
- comparison of nested types returns true or false always (even with nulls) by @Tmonster in #14094
- subtype DBInterface.Connection in julia client by @piever in #14193
- [Python] Fix a bug with
python_scan_all_frames
reaching the bottom of the frame stack by @Tishj in #14183 - [Dev] Fix issue where the InsertStatement::ToString call destroyed the
alias
of the ValuesList by @Tishj in #14171 - [Python] Fix issue related to scanning float64 dtype columns that contain a mask by @Tishj in #14170
- Fix some warnings found while compiling duckdb-node by @carlopi in #13994
- fix minmax type info miss by @Damon07 in #14159
- fix: ArrowSchemaMetadata::GetOption to return empty string instead of raising exception if key is not found. by @rustyconover in #14157
- Issue 14151: Fix conflicting defines on Windows hidden by cmake unity builds by @zmajeed in #14154
- Issue 14189: Fix build when threads are disabled by @zmajeed in #14190
- Fix an uncaught error with a generated column containing a subquery by @Tishj in #14198
- Add missing word in TableFunction comment by @JelteF in #14210
- add method to check whether julia connection is open by @piever in #14195
- Avoid schema changes with IF NOT EXISTS by @ywelsch in #14143
- Fix typos in code by @c8ef in #14243
- [Dev] Add the ExecutorException class, making use of the EXECUTOR ExceptionType by @Tishj in #14231
- [Python] Don't allow construction of DuckDBPyType from empty Dict type by @Tishj in #14221
- Fix #14232: fix deliminator optimizer by @flashmouse in #14238
- [CSV Reader] Also use figure-out-line code when ignoring errors. by @pdet in #14184
- remove redundant Bit::SetBit by @flashmouse in #14226
- Fix #14212: mention correct query component when using literal in DISTINCT ON by @Mytherin in #14255
- Removing overzealous check in Parquet by @hannes in #14268
- Update sqlsmith extension and patches by @Tmonster in #14270
- Support for duckdb.varint extension in Arrow. by @pdet in #14273
- Disable CSV ignore_errors benchmark by @pdet in #14277
- Only slice initialized vectors in
PhysicalHashAggregate::SinkDistinctGrouping
by @lnkuiper in #14289 - Fix #14249: return NAN when dividened is 0 by @flashmouse in #14298
- Revert "Fix #14249: return NAN when dividened is 0" by @Mytherin in #14308
- fix macro name with the same function name in it which causing repeat⦠by @Damon07 in #14296
- Fixing issue with the sniffer on copy statetements by @pdet in #14295
- Json bugfixes by @lnkuiper in #14288
- [Bitstring] Add overload for
bitstring
to accept BIT as the type of the first argument by @Tishj in #14247 - [Fix] Don't initialize reference, constant, and parameter children in intermediate chunk by @taniabogatsch in #14254
- Profiling - correct settings per node type and minor renaming for clarity by @taniabogatsch in #14290
- Fix extension size increase by @samansmink in #14185
- Add option to ignore GeoParquet, disable spatial autoloading when reading GeoParquet by @Maxxen in #14297
- More defensive programming in RowVersionManager::CleanupAppend by @Mytherin in #14317
- Change Makefile to correctly handle DISABLE_SANITIZER and DISABLE_UBSAN by @JelteF in #14316
- [CSV Reader] Making escape not limited to only quotes by @pdet in #14314
- allow external cardinality information (e.g. from iceberg) by @peterboncz in #14292
- [SecretManager] Fix deserialization of Value types in KeyValueSecret::Deserialize by @Tishj in #14332
- Avoid throwing InternalException on reading secret by @carlopi in #14336
- delay the rewrite of a large IN-clause into a MarkJoin on remote Filter-Scans by @peterboncz in #14266
- JSON reader - never generate maps if map_inference_threshold is -1 by @Mytherin in #14348
- [Appender] Support appending to table with generated columns by @Tishj in #14346
- Internal #3251: DateDiff Across Epoch by @hawkfish in #14338
- Bump azure and delta extensions commits by @carlopi in #14350
- Bump spatial to 3f94d52aa9f7d67b1a30e6cea642bbb790c04aa2 by @carlopi in #14351
- Bump more extensions: iceberg, vss and sqlite_scanner by @carlopi in #14352
- Emit profiling info for extension operators by @Mytherin in #14355
Full Changelog: v1.1.1...v1.1.2
Assets 14
v1.1.1 Bugfix Release
af39bd0
Compare
This is a bug fix release for various issues discovered after we released 1.1.0. There are no new major features, just bug fixes. Database files created by DuckDB since v0.9.* can be read by DuckDB v1.1.1.
What's Changed
- [Python] Fix a crash related to handling of the
f_locals
by @Tishj in #13821 - [Dev] Remove unnecessary parameter from BufferHandle constructor by @Tishj in #13823
- When vacuuming, immediately checkpoint the vacuumed row groups instead of scheduling a checkpoint task by @Mytherin in #13825
- Check for unquoted errors after finishing up a buffer. by @pdet in #13826
- Issue #13813: TIMETZ Uninvertible Casts by @hawkfish in #13820
- add cardinality for cross product and propositional join by @jeewonhh in #13818
- Add requested_schema argument to PyCapsule interface by @WillAyd in #13802
- Throw at double/float cast to decimal if it does not fit by @pdet in #13745
- [Fix] C API - Correct type comparison in MAP value functions by @taniabogatsch in #13844
- [C-API Dev] Fix up
"Test DataChunk populate ListVector in C API"
test by @Tishj in #13839 - [Dev] Minor cleanup to BufferManager and BlockHandle API by @Tishj in #13838
- Small fixes for prompt of sniff_csv by @pdet in #13843
- [BufferManager] Fix
duckdb_memory()
reporting wrong size fortemporary_storage_bytes
by @Tishj in #13837 - Fix for internal error when using rejects tables and adding implicit cast for boolean values. by @pdet in #13849
- [Fix ART] Correct prefix transformation by @taniabogatsch in #13858
- [Python] Fix issue causing an exception when creating a
duckdb.StarExpression
without anexclude_list
by @Tishj in #13881 - Fix issue with cgroups/slurm variables: skip if memory limit cannot be parsed, and only run this on Linux by @Mytherin in #13879
- Explicit windows-2019 instead of windows-latest by @carlopi in #13883
- CI/Windows: Drop redundant package by @szarnyasg in #13874
- Preserve operator in
BindWithCTE
by @lnkuiper in #13873 - Update description of 'max_temp_directory_size' by @szarnyasg in #13724
- 13810 unnest cross join error by @Tmonster in #13878
- Tweak allocation purging by @lnkuiper in #13877
- Copy From Database - create a balanced UNION ALL tree instead of a depth-first union all tree to avoid stack overflows by @Mytherin in #13889
- [Python] Fix issue related to the GIL when using
execute
with multiple statements by @Tishj in #13893 - Fix #13880: correctly name http_proxy_password setting by @Mytherin in #13890
- Fix #13872: duckdb_result_return_type is not deprecated, and group together deprecated functions by @Mytherin in #13891
- [Python] Add
python_scan_all_frames
to opt-in to scanning all frames (< 1.1 behavior) by @Tishj in #13896 - Improve error on enums by @carlopi in #13885
- Handle extension ABI mismatches in a forward & backward compatible way by @carlopi in #13894
- Fix #13824: min() max() varchar column use default collation by @flashmouse in #13909
- Fix issue in casting 2 byte BIT -> BLOB by @Tishj in #13908
- add missing azure secret providers for autoloading by @samansmink in #13902
- Remove buffer_manager_allocate.patch and bump spatial by @carlopi in #13895
- [Python] Improve
install_extension
to supportrepository
/repository_url
andversion
by @Tishj in #13876 - fix REGEX not supported anymore for valid queries (only statement error) #2889 by @hmeriann in #13633
- [CI] Invert operations on OSX.yml, deploying nightly artifacts before test by @carlopi in #13927
- [Python][Jupyter] Don't use
ExplainFormat::HTML
forexplain('analyze')
by @Tishj in #13928 - Only bind to SQL value functions if there is no alias with this name present we can bind to instead by @Mytherin in #13925
- Improve logic for remote extension install on Windows by @carlopi in #13929
- CI: Trigger actions for labeled discussions by @szarnyasg in #13937
- [Swift] Update README.md in Swift repo by @tcldr in #13955
- [Dev] Add exclusion for
pybind11
internal_pybind11_conduit_v1_
method by @Tishj in #13961 - Create a balanced union tree, also for export by @Mytherin in #13956
- Increment julia version by @Mytherin in #13966
- Fix #13585 - transform from or select first based on order specified by the user by @Mytherin in #13959
- Fix Cross Product Cardinality by @jeewonhh in #13954
- Do not run the date/timestamp format sniffer if they are set by the user by @pdet in #13960
- Modify create_art_varchar.benchmark so it passes weekly regressions by @Tmonster in #13968
- Fix data race when writing GeoParquet by @Maxxen in #13962
- Check vector type in GetVectorScanType to avoid concurrent race when updating validity by @Mytherin in #13965
- Parser Keyword Category Search by @pdet in #13875
- Escape quotes in FTS by @lnkuiper in #13917
- Fix #13941: fix error message in appender by @Mytherin in #13957
- fix: remove http prefix from proxy value when present by @dylanspag-lmco in #13973
- Use defaults when serializing copy to file by @Mytherin in #13978
- Fix #13933: disable join filter pushdown when a join is performed over collated columns by @Mytherin in #13958
- Fix partitions on wide tables by @piever in #13988
- [Fix] Throw exception for UNNEST in lambdas by @taniabogatsch in #13969
- Fixing some parquet issues found by fuzzing by @hannes in #13964
- fix julia partitions for streaming result by @piever in #14000
- More descriptive Parquet created_by with version and source hash by @hannes in #13992
- Decimal downcast limit check by @pdet in #13922
- [C API] Add SQLNULL to the duckdb types by @taniabogatsch in #13999
- Fix crash in the shell caused by printing blobs that failed to cast by @Maxxen in #13983
- [Binding] Always try binding with the schema of the
UserType
first if it's set by @Tishj in #13995 - [Arrow] Only produce 'arrow.json' Extension types when
arrow_lossless_conversion
is enabled. by @Tishj in #13989 - Bugfixes by @lnkuiper in #13982
- Disable swift linux tests by @Mytherin in #14019
- fix minor typos in comments of aggregate function tests by @era127 in #14007
- [CSV Sniffer] Slight change of rules for dialect detection by @pdet in #14013
- [Test Fix] Add noforcestorage to in-memory tests by @taniabogatsch in #14016
- Fix #14020: fix off-by-one in RLE compression: avoid flushing when last_seen_count == 0 which can happen if a column has exactly 2^16 (65535) repeated values by @Mytherin in #14030
- Adds Julia support for scalar UDFs by @drizk1 in #14024
- Proper NULL handling in special json extraction functions by @lnkuiper in #14032
- Fix #13993 - avoid disabling optimizers for SET VARIABLE by @Mytherin in #14028
- [Arrow] Make unknown Arrow extensions throw at scan instead of bind by @pdet in #14015
- Improve assertion macros by @c-herrewijn in #14033
- [Arrow] Move
ArrowUtil
to its own file by @Tishj in #13990 - [CSV Sniffer] Verify validity of header before value access by @pdet in #14040
- Fix #14026: all TIMESTAMP_xx cannot cast to TIME directly by @flashmouse in https://...
Assets 14
DuckDB 1.1.0 "Eatoni"
fa5c2fe
Compare
This release of DuckDB is named "Eatoni" after Eaton's pintail (Anas Eatoni) from the southern Indian Ocean.
Please also refer to the announcement blog post: https://duckdb.org/2024/09/09/announcing-duckdb-110
What's Changed
- Add feature changes back in by @Mytherin in #11146
- Make
MultiFileReader
filename configurable by @lnkuiper in #11178 - [Dev] Fix compilation issues on
feature
by @Tishj in #11082 - add query() and query_table() functions by @chrisiou in #10586
- [Block Size] Move the block allocation size into the block manager by @taniabogatsch in #11176
- LIMIT pushdown below PROJECT by @jeewonhh in #11112
- BUGFIX: IN () filter with one argument should translate to = filter. by @Tmonster in #11473
- Regression Script should calculate micro benchmark differences with the correct base branch by @Tmonster in #11762
- Pushdown filters on window partitions by @Tmonster in #10932
- Arrow ListView Type by @Tishj in #10766
- Add scalar function support to the C API by @Mytherin in #11786
- Add TopN optimization in physical plan mapping by @kryonix in #11290
- Join-dependent filter derivation by @lnkuiper in #11272
- Implement
ROW_GROUPS_PER_FILE
for Parquet by @lnkuiper in #11249 - Prefer Final projected columns on probe side if cardinalities are similar by @Tmonster in #11109
- Propagate unused columns to distinct on by @Tmonster in #11006
- Separate eviction queues by
FileBufferType
by @lnkuiper in #11417 - Disable false positive for vector size nightly in test by @taniabogatsch in #11953
- Rework jemalloc extension by @lnkuiper in #11891
- Tweak jemalloc config by @lnkuiper in #12034
- Httpfs test to nightly by @carlopi in #12196
- Removed three reinterpret casts and some rewriting by @taniabogatsch in #12200
- Begin Profiling Rework to move towards Modularity by @maiadegraaf in #11101
- [CLI] Add highlighting + limited auto-complete for shell dot commands by @Mytherin in #12201
- Skip test to fix block size nightly and add more explicit error checking by @taniabogatsch in #12211
- Remove BLOCK_ALLOC_SIZE from the column segment files by @taniabogatsch in #11474
- [Julia] - Added optional
schema
input argument toDuckDB.Appender
constructor by @curtd in #12174 - Fix Mark Index in the Bound Join Ref by @pdet in #12263
- Fix for CI Regression Failure by @maiadegraaf in #12273
- π¦ by @samansmink in #12303
- Disable
JEMALLOC_RETAIN
by @lnkuiper in #12185 - Enforce compression extensions for CSV Files by @pdet in #11903
- Make spuriously failing test more robust by @lnkuiper in #12306
- Add new extensions to issue template by @szarnyasg in #12313
- [Fix] Block size nightly run by @taniabogatsch in #12283
- Spell Check | Nothing Major | Corrected base_scanner.cpp by @nj7 in #12282
- add duckdb_bind_timestamp_tz function to C API by @karlseguin in #12151
- [Python] Add some date/datetime functions to pyspark api by @mariotaddeucci in #12075
- Fixes to Windows workflow and ubuntu_18 action by @carlopi in #12308
- [Extension Dev] Forward declare re2 in
hive_partitioning.hpp
by @Tishj in #12302 - add expected errors to test/sql/copy/per_thread_output.test by @hmeriann in #12280
- Issue #12287: ICU Strptime Lists by @hawkfish in #12295
- Issue #12171: Streaming Window FILTER by @hawkfish in #12250
- [Python] Update the Connection wrapper generation, now generates c++ code by @Tishj in #12216
- Use iterator buffer position when storing buffer handles by @pdet in #12315
- Bump Julia client to v0.10.3 by @Mytherin in #12323
- Fix #12286 - in the MetadataManager, prefer to allocate new blocks if the next free block id is smaller than the currently used metadata block by @Mytherin in #12318
- [Fix] Only read file size if file handle still exists by @taniabogatsch in #12319
- Add support for APPEND argument to hive partitioned write by @Mytherin in #12262
- Remove all reinterpret casts from the transformer by @taniabogatsch in #12320
- Additional check for overlapping CTE names by @lnkuiper in #12305
- [Dev]
STANDARD_VECTOR_SIZE
andBLOCK_ALLOC_SIZE
can now be set through the Makefile by @Tishj in #12164 - [Upsert] Fix issue with lambdas in
DO UPDATE SET
expressions by @Tishj in #11866 - [Python] Fix scoping issue for
pandas_analyze_sample
setting by @Tishj in #11706 - Support REGEX matches expected error message by @hmeriann in #12327
- Allow run_fuzzer to reduce multi statements. by @Tmonster in #12278
- Fix #12328 - when flattening STRUCT vectors with NULL values, we need to flatten the children recursively as well by @Mytherin in #12332
- Make
dbgen
generate data in parallel by @Mytherin in #12337 - dbgen: skip parallel generation if DUCKDB_NO_THREADS is set by @Mytherin in #12341
- Add prefix prefix_front_back. to get prefix_front_ and prefix_back_ by @liujiayi771 in #12344
- Issue #12171: Streaming Windowed DISTINCT by @hawkfish in #12311
- Update README by @szarnyasg in #12357
- [CSV Reader] [Skip Option] Tests and fixes by @pdet in #12213
- Adjust BM25 score in FTS extension to prevent negative scores by @lnkuiper in #12356
- Fix typos by @szarnyasg in #12360
- Fix #12293 - accept NULL values in generate_series with timestamp by @Mytherin in #12367
- Fix #12335: avoid calling fsync when writing Parquet files, instead just close the file by @Mytherin in #12371
- Fix parameters passed down to other workflows in OnTag.yml by @carlopi in #12369
- [Python] Fixes for the SQLLogicTest runner implementation by @Tishj in #12372
- Bump julia to v1.0.0 by @Mytherin in #12379
- Fix #11921 - varchar -> timestamp casts are not invertible by @Mytherin in #12376
- Upgrade utf8proc - and move our custom extensions out of utf8proc itself by @Mytherin in #12373
- change max_queries number back to 2000 by @Tmonster in #12375
- Remove sqlsmith extension by @Tmonster in #12300
- Reorder semi and anti joins. by @Tmonster in #11815
- Issue #12351: implicit cast to
TIMESTAMP_MS
,TIMESTAMP_S
,TIMESTAMP_NS
fromDATE
values by @akoshchiy in #12352 - Issue #10023: Approx_Count_Distinct Memory Usage by @hawkfish in #12355
- Fix a small typo in dev instructions for swift setup by @gjmwoods in #12383
- Release lock before returning
BufferHandle
inStandardBufferManager::Pin
by @lnkuiper in #12391 - Remote attach autoload by @carlopi in #12393
- Add JSON type to Parquet reader/writer by @lnkuiper in #12222
- Add
RETURN_FILES
parameter toCOPY TO
by @lnkuiper in #12220 - Updated JoinHashTable to use linear probing to resolve hash collisions by @gropaul in #11472
- [Benchmark Runner] Add
--disable-timeout
flag by @Tishj in #12387 - Don't replace unicode spaces within
$$
quotes in query strings by @lnkuiper in #12405 - [Python] Fix fatal exception caused by empty Pandas Categorical objects. by @Tishj in https://github...