Skip to content

Releases: duckdb/duckdb-rs

v1.10505.0

Choose a tag to compare

@mlafeldt mlafeldt released this 22 Jul 13:55
88f673c

Highlights

  • New type support: UHUGEINT via u128 (#795), a DuckDB-native Decimal carrier covering all decimals up to DECIMAL(38, s) (#799), GEOMETRY exposed as WKB with CRS metadata (#801), Arrow arrow.uuid extension mapping to UUID (#808), and narrow Arrow Decimal32/Decimal64 (#806)
  • Nested types via Arrow: LIST, STRUCT, MAP, and fixed-size ARRAY values now round-trip through Arrow record batches, vtabs, and scalar functions, with correct timestamp unit handling (#811, #813, #819)
  • Panic containment: panics in scalar and table function callbacks become query errors instead of aborting the host process so the connection stays usable (#824)
  • Correct result metadata: schema and logical types are decoded from the executed result, fixing stale metadata when cached prepared statements outlive schema changes (#800, #803)
  • Leaner build deps: libduckdb-sys downloads now use ureq instead of reqwest, dropping the tokio/hyper stack from build dependencies (#826)
  • ⚠️ Breaking: Type, Value, and ValueRef are now #[non_exhaustive] with new UHugeInt variants (#795); Statement::step returns Result<Option<StructArray>> (#800); stream_arrow no longer takes a schema parameter and the deprecated stream_step is removed (#807)
  • Updated DuckDB to v1.5.5 (#825) and Rust to 1.97 (#812)

What's Changed

Full Changelog: v1.10504.0...v1.10505.0

v1.10504.0

Choose a tag to compare

@mlafeldt mlafeldt released this 17 Jun 13:36
452fc0b

What's Changed

Full Changelog: v1.10503.1...v1.10504.0

v1.4.5 (Andium LTS)

Choose a tag to compare

@mlafeldt mlafeldt released this 17 Jun 13:26
fd36485

Full Changelog: v1.4.5...v1.4.5

What's Changed

Full Changelog: v1.4.4...v1.4.5

v1.10503.1

Choose a tag to compare

@mlafeldt mlafeldt released this 22 May 16:14
3191caa

What's Changed

Full Changelog: v1.10503.0...v1.10503.1

v1.10503.0

Choose a tag to compare

@mlafeldt mlafeldt released this 21 May 14:15
1d999dd

Highlights

  • New ergonomic named parameter binding: named_params! macro, &[(&str, &dyn ToSql)] slices, and a generic HashMap Params impl.
  • New build env vars: DUCKDB_DISABLE_EXTENSION_LOAD=1 disables extension install/load, and DUCKDB_DISABLE_JEMALLOC=1 opts bundled-cmake builds out of jemalloc (now re-enabled by default on supported targets).
  • FFI soundness: typed vector slice/set_child APIs are now unsafe; DuckDB-owned C strings use RAII; binding unsupported Value variants errors instead of panicking.
  • ArrowVTab view rebinds no longer dereference freed Arrow FFI memory.
  • vtab::Value gains typed primitive getters and to_list() -> Option<Vec<Value>>.
  • Bundled DuckDB upgraded to v1.5.3 (adds VARIANT metadata).

What's Changed

New Contributors

Full Changelog: v1.10502.0...v1.10503.0

v1.10502.0

Choose a tag to compare

@mlafeldt mlafeldt released this 14 Apr 09:06
8aa176a

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

Choose a tag to compare

@mlafeldt mlafeldt released this 23 Mar 15:27
a0ada45

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

Choose a tag to compare

@mlafeldt mlafeldt released this 11 Mar 16:20
2a96f5a

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

Choose a tag to compare

@mlafeldt mlafeldt released this 27 Jan 10:18
46d2e09

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

Choose a tag to compare

@mlafeldt mlafeldt released this 09 Dec 13:58
65e8496

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