Skip to content

All versions since Diesel 2.1.6

Diesel 2.1.6

  • Fix using BoxableExpression with having clauses
  • Fix using numeric expressions with aliased fields
  • Minor documentation fixes

You can support the development of diesel by contributions or by sponsoring the project on Github.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.1.5…v2.1.6

Diesel 2.2.0

This release wouldn’t be possible without the support of our contributors and sponsors. If you want to support diesels development, consider joining the reviewer team, submitting PR’s, help writing documentation or sponsor the maintainers.

Added

  • Support [print_schema] exclude_custom_type_definitions = ["Vector"]. If a custom type matches one element on the list it’s skipped.
  • Added automatic usage of all sqlite rowid aliases when no explicit primary key is defined for print-schema
  • Added a #[dsl::auto_type] attribute macro, allowing to infer type of query fragment functions
  • Added the same type inference on Selectable derives, which allows skipping specifying select_expression_type most of the time, in turn enabling most queries to be written using just a Selectable derive.
  • Added an optional #[diesel(skip_insertion)] field attribute to the Insertable derive macro, allowing fields which map to generated columns to be skipped during insertion.
  • Support for connection instrumentation. This allows to inspect any query run by your application
  • Logging in diesel-cli
  • Support for libsqlite3-sys 0.28
  • Add sqlite-integer-primary-key-is-bigint configuration option, usable with SQLite 3.37 or above, allowing to use BigInt for INTEGER PRIMARY KEY columns in SQLite for tables without the WITHOUT ROWID attribute (SQLite doc).
  • Support for multiple print_schema entry in diesel.toml (e.g. [print_schema.user1]), which allows generating multiple schema.rs files
  • Add support for COPY TO and COPY FROM statements
  • Add support for mapping chrono::Duration to postgresql’s INTERVAL sql type
  • Added serialize_database_to_buffer and deserialize_readonly_database_from_buffer methods in SqliteConnection to support serialization/deserialization of SQLite databases to and from byte buffers.
  • Added SerializedDatabase wrapper type for a serialized database that is dynamically allocated by calling serialize_database_to_buffer. This RAII wrapper deallocates the memory when it goes out of scope with sqlite3_free.

Changed

  • The minimal officially supported rustc version is now 1.78.0
  • Deprecated sql_function! in favour of define_sql_function! which provides compatibility with #[dsl::auto_type]
  • Deserialization error messages now contain information about the field that failed to deserialize

New Contributors

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.1.0…v2.2.0

Diesel 2.2.1

You can support the development of diesel by contributions or by sponsoring the project on Github.

  • Fixed using #[dsl::auto_type] with functions that accept reference arguments
  • Fixed using #[derive(Queryable)] with structs that use a type named Row as field type
  • Fixed a regression that prevented using mysqlclient-sys 0.2.x with diesel 2.2
  • Fixed connecting to postgres database using the scram-sha-256 authentication method on windows while using the bundled postgres builds
  • Improved the error messages in diesel-cli for cases where a file/folder was not found
  • Fixed several version detection bugs in mysqlclient-sys to use pre-generated bindings in more situations

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.0…v2.2.1

Diesel 2.2.2

  • Support for libsqlite3-sys 0.29.0
  • Fixed a potential panic in the sqlite cursor implementation
  • Fixed support for rust numeric operators with columns of the type Numeric
  • Removed the SerializedDatabase::new function due to unsoundness

You can support the development of diesel by contributions or by sponsoring the project on Github.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.1…v2.2.2

Diesel 2.2.3

  • Support for libsqlite3-sys 0.30.0
  • Fixed a possible vulnerability in how Diesel handled protocol level bind parameters. See the SQL Injection isn’t Dead: Smuggling Queries at Protocol Level presentation from DEF CON for details
  • Fixed an issue with a possibly ambiguous trait resolution in #[derive(QueryableByName)]

You can support the development of diesel by contributions or by sponsoring the project on Github.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.2…v2.2.3

Diesel 2.2.4

Fixed

  • Fix an issue where empty queries could trigger undefined behaviour in the sqlite backend

Diesel 2.2.5

  • Add a typedef for Returning and Count so that #[auto_type] works with such queries
  • Fixed an issue that allowed to pass non-boolean expressions to .and() and .or() which would result in queries failing at runtime
  • Officially deprecating the gitter room

You can support the development of diesel by contributions or by sponsoring the project on Github.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.4…v2.2.5

Diesel 2.2.6

What’s Changed

  • Remove more mentions of gitter from the documentation

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.5…v2.2.6

Diesel 2.2.7

Fixed

  • Fixed diesel thinking a.eq_any(b) was non-nullable even if a and b were nullable.
  • Generate InstrumentationEvent::BeginTransaction for immediate and exclusive transactions in SQLite
  • Minimize the amount of duplicated code generated for diesel::debug_query
  • Updated ipnetwork to allow version 0.21.
  • Updated libsqlite3-sys to allow version 0.31.0
  • Updated pq-sys to allow version 0.7.0
  • Add support for numeric operators (+-*/) in #[diesel::auto_type]
  • Add support for joins to sub-jons to aliases

You can support the development of diesel by contributions or by sponsoring the project on Github

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.6…v2.2.7

Diesel 2.2.8

Fixed

  • Allow #[diesel(check_for_backend(_))] to check fields with #[diesel(embed)] annotations
  • Improve custom compile error message around CompatibleType
  • Fix a bug that restricted the number of allowed columns in COPY FROM statements to 12
  • Expose some SqliteValue helper functions
  • Use consistent whitespace in ASC/DESC, DISTINCT ON, and DELETE FROM clauses

