Skip to content

Releases: duckdb/duckdb-rs

v1.10502.0

14 Apr 09:06
8aa176a

Choose a tag to compare

Highlights

  • Lifetime-safe vectors: FlatVector, ListVector, ArrayVector, and StructVector now carry a lifetime parameter tied to DataChunkHandle, preventing use-after-free bugs. Breaking: these types must be written as FlatVector<'_>, etc.
  • Static DuckDB extensions (experimental): new bundled-cmake feature builds DuckDB through upstream CMake, enabling static extensions like icu. Checkout-only for now.
  • Upgraded to bundled DuckDB v1.5.2.

What's Changed

Full Changelog: v1.10501.0...v1.10502.0

v1.10501.0

23 Mar 15:27
a0ada45

Choose a tag to compare

Highlights

  • New profiling metrics API: collect query profiling data (timing, row counts, operator tree) via Connection.
  • Removed deprecated arrow2 exposure: step2() is gone. Use query_polars() for Polars DataFrames or step() for raw arrow-rs access. Breaking change.
  • duckdb_entrypoint_c_api macro now suppresses the clippy::missing_safety_doc lint automatically.
  • Upgraded to Arrow 58 and bundled DuckDB v1.5.1.

What's Changed

New Contributors

Full Changelog: v1.10500.0...v1.10501.0

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