Skip to content

Releases: duckdb/duckdb-rs

v1.10500.0

11 Mar 16:20
2a96f5a

Choose a tag to compare

Warning

New crate versioning scheme. Crate versions now encode the DuckDB version in their second semver component (1.MAJOR_MINOR_PATCH.x), allowing patch releases independent of DuckDB. For example, DuckDB v1.5.0 maps to crate version 1.10500.x.

Highlights

  • Full rust_decimal::Decimal support: FromSql, ToSql, and Appender binding for decimal values.
  • Params implemented for tuples (up to arity 16), enabling conn.execute("...", (a, b, c)) syntax.
  • ENUM columns now support FromSql<String> directly.
  • Date32 and Time64 can now be bound in prepared statements.
  • Loadable extensions need only a single duckdb crate dependency; eliminated .unwrap() panic paths in duckdb_entrypoint_c_api macro.
  • Fix: cloned database handles now keep the original db handle alive (fixes #312).
  • Fix: chrono datetime writes normalized to UTC.
  • Upgraded to Rust edition 2024, Arrow 57, and bundled DuckDB v1.5.0.

What's Changed

New Contributors

Full Changelog: v1.4.4...v1.10500.0

v1.4.4

27 Jan 10:18
46d2e09

Choose a tag to compare

Highlights

  • Appender::append_rows now accepts tuples for heterogeneous data types directly.
  • Loadable extension setup simplified: single loadable-extension feature replaces vtab-loadable + loadable-extension.
  • duckdb_entrypoint_c_api macro re-exported from main crate - no need to depend on duckdb-loadable-macros directly anymore.
  • stream_arrow() now works with CALL statements via automatic fallback to duckdb_fetch_chunk().
  • Streaming execution returns descriptive DuckDB error messages instead of "Unknown error code".
  • Performance: ~2x faster column name lookups via lazy HashMap cache; removed redundant null checks; zero-copy FlatVector::insert for strings.
  • Build: fixed static linking (libduckdb_static.a) and cargo cache invalidation from absolute OUT_DIR.
  • Updated bundled DuckDB to v1.4.4 and Rust to 1.93.

What's Changed

  • Update Cargo.lock and bump crate version in README by @mlafeldt in #646
  • Remove legacy duckdb_entrypoint macro by @mlafeldt in #652
  • Re-export duckdb_entrypoint_c_api from main crate by @mlafeldt in #653
  • Consolidate loadable extension features by @mlafeldt in #654
  • Update Rust to 1.92 by @mlafeldt in #656
  • fix(build): prevent cargo cache invalidation from absolute OUT_DIR path by @cameronraysmith in #658
  • libduckdb-sys/build.rs: fix link directive when statically linking by @brunal in #655
  • performance(row): remove useless null check in value_ref_internal by @fvaleye in #662
  • Enable stream_arrow() to work with CALL statements by @leo-altertable in #660
  • Extract error messages in execute_streaming to provide descriptive errors by @redox in #661
  • performance(statement): introduce a lazy cache for column name to index by @fvaleye in #663
  • Avoid unnecessary copy and allocation in FlatVector::insert by @sfc-gh-bhannel in #665
  • feat: implement AppenderParams for tuples by @MathewBravo in #647
  • Update Rust to 1.93 by @mlafeldt in #669
  • Update DuckDB to v1.4.4 by @mlafeldt in #671
  • Update copyright year by @mlafeldt in #672

New Contributors

Full Changelog: v1.4.3...v1.4.4

v1.4.3

09 Dec 13:58
65e8496

Choose a tag to compare

Highlights

  • Build can auto-download matching prebuilt libduckdb via DUCKDB_DOWNLOAD_LIB=1.
  • Appenders now support column subsets and column switching; defaults/NULLs fill the rest.
  • Table functions can store extra info via the new register_table_function_with_extra_info.
  • Scalar functions can be marked volatile using the volatile trait method.
  • Logical type coverage broadened (new DuckDB IDs, Unsupported fallback).
  • Updated bundled DuckDB to v1.4.3

What's Changed

New Contributors

Full Changelog: v1.4.2...v1.4.3

v1.4.2

13 Nov 14:00

Choose a tag to compare

What's Changed

  • Test behavior of multiple in-memory databases by @mlafeldt in #601
  • Add test for appending struct fields using params! macro by @mlafeldt in #603
  • Mark RawStatement as Send and document thread safety constraints by @mlafeldt in #606
  • Add support for querying parameter names in prepared statements by @mlafeldt in #609
  • Add installation guide to README by @mlafeldt in #611
  • Document ICU extension limitations with bundled feature by @mlafeldt in #612
  • Don't try to test README snippet by @mlafeldt in #613
  • Add missing 28 to AppenderParams array impl by @mlafeldt in #614
  • Create an appender to specific catalog + schema + table by @mchataigner in #623
  • Add basic support for FixedSizeBinary using Blob by @mchataigner in #624
  • refactor(types): use into_result in from_sql and improve decimal conversion by @fvaleye in #616
  • performance(chrono): use write! macro to improve date formatting by @fvaleye in #617
  • performance(memory): improve memory allocation when the size is known by @fvaleye in #618
  • Add column_logical_type and get/set_alias methods by @diegoimbert in #620
  • Update DuckDB to v1.4.2 by @Maxxen in #625

New Contributors

Full Changelog: v1.4.1...v1.4.2

v1.4.1

07 Oct 11:58

Choose a tag to compare

What's Changed

Full Changelog: v1.4.0...v1.4.1

v1.4.0

17 Sep 08:35
c20ace3

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.3.2...v1.4.0

v1.3.2

09 Jul 13:00
19acb89

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.3.1...v1.3.2

v1.3.1

23 Jun 14:14

Choose a tag to compare

Had to re-issue the release since the CD job failed. Sorry about that!

What's Changed

Full Changelog: v1.3.0...v1.3.1

v1.3.0

03 Jun 21:21

Choose a tag to compare

Note

Unfortunately this release contains a regression when reading DECIMAL types through arrow. DuckDB v1.3.0 contains new physical types for decimals and will try to use the smallest possible representation for decimals depending on their logical scale and width - but arrow-rs currently only supports 128 and 256-bit decimals (not e.g. 32-bit used with smaller widths), and will thus throw an error when these smaller decimals are read from DuckDB. Regardless of when/if arrow-rs adds support for smaller decimal types, the plan is to make this behavior configurable in DuckDB v1.3.1.

What's Changed

New Contributors

Full Changelog: v1.2.2...v1.3.0

1.2.2

11 Apr 11:41

Choose a tag to compare

What's Changed

  • include the correct duckdb sources for v1.2.1 by @Maxxen in #469
  • Explicitly define NDEBUG on release builds by @Maxxen in #474
  • Use the crate name if ext_name is not specified by @yutannihilation in #472
  • Set the default min version when min_duckdb_version is not specified by @yutannihilation in #473
  • Fix clippy warnings + symbolize ASAN stack traces by @Maxxen in #490
  • Upgrade to DuckDB v1.2.2 by @Maxxen in #491
  • Add unit test for table function and remote parquet source, merged with main by @Maxxen in #492

Full Changelog: v1.2.1...v1.2.2