Diesel 2.3.0
This release includes a several large extensions to the query DSL provided by Diesel and also helps increases the number of platforms you can use Diesel on out of the box. Notable changes include:
- Improved query construction via
#[derive(HasQuery)] - Added support for window functions
- Using SQLite with WASM in your browser
- Extended support for various types, functions and operators in the PostgreSQL backend
- Support for
JSONandJSONBin the SQLite backend
See the release blog for the full announcement
You can support the development of Diesel by:
- Contributing Code, Documentation or Guides. Checkout the planing for Diesel 2.4 for open tasks.
- Providing knowledge and help to maintain the MySQL/MariaDB backend. This is currently the only in-tree backend that is not used by any maintainers, so having someone around that actually uses this backend would be very helpful for the Diesel project.
- Answering questions in our discussion forum
- Reporting bugs in our issue tracker
- Helping triaging issues in our issue tracker
- Sponsoring the maintainers.
Added
- Added
limit()andoffset()DSL to combination clauses such asUNION - Fixed
#[derive(Identifiable)]ignoring attribute#[diesel(serialize_as)]on primary keys - Added embedded struct support for
AsChangesetvia#[diesel(embed)] - Added a
#[diesel(skip_update)]attribute for theAsChangesetderive to skip updating a field present in the struct - Support for libsqlite3-sys 0.35.0
- Add support for built-in PostgreSQL range operators and functions
- Support for postgres multirange type
- Added
diesel::r2d2::TestCustomizer, which allows users to customize theirdiesel::r2d2::Pools
in a way that makes the pools suitable for use in parallel tests. - Added support for built-in PostgreSQL range operators and functions
- Added support for various built-in PostgreSQL array functions
- Added
JsonandJsonbsupport for the SQLite backend. - Added a
#[diesel::declare_sql_function]attribute macro to easily define support for
multiple sql functions at once via anextern "SQL"block - Support
[print_schema] allow_tables_to_appear_in_same_query_config = "fk_related_tables"to generate separateallow_tables_to_appear_in_same_query!calls containing only tables that are related through foreign keys. (Default:"all_tables".) It is not possible to build queries using two tables that don't appear in the sameallow_tables_to_appear_in_same_query!call, but that macro generates O(n²) rust code, so this option may be useful to reduce compilation time. (#4333) - Added
wasm32-unknown-unknowntarget support for sqlite backend. - Add support for the
CASToperator - Support
[print_schema] allow_tables_to_appear_in_same_query_config = "none"to generate noallow_tables_to_appear_in_same_query!calls. (Default:"all_tables".). (#4333) - Add
[print_schema] pg_domains_as_custom_typesparameter to generate custom types for PostgreSQL domains that matches any of the regexes in the given list. (Default:[].) This option allows an application to selectively give special meaning for the serialization/deserialization of these types, avoiding the default behavior of treating the domain as the underlying type. (#4592) - Add support for batch insert and upsert statements with returning for SQLite
- Add support for window functions and aggregate expressions.
Fixed
- Fixed diesel thinking
a.eq_any(b)was non-nullable even ifaandbwere nullable. - Generate
InstrumentationEvent::BeginTransactionfor immediate and exclusive transactions in SQLite - Use a single space instead of two spaces between
DELETE FROM. - Diesel CLI now ensures that migration versions are always unique. If it fails to generate a unique version, it will return an error. The new version format remains compatible with older Diesel versions.
- Updated
ipnetworkto allow version 0.21.
Changed
- Use distinct
DIESEL_LOGlogging filter env variable instead of the defaultRUST_LOGone (#4575) - The minimal supported Rust version is now 1.86.0
Full Changelog: v2.2.0...v2.3.0