Releases: duckdb/duckdb-rs
Releases · duckdb/duckdb-rs
v1.10502.0
Highlights
- Lifetime-safe vectors:
FlatVector,ListVector,ArrayVector, andStructVectornow carry a lifetime parameter tied toDataChunkHandle, preventing use-after-free bugs. Breaking: these types must be written asFlatVector<'_>, etc. - Static DuckDB extensions (experimental): new
bundled-cmakefeature builds DuckDB through upstream CMake, enabling static extensions likeicu. Checkout-only for now. - Upgraded to bundled DuckDB v1.5.2.
What's Changed
- Restrict Dependabot to direct dependencies by @mlafeldt in #719
- Disable routine dependabot version PRs by @mlafeldt in #730
- Add -c flag to example REPL for testing by @mlafeldt in #735
- Update Cargo.lock and pin comfy-table by @mlafeldt in #736
- Tie vector lifetimes to DataChunkHandle by @mlafeldt in #737
- Enable static DuckDB extensions via Cargo in checkouts by @mlafeldt in #732
- Update DuckDB to v1.5.2 by @mlafeldt in #741
Full Changelog: v1.10501.0...v1.10502.0
v1.10501.0
Highlights
- New profiling metrics API: collect query profiling data (timing, row counts, operator tree) via
Connection. - Removed deprecated
arrow2exposure:step2()is gone. Usequery_polars()for Polars DataFrames orstep()for raw arrow-rs access. Breaking change. duckdb_entrypoint_c_apimacro now suppresses theclippy::missing_safety_doclint automatically.- Upgraded to Arrow 58 and bundled DuckDB v1.5.1.
What's Changed
- duckdb_entrypoint_c_api: suppress missing_safety_doc lint by @mlafeldt in #704
- Clarify MSRV policy under new versioning by @mlafeldt in #705
- Update deps for development by @mlafeldt in #706
- Add support for collecting profiling metrics by @Maxxen in #707
- Profiling metrics follow-up by @Maxxen in #712
- chore: update to arrow v58 by @gadomski in #702
- Remove direct arrow2 exposure by @mlafeldt in #698
- Adapt upgrade.sh scripts to new versioning by @mlafeldt in #717
- Update DuckDB to v1.5.1 by @mlafeldt in #718
New Contributors
Full Changelog: v1.10500.0...v1.10501.0
v1.10500.0
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::Decimalsupport:FromSql,ToSql, andAppenderbinding for decimal values. Paramsimplemented for tuples (up to arity 16), enablingconn.execute("...", (a, b, c))syntax.- ENUM columns now support
FromSql<String>directly. Date32andTime64can now be bound in prepared statements.- Loadable extensions need only a single
duckdbcrate dependency; eliminated.unwrap()panic paths induckdb_entrypoint_c_apimacro. - Fix: cloned database handles now keep the original
dbhandle 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
- Allow to write extension using a single crate dependency by @mlafeldt in #674
- Update authors to include DuckDB Labs and contributors by @mlafeldt in #675
- Upgrade to arrow 57 by @mjgarton in #631
- Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #677
- Fix: keep db handle alive for clones by @mlafeldt in #678
- Simplify ASan CI job by @mlafeldt in #685
- Allow binding Date32 and Time64 by @ultrabear in #682
- Rust 2024 by @mlafeldt in #686
- Remove stale copyright years from README by @mlafeldt in #688
- Verify MSRV in CI by @mlafeldt in #687
- Implement Params for tuples by @mlafeldt in #689
- Fix MSRV CI: disable cargo bin caching by @mlafeldt in #690
- Update contributing doc for required dependency by @dentiny in #633
- Skip CI for doc changes by @mlafeldt in #691
- Add regression test for reading ENUM by @mlafeldt in #693
- Support FromSql for ENUM columns by @mlafeldt in #694
- Speed up ASAN in CI by @mlafeldt in #695
- Update Rust to 1.94 by @mlafeldt in #697
- Feat/bind support for rust_decimal::Decimal by @destinyFvcker in #634
- Improve error handling in duckdb_entrypoint_c_api by @mlafeldt in #699
- fix(loadable-macros): eliminate .unwrap() panic paths in generated extern "C" entry point by @tomtom215 in #696
- Update DuckDB to v1.5.0 by @mlafeldt in #701
New Contributors
- @mjgarton made their first contribution in #631
- @ultrabear made their first contribution in #682
- @dentiny made their first contribution in #633
- @destinyFvcker made their first contribution in #634
- @tomtom215 made their first contribution in #696
Full Changelog: v1.4.4...v1.10500.0
v1.4.4
Highlights
Appender::append_rowsnow accepts tuples for heterogeneous data types directly.- Loadable extension setup simplified: single
loadable-extensionfeature replacesvtab-loadable+loadable-extension. duckdb_entrypoint_c_apimacro re-exported from main crate - no need to depend onduckdb-loadable-macrosdirectly anymore.stream_arrow()now works with CALL statements via automatic fallback toduckdb_fetch_chunk().- Streaming execution returns descriptive DuckDB error messages instead of "Unknown error code".
- Performance: ~2x faster column name lookups via lazy
HashMapcache; removed redundant null checks; zero-copyFlatVector::insertfor strings. - Build: fixed static linking (
libduckdb_static.a) and cargo cache invalidation from absoluteOUT_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
- @cameronraysmith made their first contribution in #658
- @brunal made their first contribution in #655
- @redox made their first contribution in #661
- @sfc-gh-bhannel made their first contribution in #665
- @MathewBravo made their first contribution in #647
Full Changelog: v1.4.3...v1.4.4
v1.4.3
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
volatiletrait method. - Logical type coverage broadened (new DuckDB IDs,
Unsupportedfallback). - Updated bundled DuckDB to v1.4.3
What's Changed
- Update Rust to 1.91 by @mlafeldt in #626
- Download pre-built DuckDB libraries by @mlafeldt in #628
- Handle invalid & unsupported DuckDB types more gracefully by @mlafeldt in #629
- Add missing LogicalTypeId variants to match DuckDB C API by @leo-altertable in #630
- Allow to pass extra info to table functions by @mlafeldt in #637
- Align scalar state semantics and revert TableFunctionOptions by @mlafeldt in #638
- Support volatile scalar functions by @mlafeldt in #639
- Add ListVector::get_entry by @mlafeldt in #640
- Update broken links in CONTRIBUTING.md by @mlafeldt in #641
- Add column-selective appender API with default support by @mlafeldt in #642
- Remove broken release changelog/action by @mlafeldt in #645
- Update DuckDB to v1.4.3 by @mlafeldt in #644
New Contributors
- @leo-altertable made their first contribution in #630
- @tobilg made their first contribution in #639
Full Changelog: v1.4.2...v1.4.3
v1.4.2
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
- @mchataigner made their first contribution in #623
- @fvaleye made their first contribution in #616
- @diegoimbert made their first contribution in #620
Full Changelog: v1.4.1...v1.4.2
v1.4.1
v1.4.0
What's Changed
- Remove personal development files by @mlafeldt in #534
- Make config API more ergonomic by @mlafeldt in #535
- Document what Date32 is and how to convert it by @mlafeldt in #539
- Improve column_count error handling and documentation by @mlafeldt in #541
- Fix vscalar feature to depend on vtab-arrow by @mlafeldt in #542
- Fix feature configuration using cargo-hack by @mlafeldt in #545
- Remove features extra_check and column_decltype by @mlafeldt in #548
- Document Cargo features by @mlafeldt in #549
- Remove unused SmallCString implementation by @mlafeldt in #550
- Reproduce issue with produce_arrow_string_view and show fix by @mlafeldt in #552
- Add REPL example by @mlafeldt in #553
- Document available examples by @mlafeldt in #555
- Overhaul README by @mlafeldt in #556
- Add query_one convenience method by @mlafeldt in #559
- Show how to use Rows.and_then and point users to it by @mlafeldt in #560
- Fix memory leak in Value Display implementation by @mlafeldt in #562
- Document linking against libduckdb on macOS and Linux by @mlafeldt in #563
- Remove redundant flush and close calls in Appender Drop by @mlafeldt in #564
- Add test for foreign key constraint validation in Appender by @mlafeldt in #565
- Speed up CI by canceling in-progress runs by @mlafeldt in #566
- Clean up ignored tests by @mlafeldt in #567
- Support passing custom state to scalar functions by @mlafeldt in #558
- Remove broken SAVEPOINT implementation copied from rusqlite by @mlafeldt in #568
- Document how to get column count by @mlafeldt in #569
- Use Rust 1.89.0 by @mlafeldt in #573
- Set minimal supported Rust version to 1.82.0 by @mlafeldt in #572
- Fix or remove links to SQLite by @mlafeldt in #578
- Remove unsupported TransactionBehavior by @mlafeldt in #579
- Expose Transaction::new_unchecked by @mlafeldt in #580
- Bump slab from 0.4.10 to 0.4.11 by @dependabot[bot] in #581
- Pin nightly Rust to fix ASAN CI job by @mlafeldt in #584
- build(libduckdb-sys): sort C++ source files for deterministic builds by @FabioCanedo in #583
- Fix arrow list type to duckdb logical type conversion by @wangrunji0408 in #574
- Update Arrow to v56 by @mlafeldt in #589
- Update DuckDB to v1.4.0 by @mlafeldt in #590
New Contributors
- @FabioCanedo made their first contribution in #583
- @wangrunji0408 made their first contribution in #574
Full Changelog: v1.3.2...v1.4.0
v1.3.2
What's Changed
- Fix Parquet example to run from workspace root by @mlafeldt in #522
- Update and clean up dependencies by @mlafeldt in #520
- Optimize dependencies by @paolobarbolini in #513
- Update Rust to v1.88.0 by @mlafeldt in #523
- Publish docs for more features by @mlafeldt in #524
- Expand and test Inserter trait by @mlafeldt in #525
- chore: Let Inserter accept &String and &Vec by @yutannihilation in #507
- ran
cargo clippy --fix -- -Wclippy::use_selfby @adamnemecek in #502 - cargo clippy --fix --all-features -- -Wclippy::use_self by @mlafeldt in #526
- First round of CI tweaks by @mlafeldt in #527
- enable union test by @Mause in #340
- Fix timezone-dependent chrono tests with fixed timestamps by @mlafeldt in #528
- Fix column names in Arrow tests by @mlafeldt in #529
- possible typo in appender test case by @era127 in #306
- Add interrupt handle by @jankramer in #493
- Support appending large Arrow record batches by @mlafeldt in #530
- Fix conversion of Arrow floating point types by @mlafeldt in #532
- Update DuckDB to v1.3.2 by @mlafeldt in #531
New Contributors
- @paolobarbolini made their first contribution in #513
- @adamnemecek made their first contribution in #502
- @jankramer made their first contribution in #493
Full Changelog: v1.3.1...v1.3.2
v1.3.1
Had to re-issue the release since the CD job failed. Sorry about that!
What's Changed
- Multiple upgrade.sh improvements by @mlafeldt in #514
- Fix a bunch of problems reported by Clippy by @mlafeldt in #517
- Ensure we all use the same Rust version during development by @mlafeldt in #516
- Update to DuckDB v1.3.1 by @mlafeldt in #515
- bump loadable macros crate by @Maxxen in #521
Full Changelog: v1.3.0...v1.3.1