You can support the development of diesel by contributions or by sponsoring the project on Github

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.7…v2.2.8

Diesel 2.2.9

Fixed

  • Fix an issue where diesel migration generate --diff-schema incorrectly uses the primary key of table B as the referenced column rather than the primary key of table A when B has a foreign key pointing to table A.
  • Bump maximal supported libsqlite3-sys version to 0.32.0 and add explicit feature entries for the uuid and serde_json feature.
  • Fixed an issue where diesel generated unnamed prepared statements would fail with an unanmed prepared statement not found error with pgbouncer.
  • Fix an issue with converting ipnet::Ipnet values with an subnet to SQL values

You can support the development of diesel by contributions or by sponsoring the project on Github

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.8…v2.2.9

Diesel 2.2.10

Fixed

  • Support for libsqlite3-sys 0.33.0
  • Fixed potential ambiguities in code generated by various derives

You can support the development of diesel by contributions or by sponsoring the project on Github

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.9…v2.2.10

Diesel 2.2.11

What’s Changed

  • Disallow mixing aggregate and non-aggregate expressions in DISTINCT ON clauses
  • Fixed an item referenced by a non-absolute path in #[derive(MultiConnection)]
  • Improved compiler errors in some cases
  • Improved the documentation for creating SqliteConnections for concurrent applications

You can support the development of Diesel by contributions or by sponsoring the project on Github

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.10…v2.2.11

Diesel 2.2.12

Fixed

  • Added support for libsqlite3-sys 0.35.0
  • Fixed a wrong oid for the oid[] type in the PostgreSQL backend
  • Worked around an issue with broken nullable detection with certain versions of libmysqlclient shipped by ubuntu
  • Improved compiler errors in many more cases

You can support the development of Diesel by contributions or by sponsoring the project on GitHub

Call for Input

We are looking for input on a newly designed derive to make constructing queries easier. See here for details.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.11…v2.2.12

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 JSON and JSONB in 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() and offset() DSL to combination clauses such as UNION
  • Fixed #[derive(Identifiable)] ignoring attribute #[diesel(serialize_as)] on primary keys
  • Added embedded struct support for AsChangeset via #[diesel(embed)]
  • Added a #[diesel(skip_update)] attribute for the AsChangeset derive 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 their diesel::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 Json and Jsonb support for the SQLite backend.
  • Added a #[diesel::declare_sql_function] attribute macro to easily define support for multiple sql functions at once via an extern "SQL" block
  • Support [print_schema] allow_tables_to_appear_in_same_query_config = "fk_related_tables" to generate separate allow_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 same allow_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-unknown target support for sqlite backend.
  • Add support for the CAST operator
  • Support [print_schema] allow_tables_to_appear_in_same_query_config = "none" to generate no allow_tables_to_appear_in_same_query! calls. (Default: "all_tables".). (#4333)
  • Add [print_schema] pg_domains_as_custom_types parameter 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 if a and b were nullable.
  • Generate InstrumentationEvent::BeginTransaction for 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 ipnetwork to allow version 0.21.

Changed

  • Use distinct DIESEL_LOG logging filter env variable instead of the default RUST_LOG one (#4575)
  • The minimal supported Rust version is now 1.86.0

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.2.0…v2.3.0

Diesel 2.3.2

Fixed

  • Fixed an incompatibility with libmariadb versions shipped by debian
  • Fixed docs.rs builds
  • Fixed applying patch file schema.rs file with formatting
  • Allow to compare DatabaseErrorKind values

(Diesel 2.3.1 did not contain any changes beside the version bump to retrigger the docs.rs build)

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.3.0…v2.3.2

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.

Diesel 2.3.3

Fixed

  • Fix displaying binds in instrumentations for #[derive(MultiConnection)]
  • Support artifact attestation for binaries build for releases
  • Stop using absolute paths in generated diesel.toml
  • Explicitly qualify Ok in code generated by derives to avoid naming conflicts

Starting with Diesel-CLI 2.3.3 you can verify that you downloaded the correct binaries via GitHub’s artifact attestation

gh attestation verify diesel_cli-x86_64-unknown-linux-gnu.tar.xz -R diesel-rs/diesel

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.3.2…v2.3.3

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.

Diesel 2.3.4

Fixed

  • Fix an issue with breaking changes in libmariadb
  • Fix documentation links for helper types
  • Fix using #[diesel(embed)] with Option<Inner> types
  • Fix documentation for concurrent migration runs

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.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.3.3…v2.3.4

Diesel 2.3.5

Fixes

  • Fix another libmariadb related issue with time types
  • Improve compile time error messages for #[derive(Insertable)]
  • Bump supported version of sqlite-wasm-rs to 0.5.0
  • Minor documentation fixes
  • Make the returning_clauses_for_sqlite_3_35 feature enable the sqlite feature by default
  • Include a fix for a nightly rust name resolution ambiguity

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.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.3.4…v2.3.5

Diesel 2.3.6 Latest

Fixed

  • Added support for mysqlclient-sys 0.5.0
  • Fix generating valid schema if a column is named table
  • Fixed a regression with #[derive(Insertable)] if the same field type is used with different lifetime values

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.

Full Changelog: https://github.com/diesel-rs/diesel/compare/v2.3.5…v2.3.6