Skip to content

Releases: duckdb/duckdb

v1.1.1 Bugfix Release

24 Sep 08:38
af39bd0
Compare
Choose a tag to 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 for temporary_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 an exclude_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 support repository/repository_url and version 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 for explain('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://...
Read more

DuckDB 1.1.0 "Eatoni"

09 Sep 12:31
fa5c2fe
Compare
Choose a tag to 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

Read more

DuckDB 1.0.0 "Nivis"

03 Jun 13:08
Compare
Choose a tag to compare

This release of DuckDB is named "Nivis" after the sadly non-existent Snow Duck (Anas Nivis) that is known for its stability.

Please also refer to the announcement blog post: https://duckdb.org/2024/06/03/announcing-duckdb-100

What's Changed

  • Fix move constants optimization by @gitccl in #12189
  • FALLOC_FL_PUNCH_HOLE requires GLIBC 2.18 or above - check for this using an #ifdef by @Mytherin in #12193
  • Fix cmake install for shared_ptr headers by @carlopi in #12194
  • Fix minor warnings by @carlopi in #12195
  • Install .ipp files in addition to the usual .hpp files by @smonkewitz in #12198
  • Set a default value to the connection param in stubs by @tm-drtina in #12207
  • Fix #12190: add SYSTEM to set of reserved database names by @Mytherin in #12206
  • Add enable_view_dependencies which defaults to false by @Tishj in #12209
  • [Python] Fix replacement scans incorrectly finding duckdb connection method objects by @Tishj in #12208
  • [CI] Diff against the right remote + branch in Regressions.yml - Regression Test new micro benchmark by @Tishj in #12106
  • [Python] Fix bug where enable_external_access was not being respected by the replacement scan by @Tishj in #12224
  • Remove outdated CI for extensions, check duckdb/extension-ci-tools by @carlopi in #12229
  • Python: Avoid packaging for both 3.7 on OSX and MacOS 11 by @carlopi in #12236
  • Issue #12215: AsOf Predicate Pushdown by @hawkfish in #12238
  • [DependencyManager] Don't block ADD COLUMN statements if there are dependencies. by @Tishj in #12226
  • [Python] Add check for 'params' to table_function by @Tishj in #12233
  • Extension installing/updateing fixes by @samansmink in #12221
  • Move excel extension out of tree by @carlopi in #12123
  • Fix #12225: revert OVERWRITE_OR_IGNORE to previous behavior, move new behavior to OVERWRITE flag by @Mytherin in #12240
  • Fix warning on unannotated fallthrough by @carlopi in #12244
  • Fixup staged uploads /3 by @carlopi in #12245
  • [Python] fix build when BUILD_HTTPFS set by @paparodeo in #12223
  • Use --always option of git describe for extension tags. by @carlopi in #12253
  • [Docs] Fix up examples/python/duckdb-python.py by @Tishj in #12255
  • [Fix] Skip lazy WAL creation test for alternative verification by @taniabogatsch in #12258
  • add missing virtual destructor by @samansmink in #12266
  • Add storage callbacks for checkpoint start and end by @bleskes in #12260
  • Do not prefix error messages with an unknown type by @bleskes in #12265
  • Fix minor duckdb_extensions table function bug by @samansmink in #12269
  • C API: Adding deprecation and move notices to duckdb.h and a test case by @hannes in #12259
  • Issue #12252: APPROX_QUANTILE Array Argument by @hawkfish in #12271
  • Turn InternalException into NotImplementedException in COPY FROM DATABASE by @Mytherin in #12264
  • Add descriptions for vss and delta extensions by @carlopi in #12267
  • [C-API] Properly handle exceptions caused by name collisions in duckdb_register_table_function by @Tishj in #12257
  • Fix for multifilereader extra_columns feature by @samansmink in #12281
  • Add enable_macro_dependencies which defaults to false by @Mytherin in #12291

Full Changelog: v0.10.3...v1.0.0

v0.10.3 Bugfix Release

22 May 13:30
70fd6a8
Compare
Choose a tag to compare

This is a bug fix release for various issues discovered after we released 0.10.2. There are no new major features, just bug fixes. Database files created by DuckDB v0.10.* or v0.9.* can be read by DuckDB v0.10.3.

Highlights

Even though this is "only" a bug fix release, there have been some major areas of work that warrant a separate mention:

  • We have added a feature to update extensions using the UPDATE EXTENSIONS syntax #11677
  • There have been some serious internal improvements around checkpointing, most notably, checkpoints can run while other connections are reading, and no longer block new connections while checkpointing #11918. Also, FORCE CHECKPOINT no longer actively cancels transactions, it now waits until it can checkpoint #12061
  • DuckDB now has native support to load data from HuggingFace using the hf:// prefix #11831
  • We have slightly changed NULL casting behaviour with the MAP type #11745
  • The Java JDBC driver has been moved to its own repo: https://github.com/duckdb/duckdb-java #11873
  • DuckDB now cleanly compiles with -Wconversion and all conversions are actually being checked #11716, #11673

What's Changed

  • Add setting to control the maximum swap space by @Tishj in #10978
  • [Python][Dev] Dynamically generate the Connection wrapper methods by @Tishj in #11202
  • Fixes duckdb wasm by @carlopi in #11688
  • Checked conversions between signed and unsigned integers by @hannes in #11673
  • Bump Julia to v0.10.2 by @Mytherin in #11700
  • Minor improvements to sql_reduce script by @Mytherin in #11701
  • Properly avoid build-time dependency on Python by @carlopi in #11713
  • Test dockerized compilation in Alpine:latest and Ubuntu:20.04 by @carlopi in #11708
  • [COPY CSV] Enable TIMESTAMP_TZ formats by @Tishj in #11711
  • Full conversion warnings / checks by @hannes in #11716
  • [Safety] Add safety checks to shared_ptr access by @Tishj in #11696
  • Remove bound_defaults from BoundCreateTableInfo by @Mytherin in #11721
  • Improve mkdir error reporting by @Mytherin in #11723
  • [Dev] Fix failing CI in Python SQLLogicTest Runner by @Tishj in #11724
  • More docker tests, fix compilation up to C++23 standard by @carlopi in #11725
  • Upload staging: from 'git describe --tags' to 'git log -1' by @carlopi in #11715
  • Internal #1848: Window Progress by @hawkfish in #11702
  • Remove BoundConstraint from the TableCatalogEntry by @Mytherin in #11735
  • Implicit Cast for any Date/Timestamp by @pdet in #11733
  • feat: rewrite which_secret() into a table function by @stephaniewang526 in #11726
  • [Map] Rework MAP creation method behavior when input is NULL by @Tishj in #11730
  • [Dev] Always use SQLStatement->Copy() when ALTERNATIVE_VERIFY is defined by @Tishj in #11732
  • Reconstruct Error Messages for Flush Cast by @pdet in #11736
  • Getting Rid of Value.TryCast in the CSV Sniffer by @pdet in #11717
  • Fix Join order optimizer so that plan generation is always via the most current entry in the DP table. by @Tmonster in #11719
  • fix(py): support DuckDBPyType#children for array and enum by @Mause in #11754
  • Consider not null values when doing export database by @pdet in #11679
  • Add missing space in error message by @szarnyasg in #11759
  • Allow to build python packages without c++ sources by @carlopi in #11758
  • No Mark to Semi join conversion in statistics propagation by @Tmonster in #11596
  • Hive partitioned write: lazy partitioning initialization by @Mytherin in #11765
  • Hive partitioning: avoid calling CreateDirectories for every flush, instead create the directory for a partition only when that partition is instantiated by @Mytherin in #11777
  • [Parquet] Support reading the non-standard NULL ConvertedType by @Tishj in #11774
  • Only store CSV Errors if we are doing rejects table, otherwise just ignore it. by @pdet in #11763
  • CI: Add job for 'expected behavior' label by @szarnyasg in #11784
  • Move recursive_query_csv.test to slow test by @pdet in #11770
  • [StatementVerifier] Fix up issues in ToString implementations of classes derived from SQLStatement by @Tishj in #11625
  • Hive partitioning: make OVERWRITE_OR_IGNORE remove files on local file systems by @Mytherin in #11787
  • [ODBC] Add ODBC Test for Database Reconnection and Data Persistence by @maiadegraaf in #11783
  • Correctly parse dollar-quoted strings in sqlite3_complete and linenoise by @Mytherin in #11789
  • Add a configurable compression_level parameter to the parquet writer by @Mytherin in #11791
  • Close file after file lock failure by @awitten1 in #11795
  • Python: Add missing options to write_parquet by @jzavala-gonzalez in #11790
  • [PythonDev] Fix up failing tests in CI by @Tishj in #11801
  • Fix static bitpacking_width_t FindMinimumBitWidth(T *values, idx_t count) in class BitpackingPrimitives by @Lloyd-Pottiger in #11757
  • Add note on CMAKE_BUILD_PARALLEL_LEVEL by @mlafeldt in #11808
  • Elaborate on internal errors by @szarnyasg in #11816
  • Fix #11756: Don't throw exception on CREATE UNIQUE INDEX IF NOT EXISTS if index already exists by @ewencp in #11821
  • Python CI fixes: skip two tests by @carlopi in #11818
  • Fix #11798 - lateral join parameters should not be visible in views by @Mytherin in #11825
  • Fix #11804: make sure json_type can check null by @lnkuiper in #11807
  • Fixing performance regression in [u]hugeint cast by @hannes in #11829
  • [Dev] ClientContextWrapper yak shaving by @Tishj in #11830
  • [Python] Add checkpoint method, improve shutdown experience by @Tishj in #11810
  • [Benchmark] Enable benchmarking result collection by @Tishj in #11529
  • [DependencyManager] Create dependencies between foreign key tables and primary key tables. by @Tishj in #11524
  • [Python] Synchronize defaults of DuckDBPyRelation method fetch_df_chunk by @Tishj in #11834
  • Internal #1888 TIMETZ Collation Keys by @hawkfish in #11861
  • Removing old code that used to check if a buffer was the last buffer from the file handler by @pdet in #11846
  • Use ToSQLString() in ConstantFilter for escaped filter output by @rcurtin in #11797
  • [StatementVerifier] Add ToString for every remaining SQLStatement, is pure virtual now by @Tishj in #11788
  • Pushdown Tables Types to CSV Scanner by @pdet in #11792
  • [Python Dev] Fix shift between requirements-dev.txt and pyproject.toml before-test section by @Tishj in #11863
  • Join order optimizer asan bug Follow up by @Tmonster in #11794
  • BugFix: Introducing Introducing Delim Joins and Delim_Get(s) should respect positionally by @Tmonster in #11812
  • Provide the native OID of PG type in pg_type by @goldmedal in #11746
  • Move JDBC (Java) Driver to Separate Repo by @hannes in #11873
  • Link Java client in issue template by @szarnyasg in #11877
  • Change specificity of sniffed types to check time related types earlier by @pdet in #11878
  • fix complex top n test case for constant vector verification by @Tmonster in #11882
  • [Dev] Merge overloads for HUGEINT cast functions by @Tishj in #11879
  • Make " default for quote and " default for escape by @pdet in #11880
  • Set secret directory to a test directory when running sqllogictest by @Mytherin in #11885
  • Bugfixes by @lnkuiper in #11785
  • [Map] Rework interaction (entries, keys, values, extr...
Read more

v0.10.2 Bugfix Release

17 Apr 13:50
1601d94
Compare
Choose a tag to compare

This is a bug fix release for various issues discovered after we released 0.10.1. There are no new features, just bug fixes. Database files created by DuckDB v0.10.* or v0.9.* can be read by DuckDB v0.10.2.

SQL Modifications

This release has a number of bug fixes that change SQL semantics in a few edge cases:

  • Nested Boolean Comparisons now have consistent NULL comparison semantics - #11496
  • Structs with non-matching keys require explicit casts when compared or combined - #11396

What's Changed

Read more

v0.10.1 Bugfix Release

18 Mar 16:02
4a89d97
Compare
Choose a tag to compare

This is a bug fix release for various issues discovered after we released 0.10.0. There are no new features, just bug fixes. Database files created by DuckDB v0.10.0 or v0.9.* can be read by DuckDB v0.10.1.

What's Changed

Read more

DuckDB 0.10.0 "Fusca"

13 Feb 13:10
20b1486
Compare
Choose a tag to compare

This release of DuckDB is named "Fusca" after the Velvet Scooter native to Europe.

Note: The on-disk storage format is backwards-compatible with the 0.9 releases of DuckDB. For details, please see the release announcement blog post.

Also note that we've dropped' the "Preview" designation with this release. DuckDB has matured quite a bit since we started creating releases back in 2019, and it is no longer appropriate.

What's Changed

Read more

0.9.2 Bugfix Release

14 Nov 08:32
3c695d7
Compare
Choose a tag to compare

This is a bug fix release for various issues discovered after we released 0.9.1. There are no new features, just bug fixes. Database files created by DuckDB v0.9.0 or v0.9.1 can be read by DuckDB v0.9.2 (i.e. v0.9.2 is backwards compatible with both v0.9.0 and 0.9.1 and vice versa).

What's Changed

Read more

0.9.1 Bugfix Release

11 Oct 10:28
401c806
Compare
Choose a tag to compare

This is a bug fix release for various issues discovered after we released 0.9.0. There are no new features, just bug fixes. Database files created by DuckDB v0.9.0 can be read by DuckDB v0.9.1 (i.e. v0.9.1 is backwards compatible with v0.9.0 and vice versa).

What's Changed

0.9.0 Preview Release "Undulata"

26 Sep 09:57
0d84ccf
Compare
Choose a tag to compare

This preview release of DuckDB is named "Undulata" after the aptly named Yellow-billed duck native to Africa.

Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

What's Changed

Read more