chore(deps): update rust crate sqlx to 0.9.0 #17

Open
renovate-bot wants to merge 1 commit from renovate/sqlx-0.x into master
Member

This PR contains the following updates:

Package Type Update Change
sqlx build-dependencies minor 0.6.1 -> 0.9.0

Release Notes

launchbadge/sqlx (sqlx)

v0.9.0

Compare Source

Important Announcements
New Github Organization

Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization:
https://github.com/transact-rs/

This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been
informally transferred to the collective ownership of its principal authors. Moving the repository to a new
organization makes this change more clear, and also allows for potentially inviting outside collaborators.

Cargo.lock Removed from Tracking

The Cargo.lock has been removed from tracking in Git. CI should now always test with the latest versions of
all dependencies by default, alongside our pass that checks with cargo generate-lockfile -Z minimal-versions.

This should eliminate the need for any PRs that update dependencies to also update Cargo.lock or
contend with an endless stream of merge conflicts against it.

N.B. cargo install --locked sqlx-cli will no longer work. However, cargo install sqlx-cli has always
used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users
requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran cargo update
sporadically, so relying on SQLx's lockfile offered few guarantees anyway.

See the manual page for cargo install for details.

Breaking

As per our MSRV policy, the supported Rust version for this release cycle is 1.94.0.

  • [#​3383]: feat: create sqlx.toml format [[@​abonander]]
    • SQLx and sqlx-cli now support per-crate configuration files (sqlx.toml)
    • New functionality includes, but is not limited to:
      • Rename DATABASE_URL for a crate (for multi-database workspaces)
      • Set global type overrides for the macros (supporting custom types)
      • Rename or relocate the _sqlx_migrations table (for multiple crates using the same database)
      • Set characters to ignore when hashing migrations (e.g. ignore whitespace)
    • More to be implemented in future releases.
    • Enable feature sqlx-toml to use.
    • Guide: see sqlx::_config module in documentation.
    • Reference: [Link]
    • Examples (written for Postgres but can be adapted to other databases; PRs welcome!):
      • Multiple databases using DATABASE_URL renaming and global type overrides: [Link]
      • Multi-tenant database using _sqlx_migrations renaming and multiple schemas: [Link]
      • Force use of chrono when time is enabled (e.g. when using tower-sessions-sqlx-store): [Link]
        • Forcing bigdecimal when rust_decimal is enabled is also shown, but problems with chrono/time are more common.
    • Breaking changes:
      • Significant changes to the Migrate trait
      • sqlx::migrate::resolve_blocking() is now #[doc(hidden)] and thus SemVer-exempt.
  • [#​3486]: fix(logs): Correct spelling of aquired_after_secs tracing field [[@​iamjpotts]]
    • Breaking behavior change: implementations parsing tracing logs from SQLx will need to update the spelling.
  • [#​3495]: feat(postgres): remove lifetime from PgAdvisoryLockGuard [[@​bonsairobo]]
  • [#​3526]: Return &mut Self from the migrator set_ methods [[@​nipunn1313]]
    • Minor breaking change: Migrator::set_ignore_missing and set_locking now return &mut Self instead of &Self
      which may break code in rare circumstances.
  • [#​3541]: Postgres: force generic plan for better nullability inference. [[@​joeydewaal]]
    • Breaking change: may alter the output of the query!() macros for certain queries in Postgres.
  • [#​3613]: fix: RawSql lifetime issues [[@​abonander]]
    • Breaking change: adds DB type parameter to all methods of RawSql
  • [#​3670]: Bump ipnetwork to v0.21.1 [[@​BeauGieskens]]
  • [#​3674]: Implement Decode, Encode and Type for Box, Arc, Cow and Rc [[@​joeydewaal]]
    • Breaking change: impl Decode for Cow now always decodes Cow::Owned, lifetime is unlinked
    • See this discussion for motivation: #​3674 (comment)
  • [#​3723]: Add SqlStr [[@​joeydewaal]]
    • Breaking change: all query*() functions now take impl SqlSafeStr
      which is only implemented for &'static str and AssertSqlSafe.
      For all others, wrap in AssertSqlSafe(<query>).
    • This, along with [#​3960], finally allows returning owned queries as the type will be Query<'static, DB>.
    • SqlSafeStr trait is deliberately similar to std::panic::UnwindSafe,
      serving as a speedbump to warn users about naïvely building queries with format!()
      while allowing a workaround for advanced usage that is easy to spot on code review.
  • [#​3800]: Escape PostgreSQL Options [[@​V02460]]
    • Breaking behavior change: options passed to PgConnectOptions::options() are now automatically escaped.
      Manual escaping of options is no longer necessary and may cause incorrect behavior.
  • [#​3821]: Groundwork for 0.9.0-alpha.1 [[@​abonander]]
    • Increased MSRV to 1.86 and set rust-version
    • Deleted deprecated combination runtime+TLS features (e.g. runtime-tokio-native-tls)
    • Deleted re-export of unstable TransactionManager trait in sqlx.
      • Not technically a breaking change because it's #[doc(hidden)],
        but it will break SeaORM if not proactively fixed.
  • [#​3924]: breaking(mysql): assume all non-binary collations compatible with str [[@​abonander]]
    • Text (or text-like) columns which previously were inferred to be Vec<u8> will be inferred to be String
      (this should ultimately fix more code than it breaks).
    • SET NAMES utf8mb4 COLLATE utf8_general_ci is no longer sent by default; instead, SET NAMES utf8mb4 is sent to
      allow the server to select the appropriate default collation (since this is version- and configuration-dependent).
    • MySqlConnectOptions::charset() and ::collation() now imply ::set_names(true) because they don't do anything otherwise.
    • Setting charset doesn't change what's sent in the Protocol::HandshakeResponse41 packet as that normally only
      matters for error messages before SET NAMES is sent.
      The default collation if set_names = false is utf8mb4_general_ci.
    • See this comment for details.
    • Incidental breaking change: RawSql::fetch_optional() now returns sqlx::Result<Option<DB::Row>>
      instead of sqlx::Result<DB::Row>. Whoops.
  • [#​3928]: breaking(sqlite): libsqlite3-sys versioning, feature flags, safety changes [[@​abonander]]
    • SemVer policy changes: libsqlite3-sys version is now specified using a range.
      The maximum of the range may now be increased in any backwards-compatible release.
      The minimum of the range may only be increased in major releases.
      If you have libsqlite3-sys in your dependencies, Cargo should choose a compatible version automatically.
      If otherwise unconstrained, Cargo should choose the latest version supported.
    • SQLite extension loading (including through the new sqlx-toml feature) is now unsafe.
    • Added new non-default features corresponding to conditionally compiled SQLite APIs:
      • sqlite-deserialize enabling SqliteConnection::serialize() and SqliteConnection::deserialize()
      • sqlite-load-extension enabling SqliteConnectOptions::extension() and ::extension_with_entrypoint()
      • sqlite-unlock-notify enables internal use of sqlite3_unlock_notify()
    • SqliteValue and SqliteValueRef changes:
      • The sqlite3_value* interface reserves the right to be stateful.
        Without protection, any call could theoretically invalidate values previously returned, leading to dangling pointers.
      • SqliteValue is now !Sync and SqliteValueRef is !Send to prevent data races from concurrent accesses.
        • Instead, clone or wrap the SqliteValue in Mutex, or convert the SqliteValueRef to an owned value.
      • SqliteValue and any derived SqliteValueRefs now internally track if that value has been used to decode a
        borrowed &[u8] or &str and errors if it's used to decode any other type.
      • This is not expected to affect the vast majority of usages, which should only decode a single type
        per SqliteValue/SqliteValueRef.
      • See new docs on SqliteValue for details.
  • [#​3949]: Postgres: move PgLTree::from to From<Vec<PgLTreeLabel>> implementation [[@​JerryQ17]]
  • [#​3957]: refactor(sqlite): do not borrow bound values, delete lifetime on SqliteArguments [[@​iamjpotts]]
  • [#​3958]: refactor(any): Remove lifetime parameter from AnyArguments [[@​iamjpotts]]
  • [#​3960]: refactor(core): Remove lifetime parameter from Arguments trait [[@​iamjpotts]]
  • [#​3993]: Unescape PostgreSQL passfile password [[@​V02460]]
    • Previously, .pgpass file handling did not process backslash-escapes in the password part.
      Now it does, which may change what password is sent to the server.
  • [#​4008]: make #[derive(sqlx::Type)] automatically generate impl PgHasArrayType by default for newtype structs [[@​papaj-na-wrotkach]]
    • Manual implementations of PgHasArrayType for newtypes will conflict with the generated one.
      Delete the manual impl or add #[sqlx(no_pg_array)] where conflicts occur.
  • [#​4077]: breaking: make offline optional to allow building without serde [[@​CathalMullan]]
  • [#​4094]: Bump bit-vec to v0.8 [[@​zennozenith]]
  • [#​4142]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth [[@​dertin]]
    • Connections requiring RSA password encryption now need to enable the mysql-rsa feature
      or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections.
  • [#​4255]: breaking(any+mysql): correctly convert text and blob types to AnyTypeInfo [[@​abonander]]
Added
Changed
Fixed

v0.8.6

Compare Source

9 pull requests were merged this release cycle.

Added
Changed
Fixed

v0.8.5

Hotfix release to address two new issues:

  • [#​3823]: sqlx-cli@0.8.4 broke .env default resolution mechanism
  • [#​3825]: sqlx@0.8.4 broke test fixture setup

The 0.8.4 release will be yanked as of publishing this one.

Added
  • In release PR: sqlx-cli now accepts --no-dotenv in subcommand arguments.
  • In release PR: added functionality tests for sqlx-cli to CI.
  • In release PR: test #[sqlx::test] twice in CI to cover cleanup.
Fixed
  • In release PR: sqlx-cli correctly reads .env files by default again.
  • In release PR: fix bugs in MySQL implementation of #[sqlx::test].

v0.8.4

Hotfix release to address two new issues:

  • [#​3823]: sqlx-cli@0.8.4 broke .env default resolution mechanism
  • [#​3825]: sqlx@0.8.4 broke test fixture setup

The 0.8.4 release will be yanked as of publishing this one.

Added
  • In release PR: sqlx-cli now accepts --no-dotenv in subcommand arguments.
  • In release PR: added functionality tests for sqlx-cli to CI.
  • In release PR: test #[sqlx::test] twice in CI to cover cleanup.
Fixed
  • In release PR: sqlx-cli correctly reads .env files by default again.
  • In release PR: fix bugs in MySQL implementation of #[sqlx::test].

v0.8.3

Compare Source

41 pull requests were merged this release cycle.

Added
Changed
Fixed

v0.8.2

Compare Source

10 pull requests were merged this release cycle.

This release addresses a few regressions that have occurred, and refines SQLx's MSRV policy (see the FAQ).

Added
Changed
Fixed

v0.8.1

Compare Source

16 pull requests were merged this release cycle.

This release contains a fix for RUSTSEC-2024-0363.

Postgres users are advised to upgrade ASAP as a possible exploit has been demonstrated:
#​3440 (comment)

MySQL and SQLite do not appear to be exploitable, but upgrading is recommended nonetheless.

Added
  • [#​3421]: correct spelling of MySqlConnectOptions::no_engine_substitution() [[@​kolinfluence]]
    • Deprecates MySqlConnectOptions::no_engine_subsitution() (oops) in favor of the correctly spelled version.
Changed
  • [#​3376]: doc: hide spec_error module [[@​abonander]]
    • This is a helper module for the macros and was not meant to be exposed.
    • It is not expected to receive any breaking changes for the 0.8.x release, but is not designed as a public API.
      Use at your own risk.
  • [#​3382]: feat: bumped to libsqlite3-sys=0.30.1 to support sqlite 3.46 [[@​CommanderStorm]]
  • [#​3385]: chore(examples):Migrated the pg-chat example to ratatui [[@​CommanderStorm]]
  • [#​3399]: Upgrade to rustls 0.23 [[@​djc]]
    • RusTLS now has pluggable cryptography providers: ring (the existing implementation),
      and aws-lc-rs which has optional FIPS certification.
    • The existing features activating RusTLS (runtime-tokio-rustls, runtime-async-std-rustls, tls-rustls)
      enable the ring provider of RusTLS to match the existing behavior so this should not be a breaking change.
    • Switch to the tls-rustls-aws-lc-rs feature to use the aws-lc-rs provider.
      • If using runtime-tokio-rustls or runtime-async-std-rustls,
        this will necessitate switching to the appropriate non-legacy runtime feature:
        runtime-tokio or runtime-async-std
    • See the RusTLS README for more details: https://github.com/rustls/rustls?tab=readme-ov-file#cryptography-providers
Fixed

v0.8.0

Compare Source

70 pull requests were merged this release cycle.

#​2697 was merged the same day as release 0.7.4 and so was missed by the automatic CHANGELOG generation.

Breaking
  • [#​2697]: fix(macros): only enable chrono when time is disabled [[@​saiintbrisson]]
  • [#​2973]: Generic Associated Types in Database, replacing HasValueRef, HasArguments, HasStatement [[@​nitn3lav]]
  • [#​2482]: chore: bump syn to 2.0 [[@​saiintbrisson]]
    • Deprecated type ascription syntax in the query macros was removed.
  • [#​2736]: Fix describe on PostgreSQL views with rules [[@​tsing]]
    • Potentially breaking: nullability inference changes for Postgres.
  • [#​2869]: Implement PgHasArrayType for all references [[@​tylerhawkes]]
    • Conflicts with existing manual implementations.
  • [#​2940]: fix: Decode and Encode derives (#​1031) [[@​benluelo]]
    • Changes lifetime obligations for field types.
  • [#​3064]: Sqlite explain graph [[@​tyrelr]]
    • Potentially breaking: nullability inference changes for SQLite.
  • [#​3123]: Reorder attrs in sqlx::test macro [[@​bobozaur]]
    • Potentially breaking: attributes on #[sqlx::test] usages are applied in the correct order now.
  • [#​3126]: Make Encode return a result [[@​FSMaxB]]
  • [#​3130]: Add version information for failed cli migration (#​3129) [[@​FlakM]]
    • Breaking changes to MigrateError.
  • [#​3181]: feat: no tx migration [[@​cleverjam]]
    • (Postgres only) migrations that should not run in a transaction can be flagged by adding -- no-transaction to the beginning.
    • Breaking change: added field to Migration
  • [#​3184]: [BREAKING} fix(sqlite): always use i64 as intermediate when decoding [[@​abonander]]
    • integer decoding will now loudly error on overflow instead of silently truncating.
    • some usages of the query!() macros might change an i32 to an i64.
  • [#​3252]: fix #[derive(sqlx::Type)] in Postgres [[@​abonander]]
    • Manual implementations of PgHasArrayType for enums will conflict with the generated one. Delete the manual impl or add #[sqlx(no_pg_array)] where conflicts occur.
    • Type equality for PgTypeInfo is now schema-aware.
  • [#​3329]: fix: correct handling of arrays of custom types in Postgres [[@​abonander]]
    • Potential breaking change: PgTypeInfo::with_name() infers types that start with _ to be arrays of the un-prefixed type. Wrap type names in quotes to bypass this behavior.
  • [#​3356]: breaking: fix name collision in FromRow, return Error::ColumnDecode for TryFrom errors [[@​abonander]]
    • Breaking behavior change: errors with #[sqlx(try_from = "T")] now return Error::ColumnDecode instead of Error::ColumnNotFound.
    • Breaking because #[sqlx(default)] on an individual field or the struct itself would have previously suppressed the error.
      This doesn't seem like good behavior as it could result in some potentially very difficult bugs.
      • Instead, create a wrapper implementing From and apply the default explicitly.
  • [#​3337]: allow rename with rename_all (close #​2896) [[@​DirectorX]]
    • Changes the precedence of #[sqlx(rename)] and #[sqlx(rename_all)] to match the expected behavior (rename wins).
  • [#​3285]: fix: use correct names for sslmode options [[@​lily-mosquitoes]]
    • Changes the output of ConnectOptions::to_url_lossy() to match what parsing expects.
Added
Changed
Fixed

v0.7.4

Compare Source

38 pull requests were merged this release cycle.

This is officially the last release of the 0.7.x release cycle.

As of this release, development of 0.8.0 has begun on main and only high-priority bugfixes may be backported.

Added
  • [#​2891]: feat: expose getters for connect options fields [[@​saiintbrisson]]
  • [#​2902]: feat: add to_url_lossy to connect options [[@​lily-mosquitoes]]
  • [#​2927]: Support query! for cargo-free systems [[@​kshramt]]
  • [#​2997]: doc(FAQ): add entry explaining prepared statements [[@​abonander]]
  • [#​3001]: Update README to clarify MariaDB support [[@​iangilfillan]]
  • [#​3004]: feat(logging): Add numeric elapsed time field elapsed_secs [[@​iamjpotts]]
  • [#​3007]: feat: add raw_sql API [[@​abonander]]
    • This hopefully makes it easier to find how to execute statements which are not supported by the default
      prepared statement interfaces query*() and query!().
    • Improved documentation across the board for the query*() functions.
    • Deprecated: execute_many() and fetch_many() on interfaces that use prepared statements.
      • Multiple SQL statements in one query string were only supported by SQLite because its prepared statement
        interface is the only way to execute SQL. All other database flavors forbid multiple statements in
        one prepared statement string as an extra defense against SQL injection.
      • The new raw_sql API retains this functionality because it explicitly does not use prepared statements.
        Raw or text-mode query interfaces generally allow multiple statements in one query string, and this is
        supported by all current databases. Due to their nature, however, one cannot use bind parameters with them.
      • If this change affects you, an issue is open for discussion: #​3108
  • [#​3011]: Added support to IpAddr with MySQL/MariaDB. [[@​Icerath]]
  • [#​3013]: Add default implementation for PgInterval [[@​pawurb]]
  • [#​3018]: Add default implementation for PgMoney [[@​pawurb]]
  • [#​3026]: Update docs to reflect support for MariaDB data types [[@​iangilfillan]]
  • [#​3037]: feat(mysql): allow to connect with mysql driver without default behavor [[@​darkecho731]]
Changed
Fixed

v0.7.3

Compare Source

38 pull requests were merged this release cycle.

Added
Changed
Fixed

v0.7.2

Compare Source

23 pull requests were merged this release cycle.

Added
Changed
Fixed

v0.7.1

Compare Source

This release mainly addresses issues reported with the 0.7.0 release.

16 pull requests were merged this release cycle.

Added
  • [#​2551]: Introduce build_query_scalar for QueryBuilder [[@​iamquang95]]
  • [#​2605]: Implement Default for QueryBuilder [[@​Xydez]]
  • [#​2616]: feat(sqlx-core): add table function to database error [[@​saiintbrisson]]
  • [#​2619]: feat: allow opt-out of PgHasArrayType with #[derive(sqlx::Type)] [[@​abonander]]
    • TL;DR: if you're getting errors from #[derive(sqlx::Type)] with #[sqlx(transparent)]
      regarding PgHasArrayType not being implemented, add #[sqlx(no_pg_array)] to fix.
Changed
Fixed

v0.7.0

Compare Source

At least 70 pull requests were merged this release cycle! (The exact count is muddied with pull requests for alpha
releases and such.) And we gained 43 new contributors! Thank you to everyone who helped make this release a reality.

Breaking

Many revisions were made to query analysis in the SQLite driver; these are all potentially breaking changes
as they can change the output of sqlx::query!() et al. We'd like to thank [[@​tyrelr]] for their numerous PRs to
this area.

The MSSQL driver has been removed as it was not nearly at the same maturity level as the other drivers.
As previously announced, we have plans to introduce a fully featured replacement as a premium offering,
alongside drivers for other proprietary databases, with the goal to support full-time development on SQLx.

If interested, please email your inquiry to sqlx@launchbadge.com.

The offline mode for the queries has been changed to use a separate file per query!() invocation,
which is intended to reduce the number of conflicts when merging branches in a project that both modified queries.
This means that CLI flag --merged is no longer supported. See [#​2363] for details and make sure that your
sqlx-cli version is in sync with the sqlx version in your project.

The type ascription override syntax for the query macros has been deprecated,
as parse support for it has been removed in syn 2.0, which we'll be upgrading to in the next breaking release.
This can be replaced with type overrides using casting syntax (as).
See [#​2483] for details.

  • [#​1946]: Fix compile time verification performance regression for sqlite [[@​liningpan]]
  • [#​1960]: Fix sqlite update return and order by type inference [[@​tyrelr]]
  • [#​1984]: Sqlite EXPLAIN type inference improvements [[@​rongcuid]]
  • [#​2039]: Break drivers out into separate crates, clean up some technical debt [[@​abonander]]
    • All deprecated items have been removed.
    • The mssql feature and associated database driver has been deleted from the source tree. It will return as part of our planned SQLx Pro offering as a from-scratch rewrite with extra features (such as TLS) and type integrations that were previously missing.
    • The runtime-actix-* features have been deleted. They were previously changed to be aliases of their runtime-tokio-* counterparts for backwards compatibility reasons, but their continued existence is misleading as SQLx has no special knowledge of Actix anymore.
      • To fix, simply replace the runtime-actix-* feature with its runtime-tokio-* equivalent.
    • The git2 feature has been removed. This was a requested integration from a while ago that over time made less and less sense to be part of SQLx itself. We have to be careful with the crates we add to our public API as each one introduces yet another semver hazard. The expected replacement is to make #[derive(sqlx::Type)] useful enough that users can write wrapper types for whatever they want to use without SQLx needing to be specifically aware of it.
    • The Executor impls for Transaction and PoolConnection have been deleted because they cannot exist in the new crate architecture without rewriting the Executor trait entirely.
      • To fix this breakage, simply add a dereference where an impl Executor is expected, as they both dereference to the inner connection type which will still implement it:
        • &mut transaction -> &mut *transaction
        • &mut connection -> &mut *connection
      • These cannot be blanket impls as it triggers an overflow in the compiler due to the lack of lazy normalization, and
        the driver crates cannot provide their own impls due to the orphan rule.
      • We're expecting to do another major refactor of traits to incorporate generic associated types (GAT).
        This will mean another major release of SQLx but ideally most API usage will not need to change significantly, if at all.
    • The fields of Migrator are now #[doc(hidden)] and semver-exempt; they weren't meant to be public.
    • The offline feature has been removed from the sqlx facade crate and is enabled unconditionally as most users are expected to have enabled it anyway and disabling it doesn't seem to appreciably affect compile times.
    • The decimal feature has been renamed to rust_decimal to match the crate it actually provides integrations for.
    • AnyDriver and AnyConnection now require either sqlx::any::install_drivers() or sqlx::any::install_default_drivers() to be called at some point during the process' lifetime before the first connection is made, as the set of possible drivers is now determined at runtime. This was determined to be the least painful way to provide knowledge of database drivers to Any without them being hardcoded.
    • The AnyEncode trait has been removed.
  • [#​2109]: feat: better database errors [[@​saiintbrisson]]
  • [#​2094]: Update libsqlite3-sys to 0.25.1 [[@​penberg]]
    • Alongside this upgrade, we are now considering the linkage to libsqlite3-sys to be semver-exempt,
      and we reserve the right to upgrade it as necessary. If you are using libsqlite3-sys directly or a crate that
      links it such as rusqlite, you should pin the versions of both crates to avoid breakages from cargo update:
[dependencies]
sqlx = { version = "=0.7.0", features = ["sqlite"] }
rusqlite = "=0.29.0"
Added
Changed
Fixed

v0.6.3

Compare Source

This is a hotfix to address the breakage caused by transitive dependencies upgrading to syn = "2".

We set default-features = false for our dependency on syn = "1" to be good crates.io citizens,
but failed to enable the features we actually used, which went undetected because we transitively depended on
syn with the default features enabled through other crates,
and so they were also on for us because features are additive.

When those other dependencies upgraded to syn = "2" it was no longer enabling those features for us,
and so compilation broke for projects that don't also depend on syn = "1", transitively or otherwise.

There is no PR for this fix as there was no longer a dedicated development branch for 0.6,
but discussion can be found in issue #​2418.

As of this release, the 0.7 release is in alpha and so development is no longer occurring against 0.6.
This fix will be forward-ported to 0.7.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [sqlx](https://github.com/launchbadge/sqlx) | build-dependencies | minor | `0.6.1` -> `0.9.0` | --- ### Release Notes <details> <summary>launchbadge/sqlx (sqlx)</summary> ### [`v0.9.0`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#090---2026-05-06) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.6...v0.9.0) ##### Important Announcements ##### New Github Organization Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization: <https://github.com/transact-rs/> This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been informally transferred to the collective ownership of its principal authors. Moving the repository to a new organization makes this change more clear, and also allows for potentially inviting outside collaborators. ##### `Cargo.lock` Removed from Tracking The `Cargo.lock` has been removed from tracking in Git. CI should now always test with the latest versions of all dependencies by default, alongside our pass that checks with `cargo generate-lockfile -Z minimal-versions`. This should eliminate the need for any PRs that update dependencies to also update `Cargo.lock` or contend with an endless stream of merge conflicts against it. **N.B.** `cargo install --locked sqlx-cli` will no longer work. However, `cargo install sqlx-cli` has *always* used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran `cargo update` sporadically, so relying on SQLx's lockfile offered few guarantees anyway. See [the manual page for `cargo install`][man-cargo-install] for details. ##### Breaking As per our [MSRV policy](FAQ.md#MSRV), the supported Rust version for this release cycle is [`1.94.0`](https://doc.rust-lang.org/stable/releases.html#version-1940-2026-03-05). - \[[#&#8203;3383]]: feat: create `sqlx.toml` format \[\[[@&#8203;abonander](https://github.com/abonander)]] - SQLx and `sqlx-cli` now support per-crate configuration files (`sqlx.toml`) - New functionality includes, but is not limited to: - Rename `DATABASE_URL` for a crate (for multi-database workspaces) - Set global type overrides for the macros (supporting custom types) - Rename or relocate the `_sqlx_migrations` table (for multiple crates using the same database) - Set characters to ignore when hashing migrations (e.g. ignore whitespace) - More to be implemented in future releases. - Enable feature `sqlx-toml` to use. - `sqlx-cli` has it enabled by default, but `sqlx` does **not**. - Default features of library crates can be hard to completely turn off because of [feature unification], so it's better to keep the default feature set as limited as possible. [This is something we learned the hard way.][preferred-crates] - Guide: see `sqlx::_config` module in documentation. - Reference: \[[Link](sqlx-core/src/config/reference.toml)] - Examples (written for Postgres but can be adapted to other databases; PRs welcome!): - Multiple databases using `DATABASE_URL` renaming and global type overrides: \[[Link](examples/postgres/multi-database)] - Multi-tenant database using `_sqlx_migrations` renaming and multiple schemas: \[[Link](examples/postgres/multi-tenant)] - Force use of `chrono` when `time` is enabled (e.g. when using `tower-sessions-sqlx-store`): \[[Link][preferred-crates]] - Forcing `bigdecimal` when `rust_decimal` is enabled is also shown, but problems with `chrono`/`time` are more common. - **Breaking changes**: - Significant changes to the `Migrate` trait - `sqlx::migrate::resolve_blocking()` is now `#[doc(hidden)]` and thus SemVer-exempt. - \[[#&#8203;3486]]: fix(logs): Correct spelling of aquired\_after\_secs tracing field \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - Breaking behavior change: implementations parsing `tracing` logs from SQLx will need to update the spelling. - \[[#&#8203;3495]]: feat(postgres): remove lifetime from `PgAdvisoryLockGuard` \[\[[@&#8203;bonsairobo](https://github.com/bonsairobo)]] - \[[#&#8203;3526]]: Return \&mut Self from the migrator set\_ methods \[\[[@&#8203;nipunn1313](https://github.com/nipunn1313)]] - Minor breaking change: `Migrator::set_ignore_missing` and `set_locking` now return `&mut Self` instead of `&Self` which may break code in rare circumstances. - \[[#&#8203;3541]]: Postgres: force generic plan for better nullability inference. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: may alter the output of the `query!()` macros for certain queries in Postgres. - \[[#&#8203;3613]]: fix: `RawSql` lifetime issues \[\[[@&#8203;abonander](https://github.com/abonander)]] - Breaking change: adds `DB` type parameter to all methods of `RawSql` - \[[#&#8203;3670]]: Bump ipnetwork to v0.21.1 \[\[[@&#8203;BeauGieskens](https://github.com/BeauGieskens)]] - \[[#&#8203;3674]]: Implement `Decode`, `Encode` and `Type` for `Box`, `Arc`, `Cow` and `Rc` \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: `impl Decode for Cow` now always decodes `Cow::Owned`, lifetime is unlinked - See this discussion for motivation: [#&#8203;3674 (comment)](https://github.com/launchbadge/sqlx/pull/3674#discussion_r2008611502) - \[[#&#8203;3723]]: Add SqlStr \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Breaking change: all `query*()` functions now take `impl SqlSafeStr` which is only implemented for `&'static str` and `AssertSqlSafe`. For all others, wrap in `AssertSqlSafe(<query>)`. - This, along with \[[#&#8203;3960]], finally allows returning owned queries as the type will be `Query<'static, DB>`. - `SqlSafeStr` trait is deliberately similar to `std::panic::UnwindSafe`, serving as a speedbump to warn users about naïvely building queries with `format!()` while allowing a workaround for advanced usage that is easy to spot on code review. - \[[#&#8203;3800]]: Escape PostgreSQL Options \[\[[@&#8203;V02460](https://github.com/V02460)]] - Breaking behavior change: options passed to `PgConnectOptions::options()` are now automatically escaped. Manual escaping of options is no longer necessary and may cause incorrect behavior. - \[[#&#8203;3821]]: Groundwork for 0.9.0-alpha.1 \[\[[@&#8203;abonander](https://github.com/abonander)]] - Increased MSRV to 1.86 and set rust-version - Deleted deprecated combination runtime+TLS features (e.g. `runtime-tokio-native-tls`) - Deleted re-export of unstable `TransactionManager` trait in `sqlx`. - Not technically a breaking change because it's `#[doc(hidden)]`, but [it *will* break SeaORM][seaorm-2600] if not proactively fixed. - \[[#&#8203;3924]]: breaking(mysql): assume all non-binary collations compatible with `str` \[\[[@&#8203;abonander](https://github.com/abonander)]] - Text (or text-like) columns which previously were inferred to be `Vec<u8>` will be inferred to be `String` (this should ultimately fix more code than it breaks). - `SET NAMES utf8mb4 COLLATE utf8_general_ci` is no longer sent by default; instead, `SET NAMES utf8mb4` is sent to allow the server to select the appropriate default collation (since this is version- and configuration-dependent). - `MySqlConnectOptions::charset()` and `::collation()` now imply `::set_names(true)` because they don't do anything otherwise. - Setting `charset` doesn't change what's sent in the `Protocol::HandshakeResponse41` packet as that normally only matters for error messages before `SET NAMES` is sent. The default collation if `set_names = false` is `utf8mb4_general_ci`. - See [this comment](https://github.com/launchbadge/sqlx/blob/388c424f486bf20542a8a37d296dbcf86bb6dffd/sqlx-mysql/src/collation.rs#L1-L37) for details. - Incidental breaking change: `RawSql::fetch_optional()` now returns `sqlx::Result<Option<DB::Row>>` instead of `sqlx::Result<DB::Row>`. Whoops. - \[[#&#8203;3928]]: breaking(sqlite): `libsqlite3-sys` versioning, feature flags, safety changes \[\[[@&#8203;abonander](https://github.com/abonander)]] - SemVer policy changes: `libsqlite3-sys` version is now specified using a range. The maximum of the range may now be increased in any backwards-compatible release. The minimum of the range may only be increased in major releases. If you have `libsqlite3-sys` in your dependencies, Cargo should choose a compatible version automatically. If otherwise unconstrained, Cargo should choose the latest version supported. - SQLite extension loading (including through the new `sqlx-toml` feature) is now `unsafe`. - Added new **non-default** features corresponding to conditionally compiled SQLite APIs: - `sqlite-deserialize` enabling `SqliteConnection::serialize()` and `SqliteConnection::deserialize()` - `sqlite-load-extension` enabling `SqliteConnectOptions::extension()` and `::extension_with_entrypoint()` - `sqlite-unlock-notify` enables internal use of `sqlite3_unlock_notify()` - `SqliteValue` and `SqliteValueRef` changes: - The [`sqlite3_value*` interface](https://www.sqlite.org/c3ref/value_blob.html) reserves the right to be stateful. Without protection, any call could theoretically invalidate values previously returned, leading to dangling pointers. - `SqliteValue` is now `!Sync` and `SqliteValueRef` is `!Send` to prevent data races from concurrent accesses. - Instead, clone or wrap the `SqliteValue` in `Mutex`, or convert the `SqliteValueRef` to an owned value. - `SqliteValue` and any derived `SqliteValueRef`s now internally track if that value has been used to decode a borrowed `&[u8]` or `&str` and errors if it's used to decode any other type. - This is not expected to affect the vast majority of usages, which should only decode a single type per `SqliteValue`/`SqliteValueRef`. - See new docs on `SqliteValue` for details. - \[[#&#8203;3949]]: Postgres: move `PgLTree::from` to `From<Vec<PgLTreeLabel>>` implementation \[\[[@&#8203;JerryQ17](https://github.com/JerryQ17)]] - \[[#&#8203;3957]]: refactor(sqlite): do not borrow bound values, delete lifetime on `SqliteArguments` \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3958]]: refactor(any): Remove lifetime parameter from AnyArguments \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3960]]: refactor(core): Remove lifetime parameter from Arguments trait \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3993]]: Unescape PostgreSQL passfile password \[\[[@&#8203;V02460](https://github.com/V02460)]] - Previously, `.pgpass` file handling did not process backslash-escapes in the password part. Now it does, which may change what password is sent to the server. - \[[#&#8203;4008]]: make `#[derive(sqlx::Type)]` automatically generate `impl PgHasArrayType` by default for newtype structs \[\[[@&#8203;papaj-na-wrotkach](https://github.com/papaj-na-wrotkach)]] - Manual implementations of PgHasArrayType for newtypes will conflict with the generated one. Delete the manual impl or add `#[sqlx(no_pg_array)]` where conflicts occur. - \[[#&#8203;4077]]: breaking: make `offline` optional to allow building without `serde` \[\[[@&#8203;CathalMullan](https://github.com/CathalMullan)]] - \[[#&#8203;4094]]: Bump bit-vec to v0.8 \[\[[@&#8203;zennozenith](https://github.com/zennozenith)]] - \[[#&#8203;4142]]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth \[\[[@&#8203;dertin](https://github.com/dertin)]] - Connections requiring RSA password encryption now need to enable the `mysql-rsa` feature or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections. - \[[#&#8203;4255]]: breaking(any+mysql): correctly convert text and blob types to `AnyTypeInfo` \[\[[@&#8203;abonander](https://github.com/abonander)]] ##### Added - \[[#&#8203;3641]]: feat(Postgres): support nested domain types \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3651]]: Add PgBindIter for encoding and use it as the implementation encoding &\[T] \[\[[@&#8203;tylerhawkes](https://github.com/tylerhawkes)]] - \[[#&#8203;3675]]: feat: implement Encode, Decode, Type for `Arc<str>` and `Arc<[u8]>` (and `Rc` equivalents) \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3791]]: Smol+async global executor 1.80 dev \[\[[@&#8203;martin-kolarik](https://github.com/martin-kolarik)]] - Adds `runtime-smol` and `runtime-async-global-executor` features to replace usages of the deprecated `async-std` crate. - \[[#&#8203;3859]]: Add more JsonRawValue encode/decode impls. \[\[[@&#8203;Dirbaio](https://github.com/Dirbaio)]] - \[[#&#8203;3881]]: CLi: made cli-lib modules publicly available for other crates \[\[[@&#8203;silvestrpredko](https://github.com/silvestrpredko)]] - \[[#&#8203;3889]]: Compile-time support for external drivers \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;3917]]: feat(sqlx.toml): support SQLite extensions in macros and sqlx-cli \[\[[@&#8203;djarb](https://github.com/djarb)]] - \[[#&#8203;3918]]: Feature: Add exclusion violation error kind \[\[[@&#8203;barskern](https://github.com/barskern)]] - \[[#&#8203;3971]]: Allow single-field named structs to be transparent \[\[[@&#8203;Xiretza](https://github.com/Xiretza)]] - \[[#&#8203;4015]]: feat(sqlite): `no_tx` migration support \[\[[@&#8203;AlexTMjugador](https://github.com/AlexTMjugador)]] - \[[#&#8203;4020]]: Add `Migrator::with_migrations()` constructor \[\[[@&#8203;xb284524239](https://github.com/xb284524239)]] - \[[#&#8203;3846]]: Add the possibility to skip migrations \[\[[@&#8203;Dosenpfand](https://github.com/Dosenpfand)]] - \[[#&#8203;4107]]: Add SQLite extension entrypoint config to `sqlx.toml`, update SQLite extension example \[\[[@&#8203;supleed2](https://github.com/supleed2)]] - \[[#&#8203;4118]]: \[postgres] Display line number in error message \[\[[@&#8203;mousetail](https://github.com/mousetail)]] - \[[#&#8203;4123]]: feat: add `Json::into_inner()` \[\[[@&#8203;chrxn1c](https://github.com/chrxn1c)]] - \[[#&#8203;4153]]: Add on unimplemented diagnostic to `SqlStr` \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4167]]: add sqlite serialize/deserialize example \[\[[@&#8203;mattrighetti](https://github.com/mattrighetti)]] - \[[#&#8203;4228]]: sqlx-postgres: Make `PgNotification` struct clone \[\[[@&#8203;michaelvanstraten](https://github.com/michaelvanstraten)]] ##### Changed - \[[#&#8203;3525]]: Remove unnecessary boxfutures \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3867]]: sqlx-postgres: Bump etcetera to 0.10.0 \[\[[@&#8203;miniduikboot](https://github.com/miniduikboot)]] - \[[#&#8203;3709]]: chore: replace once\_cell `OnceCell`/`Lazy` with std `OnceLock`/`LazyLock` \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3890]]: feat: Unify `Debug` implementations across `PgRow`, `MySqlRow` and `SqliteRow` \[\[[@&#8203;davidcornu](https://github.com/davidcornu)]] - \[[#&#8203;3911]]: chore: upgrade async-io to v2.4.1 \[\[[@&#8203;zebrapurring](https://github.com/zebrapurring)]] - \[[#&#8203;3938]]: Move `QueryLogger` back \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3956]]: chore(sqlite): Remove unused test of removed git2 feature \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3962]]: Give SQLX\_OFFLINE\_DIR from environment precedence in macros \[\[[@&#8203;psionic-k](https://github.com/psionic-k)]] - \[[#&#8203;3968]]: chore(ci): Add timeouts to ci jobs \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;4002]]: sqlx-postgres(tests): cleanup 2 unit tests. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4022]]: refactor: tweaks after [#&#8203;3791](https://github.com/launchbadge/sqlx/issues/3791) \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4257]]: Prefer to give real data to `.bind()` in `README.md` \[\[[@&#8203;sobolevn](https://github.com/sobolevn)]] - \[[#&#8203;4042]]: Update to webpki-roots 1 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4072]]: chore: update hashlink to v0.11.0 \[\[[@&#8203;anmolitor](https://github.com/anmolitor)]] - \[[#&#8203;4143]]: Bump whoami to v2 \[\[[@&#8203;tisonkun](https://github.com/tisonkun)]] - \[[#&#8203;4161]]: sqlx-sqlite: relax libsqlite3-sys constraint to allow 0.36.x \[\[[@&#8203;darioAnongba](https://github.com/darioAnongba)]] - \[[#&#8203;4173]]: ci: check direct minimal versions \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - Note: reverted in 0.9.0 release but still listed for contributor credit. See end of PR thread for details. - \[[#&#8203;4189]]: Bump flume to 0.12.0 \[\[[@&#8203;opoplawski](https://github.com/opoplawski)]] - \[[#&#8203;4223]]: test(sqlite): add regression test for ORDER BY + LIMIT nullability ([#&#8203;4147](https://github.com/launchbadge/sqlx/issues/4147)) \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4230]]: chore: Update to cargo\_metadata 0.23 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4233]]: Change reference to dotenvy \[\[[@&#8203;graemer957](https://github.com/graemer957)]] - \[[#&#8203;4235]]: chore: Update to validator 0.20 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;4253]]: chore: update example to axum 0.8 \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - Release PR: - Upgraded all Rust-Crypto crates, `rand` - Upgraded `etcetera` to `0.11.0` - Increased max of `libsqlite3-sys` version range to `<0.38.0` ##### Fixed - \[[#&#8203;3840]]: Fix docs.rs build of sqlx-sqlite \[\[[@&#8203;gferon](https://github.com/gferon)]] - \[[#&#8203;3848]]: fix(macros): don't mutate environment variables \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3856]]: fix(macros): slightly improve unsupported type error message \[\[[@&#8203;dyc3](https://github.com/dyc3)]] - \[[#&#8203;3857]]: fix(mysql): validate parameter count for prepared statements \[\[[@&#8203;cvzx](https://github.com/cvzx)]] - \[[#&#8203;3861]]: Fix NoHostnameTlsVerifier for rustls 0.23.24 and above \[\[[@&#8203;elichai](https://github.com/elichai)]] - \[[#&#8203;3863]]: Use unnamed statement in pg when not persistent \[\[[@&#8203;ThomWright](https://github.com/ThomWright)]] - \[[#&#8203;3874]]: Further reduce dependency on `futures` and `futures-util` \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3886]]: fix: use Executor::fetch in QueryAs::fetch \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;3910]]: feat(ok): add correct handling of ok packets in MYSQL implementation \[\[[@&#8203;0xfourzerofour](https://github.com/0xfourzerofour)]] - \[[#&#8203;3914]]: fix: regenerate test certificates \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3915]]: fix: spec\_error is used by try\_from derive \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;3919]]: fix\[sqlx-postgres]: do a checked\_mul to prevent panic'ing \[\[[@&#8203;nhatcher-frequenz](https://github.com/nhatcher-frequenz)]] - \[[#&#8203;3923]]: sqlx-mysql: Fix bug in cleanup test db's. \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3950]]: chore: Fix warnings for custom postgres\_## cfg flags \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3952]]: `Pool.close`: close all connections before returning \[\[[@&#8203;jpmelos](https://github.com/jpmelos)]] - \[[#&#8203;3975]]: fix documentation for rustls native root certificates \[\[[@&#8203;2ndDerivative](https://github.com/2ndDerivative)]] - \[[#&#8203;3977]]: refactor(ci): Use separate job for postgres ssl auth tests \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3980]]: Correctly `ROLLBACK` transaction when dropped during `BEGIN`. \[\[[@&#8203;kevincox](https://github.com/kevincox)]] - \[[#&#8203;3981]]: SQLite: fix transaction level accounting with bad custom command. \[\[[@&#8203;kevincox](https://github.com/kevincox)]] - \[[#&#8203;3986]]: chore(core): Fix docstring for Query::try\_bind \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3987]]: chore(deps): Resolve deprecation warning for chrono Date and ymd methods \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3988]]: refactor(sqlite): Resolve duplicate test target warning for macros.rs \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3989]]: chore(deps): Set default-features=false on sqlx in workspace.dependencies \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3991]]: fix(sqlite): regression when decoding nulls \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4006]]: PostgreSQL SASL – run SHA256 in a blocking executor \[\[[@&#8203;ThomWright](https://github.com/ThomWright)]] - \[[#&#8203;4007]]: fix(compose): use OS-assigned ports for all conatiners \[\[[@&#8203;papaj-na-wrotkach](https://github.com/papaj-na-wrotkach)]] - \[[#&#8203;4009]]: Drop cached db connections in macros upon hitting an error \[\[[@&#8203;swlynch99](https://github.com/swlynch99)]] - \[[#&#8203;4024]]: fix(sqlite) Migrate revert with no-transaction \[\[[@&#8203;Dosenpfand](https://github.com/Dosenpfand)]] - \[[#&#8203;4027]]: native tls handshake: build TlsConnector in blocking threadpool \[\[[@&#8203;daviduebler](https://github.com/daviduebler)]] - \[[#&#8203;4053]]: fix(macros): smarter `.env` loading, caching, and invalidation \[\[[@&#8203;abonander](https://github.com/abonander)]] - Additional credit to \[\[[@&#8203;AlexTMjugador](https://github.com/AlexTMjugador)]] (\[[#&#8203;4018]]) and \[\[[@&#8203;Diggsey](https://github.com/Diggsey)]] (\[[#&#8203;4039]]) for their proposed solutions which served as a useful comparison. - \[[#&#8203;4068]]: Fix typo in migration example from 'uesrs' to 'users' \[\[[@&#8203;squidpickles](https://github.com/squidpickles)]] - \[[#&#8203;4069]]: fix some spelling issues \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4086]]: fix(mysql): Work around for Issue [#&#8203;2206](https://github.com/launchbadge/sqlx/issues/2206) (ColumnNotFound error when querying) \[\[[@&#8203;duelafn](https://github.com/duelafn)]] - \[[#&#8203;4088]]: (Fix) Handle nullability of SQLite rowid alias columns \[\[[@&#8203;Lege19](https://github.com/Lege19)]] - \[[#&#8203;4100]]: postgres: update pgpass path on windows \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4134]]: fix CI: replace removed macOS runner, deprecated use of `Command::cargo_bin()` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4136]]: Ensure Deterministic Migration Order \[\[[@&#8203;aoengin](https://github.com/aoengin)]] - \[[#&#8203;4158]]: Fix panic in JSONB decoder on invalid version byte \[\[[@&#8203;jrey8343](https://github.com/jrey8343)]] - \[[#&#8203;4165]]: sqlx-postgres: fix correct operator precedence in byte length check \[\[[@&#8203;cuiweixie](https://github.com/cuiweixie)]] - \[[#&#8203;4171]]: fix(postgres): remove home crate in favor of std::env::home\_dir \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - \[[#&#8203;4172]]: fix(sqlx-cli): bump openssl minimum to 0.10.46 \[\[[@&#8203;ricochet](https://github.com/ricochet)]] - \[[#&#8203;4176]]: fix(mysql): return error instead of panic on truncated OK packet \[\[[@&#8203;cvzx](https://github.com/cvzx)]] - \[[#&#8203;4199]]: fix(postgres): make advisory lock cancel safe \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;4201]]: Fix SCRAM password `SASLprep` \[\[[@&#8203;var4yn](https://github.com/var4yn)]] - \[[#&#8203;4202]]: fix: replace from\_utf8\_unchecked with from\_utf8\_lossy in SqliteError \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4203]]: fix: use sqlite3\_value\_text for REGEXP to match SQLite coercion \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4219]]: sqlite: lossily coerce invalid UTF-8 in custom collation callback \[\[[@&#8203;joaquinhuigomez](https://github.com/joaquinhuigomez)]] - \[[#&#8203;4221]]: fix: replace `from_utf8_unchecked` with `from_utf8` in SQLite column name handling \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4226]]: fix(postgres): use non-prepared statements for metadata queries \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;4227]]: fix(macros-core): update unstable proc\_macro APIs for recent nightly \[\[[@&#8203;barry3406](https://github.com/barry3406)]] - \[[#&#8203;4234]]: fix: Use correct path in error when failing to create tmp dir in prepare \[\[[@&#8203;Miesvanderlippe](https://github.com/Miesvanderlippe)]] - \[[#&#8203;4245]]: fix(mysql): repair caching\_sha2\_password fast-auth path \[\[[@&#8203;altmannmarcelo](https://github.com/altmannmarcelo)]] - \[[#&#8203;4251]]: fix(tls): potential deadlock in `StdSocket::poll_ready()` \[\[[@&#8203;abonander](https://github.com/abonander)]] [seaorm-2600]: https://github.com/SeaQL/sea-orm/issues/2600 [feature unification]: https://doc.rust-lang.org/cargo/reference/features.html#feature-unification [preferred-crates]: examples/postgres/preferred-crates [man-cargo-install]: https://doc.rust-lang.org/cargo/commands/cargo-install.html#dealing-with-the-lockfile [#&#8203;3821]: https://github.com/launchbadge/sqlx/pull/3821 [#&#8203;3383]: https://github.com/launchbadge/sqlx/pull/3383 [#&#8203;3486]: https://github.com/launchbadge/sqlx/pull/3486 [#&#8203;3495]: https://github.com/launchbadge/sqlx/pull/3495 [#&#8203;3525]: https://github.com/launchbadge/sqlx/pull/3525 [#&#8203;3526]: https://github.com/launchbadge/sqlx/pull/3526 [#&#8203;3541]: https://github.com/launchbadge/sqlx/pull/3541 [#&#8203;3613]: https://github.com/launchbadge/sqlx/pull/3613 [#&#8203;3641]: https://github.com/launchbadge/sqlx/pull/3641 [#&#8203;3651]: https://github.com/launchbadge/sqlx/pull/3651 [#&#8203;3670]: https://github.com/launchbadge/sqlx/pull/3670 [#&#8203;3674]: https://github.com/launchbadge/sqlx/pull/3674 [#&#8203;3675]: https://github.com/launchbadge/sqlx/pull/3675 [#&#8203;3709]: https://github.com/launchbadge/sqlx/pull/3709 [#&#8203;3723]: https://github.com/launchbadge/sqlx/pull/3723 [#&#8203;3791]: https://github.com/launchbadge/sqlx/pull/3791 [#&#8203;3800]: https://github.com/launchbadge/sqlx/pull/3800 [#&#8203;3821]: https://github.com/launchbadge/sqlx/pull/3821 [#&#8203;3840]: https://github.com/launchbadge/sqlx/pull/3840 [#&#8203;3848]: https://github.com/launchbadge/sqlx/pull/3848 [#&#8203;3856]: https://github.com/launchbadge/sqlx/pull/3856 [#&#8203;3857]: https://github.com/launchbadge/sqlx/pull/3857 [#&#8203;3859]: https://github.com/launchbadge/sqlx/pull/3859 [#&#8203;3861]: https://github.com/launchbadge/sqlx/pull/3861 [#&#8203;3863]: https://github.com/launchbadge/sqlx/pull/3863 [#&#8203;3867]: https://github.com/launchbadge/sqlx/pull/3867 [#&#8203;3874]: https://github.com/launchbadge/sqlx/pull/3874 [#&#8203;3881]: https://github.com/launchbadge/sqlx/pull/3881 [#&#8203;3886]: https://github.com/launchbadge/sqlx/pull/3886 [#&#8203;3889]: https://github.com/launchbadge/sqlx/pull/3889 [#&#8203;3890]: https://github.com/launchbadge/sqlx/pull/3890 [#&#8203;3910]: https://github.com/launchbadge/sqlx/pull/3910 [#&#8203;3911]: https://github.com/launchbadge/sqlx/pull/3911 [#&#8203;3914]: https://github.com/launchbadge/sqlx/pull/3914 [#&#8203;3915]: https://github.com/launchbadge/sqlx/pull/3915 [#&#8203;3917]: https://github.com/launchbadge/sqlx/pull/3917 [#&#8203;3918]: https://github.com/launchbadge/sqlx/pull/3918 [#&#8203;3919]: https://github.com/launchbadge/sqlx/pull/3919 [#&#8203;3923]: https://github.com/launchbadge/sqlx/pull/3923 [#&#8203;3924]: https://github.com/launchbadge/sqlx/pull/3924 [#&#8203;3928]: https://github.com/launchbadge/sqlx/pull/3928 [#&#8203;3938]: https://github.com/launchbadge/sqlx/pull/3938 [#&#8203;3949]: https://github.com/launchbadge/sqlx/pull/3949 [#&#8203;3950]: https://github.com/launchbadge/sqlx/pull/3950 [#&#8203;3952]: https://github.com/launchbadge/sqlx/pull/3952 [#&#8203;3956]: https://github.com/launchbadge/sqlx/pull/3956 [#&#8203;3957]: https://github.com/launchbadge/sqlx/pull/3957 [#&#8203;3958]: https://github.com/launchbadge/sqlx/pull/3958 [#&#8203;3960]: https://github.com/launchbadge/sqlx/pull/3960 [#&#8203;3962]: https://github.com/launchbadge/sqlx/pull/3962 [#&#8203;3968]: https://github.com/launchbadge/sqlx/pull/3968 [#&#8203;3971]: https://github.com/launchbadge/sqlx/pull/3971 [#&#8203;3975]: https://github.com/launchbadge/sqlx/pull/3975 [#&#8203;3977]: https://github.com/launchbadge/sqlx/pull/3977 [#&#8203;3980]: https://github.com/launchbadge/sqlx/pull/3980 [#&#8203;3981]: https://github.com/launchbadge/sqlx/pull/3981 [#&#8203;3986]: https://github.com/launchbadge/sqlx/pull/3986 [#&#8203;3987]: https://github.com/launchbadge/sqlx/pull/3987 [#&#8203;3988]: https://github.com/launchbadge/sqlx/pull/3988 [#&#8203;3989]: https://github.com/launchbadge/sqlx/pull/3989 [#&#8203;3991]: https://github.com/launchbadge/sqlx/pull/3991 [#&#8203;4002]: https://github.com/launchbadge/sqlx/pull/4002 [#&#8203;4006]: https://github.com/launchbadge/sqlx/pull/4006 [#&#8203;4007]: https://github.com/launchbadge/sqlx/pull/4007 [#&#8203;4008]: https://github.com/launchbadge/sqlx/pull/4008 [#&#8203;4009]: https://github.com/launchbadge/sqlx/pull/4009 [#&#8203;4015]: https://github.com/launchbadge/sqlx/pull/4015 [#&#8203;4018]: https://github.com/launchbadge/sqlx/pull/4018 [#&#8203;4020]: https://github.com/launchbadge/sqlx/pull/4020 [#&#8203;4022]: https://github.com/launchbadge/sqlx/pull/4022 [#&#8203;4024]: https://github.com/launchbadge/sqlx/pull/4024 [#&#8203;4027]: https://github.com/launchbadge/sqlx/pull/4027 [#&#8203;4039]: https://github.com/launchbadge/sqlx/pull/4039 [#&#8203;4053]: https://github.com/launchbadge/sqlx/pull/4053 [#&#8203;3846]: https://github.com/launchbadge/sqlx/pull/3846 [#&#8203;3993]: https://github.com/launchbadge/sqlx/pull/3993 [#&#8203;4042]: https://github.com/launchbadge/sqlx/pull/4042 [#&#8203;4068]: https://github.com/launchbadge/sqlx/pull/4068 [#&#8203;4069]: https://github.com/launchbadge/sqlx/pull/4069 [#&#8203;4072]: https://github.com/launchbadge/sqlx/pull/4072 [#&#8203;4077]: https://github.com/launchbadge/sqlx/pull/4077 [#&#8203;4086]: https://github.com/launchbadge/sqlx/pull/4086 [#&#8203;4088]: https://github.com/launchbadge/sqlx/pull/4088 [#&#8203;4094]: https://github.com/launchbadge/sqlx/pull/4094 [#&#8203;4100]: https://github.com/launchbadge/sqlx/pull/4100 [#&#8203;4107]: https://github.com/launchbadge/sqlx/pull/4107 [#&#8203;4118]: https://github.com/launchbadge/sqlx/pull/4118 [#&#8203;4123]: https://github.com/launchbadge/sqlx/pull/4123 [#&#8203;4134]: https://github.com/launchbadge/sqlx/pull/4134 [#&#8203;4136]: https://github.com/launchbadge/sqlx/pull/4136 [#&#8203;4142]: https://github.com/launchbadge/sqlx/pull/4142 [#&#8203;4143]: https://github.com/launchbadge/sqlx/pull/4143 [#&#8203;4153]: https://github.com/launchbadge/sqlx/pull/4153 [#&#8203;4158]: https://github.com/launchbadge/sqlx/pull/4158 [#&#8203;4161]: https://github.com/launchbadge/sqlx/pull/4161 [#&#8203;4165]: https://github.com/launchbadge/sqlx/pull/4165 [#&#8203;4167]: https://github.com/launchbadge/sqlx/pull/4167 [#&#8203;4171]: https://github.com/launchbadge/sqlx/pull/4171 [#&#8203;4172]: https://github.com/launchbadge/sqlx/pull/4172 [#&#8203;4173]: https://github.com/launchbadge/sqlx/pull/4173 [#&#8203;4176]: https://github.com/launchbadge/sqlx/pull/4176 [#&#8203;4189]: https://github.com/launchbadge/sqlx/pull/4189 [#&#8203;4199]: https://github.com/launchbadge/sqlx/pull/4199 [#&#8203;4201]: https://github.com/launchbadge/sqlx/pull/4201 [#&#8203;4202]: https://github.com/launchbadge/sqlx/pull/4202 [#&#8203;4203]: https://github.com/launchbadge/sqlx/pull/4203 [#&#8203;4219]: https://github.com/launchbadge/sqlx/pull/4219 [#&#8203;4221]: https://github.com/launchbadge/sqlx/pull/4221 [#&#8203;4223]: https://github.com/launchbadge/sqlx/pull/4223 [#&#8203;4226]: https://github.com/launchbadge/sqlx/pull/4226 [#&#8203;4227]: https://github.com/launchbadge/sqlx/pull/4227 [#&#8203;4228]: https://github.com/launchbadge/sqlx/pull/4228 [#&#8203;4230]: https://github.com/launchbadge/sqlx/pull/4230 [#&#8203;4233]: https://github.com/launchbadge/sqlx/pull/4233 [#&#8203;4234]: https://github.com/launchbadge/sqlx/pull/4234 [#&#8203;4235]: https://github.com/launchbadge/sqlx/pull/4235 [#&#8203;4245]: https://github.com/launchbadge/sqlx/pull/4245 [#&#8203;4251]: https://github.com/launchbadge/sqlx/pull/4251 [#&#8203;4253]: https://github.com/launchbadge/sqlx/pull/4253 [#&#8203;4255]: https://github.com/launchbadge/sqlx/pull/4255 [#&#8203;4257]: https://github.com/launchbadge/sqlx/pull/4257 ### [`v0.8.6`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#086---2025-05-19) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.5...v0.8.6) 9 pull requests were merged this release cycle. ##### Added - \[[#&#8203;3849]]: Add color and wrapping to cli help text \[\[[@&#8203;joshka](https://github.com/joshka)]] ##### Changed - \[[#&#8203;3830]]: build: drop unused `tempfile` dependency \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3845]]: chore: clean up no longer used imports \[\[[@&#8203;tisonkun](https://github.com/tisonkun)]] - \[[#&#8203;3863]]: Use unnamed statement in pg when not persistent \[\[[@&#8203;ThomWright](https://github.com/ThomWright)]] - \[[#&#8203;3866]]: chore(doc): clarify compile-time verification and case conversion behavior \[\[[@&#8203;duhby](https://github.com/duhby)]] ##### Fixed - \[[#&#8203;3840]]: Fix docs.rs build of sqlx-sqlite \[\[[@&#8203;gferon](https://github.com/gferon)]] - \[[#&#8203;3848]]: fix(macros): don't mutate environment variables \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3855]]: fix `attrubute` typo in doc \[\[[@&#8203;kujeger](https://github.com/kujeger)]] - \[[#&#8203;3856]]: fix(macros): slightly improve unsupported type error message \[\[[@&#8203;dyc3](https://github.com/dyc3)]] [#&#8203;3830]: https://github.com/launchbadge/sqlx/pull/3830 [#&#8203;3840]: https://github.com/launchbadge/sqlx/pull/3840 [#&#8203;3845]: https://github.com/launchbadge/sqlx/pull/3845 [#&#8203;3848]: https://github.com/launchbadge/sqlx/pull/3848 [#&#8203;3849]: https://github.com/launchbadge/sqlx/pull/3849 [#&#8203;3855]: https://github.com/launchbadge/sqlx/pull/3855 [#&#8203;3856]: https://github.com/launchbadge/sqlx/pull/3856 [#&#8203;3863]: https://github.com/launchbadge/sqlx/pull/3863 [#&#8203;3866]: https://github.com/launchbadge/sqlx/pull/3866 ### [`v0.8.5`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#085---2025-04-14) Hotfix release to address two new issues: - \[[#&#8203;3823]]: `sqlx-cli@0.8.4` broke `.env` default resolution mechanism - \[[#&#8203;3825]]: `sqlx@0.8.4` broke test fixture setup The `0.8.4` release will be yanked as of publishing this one. ##### Added - In release PR: `sqlx-cli` now accepts `--no-dotenv` in subcommand arguments. - In release PR: added functionality tests for `sqlx-cli` to CI. - In release PR: test `#[sqlx::test]` twice in CI to cover cleanup. ##### Fixed - In release PR: `sqlx-cli` correctly reads `.env` files by default again. - Addresses \[[#&#8203;3823]]. - In release PR: fix bugs in MySQL implementation of `#[sqlx::test]`. - Addresses \[[#&#8203;3825]]. [#&#8203;3823]: https://github.com/launchbadge/sqlx/issues/3823 [#&#8203;3825]: https://github.com/launchbadge/sqlx/issues/3825 ### [`v0.8.4`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#085---2025-04-14) Hotfix release to address two new issues: - \[[#&#8203;3823]]: `sqlx-cli@0.8.4` broke `.env` default resolution mechanism - \[[#&#8203;3825]]: `sqlx@0.8.4` broke test fixture setup The `0.8.4` release will be yanked as of publishing this one. ##### Added - In release PR: `sqlx-cli` now accepts `--no-dotenv` in subcommand arguments. - In release PR: added functionality tests for `sqlx-cli` to CI. - In release PR: test `#[sqlx::test]` twice in CI to cover cleanup. ##### Fixed - In release PR: `sqlx-cli` correctly reads `.env` files by default again. - Addresses \[[#&#8203;3823]]. - In release PR: fix bugs in MySQL implementation of `#[sqlx::test]`. - Addresses \[[#&#8203;3825]]. [#&#8203;3823]: https://github.com/launchbadge/sqlx/issues/3823 [#&#8203;3825]: https://github.com/launchbadge/sqlx/issues/3825 ### [`v0.8.3`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#083---2025-01-03) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.2...v0.8.3) 41 pull requests were merged this release cycle. ##### Added - \[[#&#8203;3418]]: parse timezone parameter in mysql connection url \[\[[@&#8203;dojiong](https://github.com/dojiong)]] - \[[#&#8203;3491]]: chore: Update async-std v1.13 \[\[[@&#8203;jayvdb](https://github.com/jayvdb)]] - \[[#&#8203;3492]]: expose relation\_id and relation\_attribution\_no on PgColumn \[\[[@&#8203;kurtbuilds](https://github.com/kurtbuilds)]] - \[[#&#8203;3493]]: doc(sqlite): document behavior for zoned date-time types \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3500]]: Add sqlite commit and rollback hooks \[\[[@&#8203;gridbox](https://github.com/gridbox)]] - \[[#&#8203;3505]]: chore(mysql): create test for passwordless auth ([#&#8203;3484](https://github.com/launchbadge/sqlx/issues/3484)) \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3507]]: Add a "sqlite-unbundled" feature that dynamically links to system libsqlite3.so library \[\[[@&#8203;lilydjwg](https://github.com/lilydjwg)]] - \[[#&#8203;3508]]: doc(sqlite): show how to turn options into a pool \[\[[@&#8203;M3t0r](https://github.com/M3t0r)]] - \[[#&#8203;3514]]: Support PgHstore by default in macros \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3550]]: Implement Acquire for PgListener \[\[[@&#8203;sandhose](https://github.com/sandhose)]] - \[[#&#8203;3551]]: Support building with rustls but native certificates \[\[[@&#8203;IlyaBizyaev](https://github.com/IlyaBizyaev)]] - \[[#&#8203;3553]]: Add support for Postgres lquery arrays \[\[[@&#8203;philipcristiano](https://github.com/philipcristiano)]] - \[[#&#8203;3560]]: Add PgListener::next\_buffered(), to support batch processing of notifications \[\[[@&#8203;chanks](https://github.com/chanks)]] - \[[#&#8203;3577]]: Derive Copy where possible for database-specific types \[\[[@&#8203;veigaribo](https://github.com/veigaribo)]] - \[[#&#8203;3579]]: Reexport AnyTypeInfoKind \[\[[@&#8203;Norlock](https://github.com/Norlock)]] - \[[#&#8203;3580]]: doc(mysql): document difference between `Uuid` and `uuid::fmt::Hyphenated` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3583]]: feat: point \[\[[@&#8203;jayy-lmao](https://github.com/jayy-lmao)]] - \[[#&#8203;3608]]: Implement AnyQueryResult for Sqlite and MySQL \[\[[@&#8203;pxp9](https://github.com/pxp9)]] - \[[#&#8203;3623]]: feat: add geometry line \[\[[@&#8203;jayy-lmao](https://github.com/jayy-lmao)]] - \[[#&#8203;3658]]: feat: add Transaction type aliases \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] ##### Changed - \[[#&#8203;3519]]: Remove unused dependencies from sqlx-core, sqlx-cli and sqlx-postgres \[\[[@&#8203;vsuryamurthy](https://github.com/vsuryamurthy)]] - \[[#&#8203;3529]]: Box Pgconnection fields \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3548]]: Demote `.pgpass` file warning to a debug message. \[\[[@&#8203;denschub](https://github.com/denschub)]] - \[[#&#8203;3585]]: Eagerly reconnect in `PgListener::try_recv` \[\[[@&#8203;swlynch99](https://github.com/swlynch99)]] - \[[#&#8203;3596]]: Bump thiserror to v2.0.0 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3605]]: Use `UNION ALL` instead of `UNION` in nullable check \[\[[@&#8203;Suficio](https://github.com/Suficio)]] - \[[#&#8203;3629]]: chore: remove BoxFuture's (non-breaking) \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3632]]: Bump hashlink to v0.10 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3643]]: Roll PostgreSQL 11..=15 tests to 13..=17 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3648]]: close listener connection on TimedOut and BrokenPipe errors \[\[[@&#8203;DXist](https://github.com/DXist)]] - \[[#&#8203;3649]]: Bump hashbrown to v0.15 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] ##### Fixed - \[[#&#8203;3528]]: fix: obey `no-transaction` flag in down migrations \[\[[@&#8203;manifest](https://github.com/manifest)]] - \[[#&#8203;3536]]: fix: using sqlx::test macro inside macro's \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3545]]: fix: remove `sqlformat` \[\[[@&#8203;tbar4](https://github.com/tbar4)]] - \[[#&#8203;3558]]: fix: fix example code of `query_as` \[\[[@&#8203;xuehaonan27](https://github.com/xuehaonan27)]] - \[[#&#8203;3566]]: Fix: Cannot query Postgres `INTERVAL[]` \[\[[@&#8203;Ddystopia](https://github.com/Ddystopia)]] - \[[#&#8203;3593]]: fix: URL decode database name when parsing connection url \[\[[@&#8203;BenoitRanque](https://github.com/BenoitRanque)]] - \[[#&#8203;3601]]: Remove default-features = false from url \[\[[@&#8203;hsivonen](https://github.com/hsivonen)]] - \[[#&#8203;3604]]: Fix mistake in sqlx::test fixtures docs \[\[[@&#8203;andreweggleston](https://github.com/andreweggleston)]] - \[[#&#8203;3612]]: fix(mysql): percent-decode database name \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3640]]: Dont use `EXPLAIN` in nullability check for QuestDB \[\[[@&#8203;Suficio](https://github.com/Suficio)]] [#&#8203;3418]: https://github.com/launchbadge/sqlx/pull/3418 [#&#8203;3478]: https://github.com/launchbadge/sqlx/pull/3478 [#&#8203;3491]: https://github.com/launchbadge/sqlx/pull/3491 [#&#8203;3492]: https://github.com/launchbadge/sqlx/pull/3492 [#&#8203;3493]: https://github.com/launchbadge/sqlx/pull/3493 [#&#8203;3500]: https://github.com/launchbadge/sqlx/pull/3500 [#&#8203;3505]: https://github.com/launchbadge/sqlx/pull/3505 [#&#8203;3507]: https://github.com/launchbadge/sqlx/pull/3507 [#&#8203;3508]: https://github.com/launchbadge/sqlx/pull/3508 [#&#8203;3514]: https://github.com/launchbadge/sqlx/pull/3514 [#&#8203;3519]: https://github.com/launchbadge/sqlx/pull/3519 [#&#8203;3528]: https://github.com/launchbadge/sqlx/pull/3528 [#&#8203;3529]: https://github.com/launchbadge/sqlx/pull/3529 [#&#8203;3536]: https://github.com/launchbadge/sqlx/pull/3536 [#&#8203;3545]: https://github.com/launchbadge/sqlx/pull/3545 [#&#8203;3548]: https://github.com/launchbadge/sqlx/pull/3548 [#&#8203;3550]: https://github.com/launchbadge/sqlx/pull/3550 [#&#8203;3551]: https://github.com/launchbadge/sqlx/pull/3551 [#&#8203;3553]: https://github.com/launchbadge/sqlx/pull/3553 [#&#8203;3558]: https://github.com/launchbadge/sqlx/pull/3558 [#&#8203;3560]: https://github.com/launchbadge/sqlx/pull/3560 [#&#8203;3566]: https://github.com/launchbadge/sqlx/pull/3566 [#&#8203;3577]: https://github.com/launchbadge/sqlx/pull/3577 [#&#8203;3579]: https://github.com/launchbadge/sqlx/pull/3579 [#&#8203;3580]: https://github.com/launchbadge/sqlx/pull/3580 [#&#8203;3583]: https://github.com/launchbadge/sqlx/pull/3583 [#&#8203;3585]: https://github.com/launchbadge/sqlx/pull/3585 [#&#8203;3593]: https://github.com/launchbadge/sqlx/pull/3593 [#&#8203;3596]: https://github.com/launchbadge/sqlx/pull/3596 [#&#8203;3601]: https://github.com/launchbadge/sqlx/pull/3601 [#&#8203;3604]: https://github.com/launchbadge/sqlx/pull/3604 [#&#8203;3605]: https://github.com/launchbadge/sqlx/pull/3605 [#&#8203;3608]: https://github.com/launchbadge/sqlx/pull/3608 [#&#8203;3612]: https://github.com/launchbadge/sqlx/pull/3612 [#&#8203;3623]: https://github.com/launchbadge/sqlx/pull/3623 [#&#8203;3629]: https://github.com/launchbadge/sqlx/pull/3629 [#&#8203;3632]: https://github.com/launchbadge/sqlx/pull/3632 [#&#8203;3640]: https://github.com/launchbadge/sqlx/pull/3640 [#&#8203;3643]: https://github.com/launchbadge/sqlx/pull/3643 [#&#8203;3648]: https://github.com/launchbadge/sqlx/pull/3648 [#&#8203;3649]: https://github.com/launchbadge/sqlx/pull/3649 [#&#8203;3658]: https://github.com/launchbadge/sqlx/pull/3658 ### [`v0.8.2`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#082---2024-09-02) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.1...v0.8.2) 10 pull requests were merged this release cycle. This release addresses a few regressions that have occurred, and refines SQLx's MSRV policy (see [the FAQ](FAQ.md)). ##### Added - \[[#&#8203;3447]]: Clarify usage of Json/Jsonb in query macros \[\[[@&#8203;Lachstec](https://github.com/Lachstec)]] ##### Changed - \[[#&#8203;3424]]: Remove deprecated feature-names from `Cargo.toml` files in examples \[\[[@&#8203;carschandler](https://github.com/carschandler)]] ##### Fixed - \[[#&#8203;3403]]: Fix ([#&#8203;3395](https://github.com/launchbadge/sqlx/issues/3395)) sqlx::test macro in 0.8 \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3411]]: fix: Use rfc3339 to decode date from text \[\[[@&#8203;pierre-wehbe](https://github.com/pierre-wehbe)]] - \[[#&#8203;3453]]: fix([#&#8203;3445](https://github.com/launchbadge/sqlx/issues/3445)): PgHasArrayType \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - Fixes `#[sqlx(no_pg_array)]` being forbidden on `#[derive(Type)]` structs. - \[[#&#8203;3454]]: fix: non snake case warning \[\[[@&#8203;joeydewaal](https://github.com/joeydewaal)]] - \[[#&#8203;3459]]: Pgsql cube type compile fail \[\[[@&#8203;kdesjard](https://github.com/kdesjard)]] - \[[#&#8203;3465]]: fix(postgres): max number of binds is 65535, not 32767 (regression) \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3467]]: fix cancellation issues with `PgListener`, `PgStream::recv()` \[\[[@&#8203;abonander](https://github.com/abonander)]] - Fixes cryptic `unknown message: "\\0"` error - \[[#&#8203;3474]]: Fix try\_get example in README.md \[\[[@&#8203;luveti](https://github.com/luveti)]] [#&#8203;3403]: https://github.com/launchbadge/sqlx/pull/3403 [#&#8203;3411]: https://github.com/launchbadge/sqlx/pull/3411 [#&#8203;3424]: https://github.com/launchbadge/sqlx/pull/3424 [#&#8203;3447]: https://github.com/launchbadge/sqlx/pull/3447 [#&#8203;3453]: https://github.com/launchbadge/sqlx/pull/3453 [#&#8203;3454]: https://github.com/launchbadge/sqlx/pull/3454 [#&#8203;3455]: https://github.com/launchbadge/sqlx/pull/3455 [#&#8203;3459]: https://github.com/launchbadge/sqlx/pull/3459 [#&#8203;3465]: https://github.com/launchbadge/sqlx/pull/3465 [#&#8203;3467]: https://github.com/launchbadge/sqlx/pull/3467 [#&#8203;3474]: https://github.com/launchbadge/sqlx/pull/3474 ### [`v0.8.1`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#081---2024-08-23) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.8.0...v0.8.1) 16 pull requests were merged this release cycle. This release contains a fix for [RUSTSEC-2024-0363]. Postgres users are advised to upgrade ASAP as a possible exploit has been demonstrated: [#&#8203;3440 (comment)](https://github.com/launchbadge/sqlx/issues/3440#issuecomment-2307956901) MySQL and SQLite do not *appear* to be exploitable, but upgrading is recommended nonetheless. ##### Added - \[[#&#8203;3421]]: correct spelling of `MySqlConnectOptions::no_engine_substitution()` \[\[[@&#8203;kolinfluence](https://github.com/kolinfluence)]] - Deprecates `MySqlConnectOptions::no_engine_subsitution()` (oops) in favor of the correctly spelled version. ##### Changed - \[[#&#8203;3376]]: doc: hide `spec_error` module \[\[[@&#8203;abonander](https://github.com/abonander)]] - This is a helper module for the macros and was not meant to be exposed. - It is not expected to receive any breaking changes for the 0.8.x release, but is not designed as a public API. Use at your own risk. - \[[#&#8203;3382]]: feat: bumped to `libsqlite3-sys=0.30.1` to support sqlite 3.46 \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3385]]: chore(examples):Migrated the pg-chat example to ratatui \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3399]]: Upgrade to rustls 0.23 \[\[[@&#8203;djc](https://github.com/djc)]] - RusTLS now has pluggable cryptography providers: `ring` (the existing implementation), and `aws-lc-rs` which has optional FIPS certification. - The existing features activating RusTLS (`runtime-tokio-rustls`, `runtime-async-std-rustls`, `tls-rustls`) enable the `ring` provider of RusTLS to match the existing behavior so this *should not* be a breaking change. - Switch to the `tls-rustls-aws-lc-rs` feature to use the `aws-lc-rs` provider. - If using `runtime-tokio-rustls` or `runtime-async-std-rustls`, this will necessitate switching to the appropriate non-legacy runtime feature: `runtime-tokio` or `runtime-async-std` - See the RusTLS README for more details: <https://github.com/rustls/rustls?tab=readme-ov-file#cryptography-providers> ##### Fixed - \[[#&#8203;2786]]: fix(sqlx-cli): do not clean sqlx during prepare \[\[[@&#8203;cycraig](https://github.com/cycraig)]] - \[[#&#8203;3354]]: sqlite: fix inconsistent read-after-write \[\[[@&#8203;ckampfe](https://github.com/ckampfe)]] - \[[#&#8203;3371]]: Fix encoding and decoding of MySQL enums in `sqlx::Type` \[\[[@&#8203;alu](https://github.com/alu)]] - \[[#&#8203;3374]]: fix: usage of `node12` in `SQLx` action \[\[[@&#8203;hamirmahal](https://github.com/hamirmahal)]] - \[[#&#8203;3380]]: chore: replace structopt with clap in examples \[\[[@&#8203;tottoto](https://github.com/tottoto)]] - \[[#&#8203;3381]]: Fix CI after Rust 1.80, remove dead feature references \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3384]]: chore(tests): fixed deprecation warnings \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3386]]: fix(dependencys):bumped cargo\_metadata to `v0.18.1` to avoid yanked `v0.14.3` \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3389]]: fix(cli): typo in error for required DB URL \[\[[@&#8203;ods](https://github.com/ods)]] - \[[#&#8203;3417]]: Update version to 0.8 in README \[\[[@&#8203;soucosmo](https://github.com/soucosmo)]] - \[[#&#8203;3441]]: fix: audit protocol handling \[\[[@&#8203;abonander](https://github.com/abonander)]] - This addresses [RUSTSEC-2024-0363] and includes regression tests for MySQL, Postgres and SQLite. [#&#8203;2786]: https://github.com/launchbadge/sqlx/pull/2786 [#&#8203;3354]: https://github.com/launchbadge/sqlx/pull/3354 [#&#8203;3371]: https://github.com/launchbadge/sqlx/pull/3371 [#&#8203;3374]: https://github.com/launchbadge/sqlx/pull/3374 [#&#8203;3376]: https://github.com/launchbadge/sqlx/pull/3376 [#&#8203;3380]: https://github.com/launchbadge/sqlx/pull/3380 [#&#8203;3381]: https://github.com/launchbadge/sqlx/pull/3381 [#&#8203;3382]: https://github.com/launchbadge/sqlx/pull/3382 [#&#8203;3384]: https://github.com/launchbadge/sqlx/pull/3384 [#&#8203;3385]: https://github.com/launchbadge/sqlx/pull/3385 [#&#8203;3386]: https://github.com/launchbadge/sqlx/pull/3386 [#&#8203;3389]: https://github.com/launchbadge/sqlx/pull/3389 [#&#8203;3399]: https://github.com/launchbadge/sqlx/pull/3399 [#&#8203;3417]: https://github.com/launchbadge/sqlx/pull/3417 [#&#8203;3421]: https://github.com/launchbadge/sqlx/pull/3421 [#&#8203;3441]: https://github.com/launchbadge/sqlx/pull/3441 [RUSTSEC-2024-0363]: https://rustsec.org/advisories/RUSTSEC-2024-0363.html ### [`v0.8.0`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#080---2024-07-22) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.7.4...v0.8.0) 70 pull requests were merged this release cycle. [#&#8203;2697] was merged the same day as release 0.7.4 and so was missed by the automatic CHANGELOG generation. ##### Breaking - \[[#&#8203;2697]]: fix(macros): only enable chrono when time is disabled \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;2973]]: Generic Associated Types in Database, replacing HasValueRef, HasArguments, HasStatement \[\[[@&#8203;nitn3lav](https://github.com/nitn3lav)]] - \[[#&#8203;2482]]: chore: bump syn to 2.0 \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - Deprecated type ascription syntax in the query macros was removed. - \[[#&#8203;2736]]: Fix describe on PostgreSQL views with rules \[\[[@&#8203;tsing](https://github.com/tsing)]] - Potentially breaking: nullability inference changes for Postgres. - \[[#&#8203;2869]]: Implement PgHasArrayType for all references \[\[[@&#8203;tylerhawkes](https://github.com/tylerhawkes)]] - Conflicts with existing manual implementations. - \[[#&#8203;2940]]: fix: Decode and Encode derives ([#&#8203;1031](https://github.com/launchbadge/sqlx/issues/1031)) \[\[[@&#8203;benluelo](https://github.com/benluelo)]] - Changes lifetime obligations for field types. - \[[#&#8203;3064]]: Sqlite explain graph \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - Potentially breaking: nullability inference changes for SQLite. - \[[#&#8203;3123]]: Reorder attrs in sqlx::test macro \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - Potentially breaking: attributes on `#[sqlx::test]` usages are applied in the correct order now. - \[[#&#8203;3126]]: Make Encode return a result \[\[[@&#8203;FSMaxB](https://github.com/FSMaxB)]] - \[[#&#8203;3130]]: Add version information for failed cli migration ([#&#8203;3129](https://github.com/launchbadge/sqlx/issues/3129)) \[\[[@&#8203;FlakM](https://github.com/FlakM)]] - Breaking changes to `MigrateError`. - \[[#&#8203;3181]]: feat: no tx migration \[\[[@&#8203;cleverjam](https://github.com/cleverjam)]] - (Postgres only) migrations that should not run in a transaction can be flagged by adding `-- no-transaction` to the beginning. - Breaking change: added field to `Migration` - \[[#&#8203;3184]]: \[BREAKING} fix(sqlite): always use `i64` as intermediate when decoding \[\[[@&#8203;abonander](https://github.com/abonander)]] - integer decoding will now loudly error on overflow instead of silently truncating. - some usages of the query!() macros might change an i32 to an i64. - \[[#&#8203;3252]]: fix `#[derive(sqlx::Type)]` in Postgres \[\[[@&#8203;abonander](https://github.com/abonander)]] - Manual implementations of PgHasArrayType for enums will conflict with the generated one. Delete the manual impl or add `#[sqlx(no_pg_array)]` where conflicts occur. - Type equality for PgTypeInfo is now schema-aware. - \[[#&#8203;3329]]: fix: correct handling of arrays of custom types in Postgres \[\[[@&#8203;abonander](https://github.com/abonander)]] - Potential breaking change: `PgTypeInfo::with_name()` infers types that start with `_` to be arrays of the un-prefixed type. Wrap type names in quotes to bypass this behavior. - \[[#&#8203;3356]]: breaking: fix name collision in `FromRow`, return `Error::ColumnDecode` for `TryFrom` errors \[\[[@&#8203;abonander](https://github.com/abonander)]] - Breaking behavior change: errors with `#[sqlx(try_from = "T")]` now return `Error::ColumnDecode` instead of `Error::ColumnNotFound`. - Breaking because `#[sqlx(default)]` on an individual field or the struct itself would have previously suppressed the error. This doesn't seem like good behavior as it could result in some potentially very difficult bugs. - Instead, create a wrapper implementing `From` and apply the default explicitly. - \[[#&#8203;3337]]: allow rename with rename\_all (close [#&#8203;2896](https://github.com/launchbadge/sqlx/issues/2896)) \[\[[@&#8203;DirectorX](https://github.com/DirectorX)]] - Changes the precedence of `#[sqlx(rename)]` and `#[sqlx(rename_all)]` to match the expected behavior (`rename` wins). - \[[#&#8203;3285]]: fix: use correct names for sslmode options \[\[[@&#8203;lily-mosquitoes](https://github.com/lily-mosquitoes)]] - Changes the output of `ConnectOptions::to_url_lossy()` to match what parsing expects. ##### Added - \[[#&#8203;2917]]: Add Debug impl for PgRow \[\[[@&#8203;g-bartoszek](https://github.com/g-bartoszek)]] - \[[#&#8203;3113]]: feat: new derive feature flag \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;3154]]: feat: add `MySqlTime`, audit `mysql::types` for panics \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3188]]: feat(cube): support postgres cube \[\[[@&#8203;jayy-lmao](https://github.com/jayy-lmao)]] - \[[#&#8203;3244]]: feat: support `NonZero*` scalar types \[\[[@&#8203;AlphaKeks](https://github.com/AlphaKeks)]] - \[[#&#8203;3260]]: feat: Add set\_update\_hook on SqliteConnection \[\[[@&#8203;gridbox](https://github.com/gridbox)]] - \[[#&#8203;3291]]: feat: support the Postgres Bool type for the Any driver \[\[[@&#8203;etorreborre](https://github.com/etorreborre)]] - \[[#&#8203;3293]]: Add LICENSE-\* files to crates \[\[[@&#8203;LecrisUT](https://github.com/LecrisUT)]] - \[[#&#8203;3303]]: add array support for NonZeroI\* in postgres \[\[[@&#8203;JohannesIBK](https://github.com/JohannesIBK)]] - \[[#&#8203;3311]]: Add example on how to use Transaction as Executor \[\[[@&#8203;Lachstec](https://github.com/Lachstec)]] - \[[#&#8203;3343]]: Add support for PostgreSQL HSTORE data type \[\[[@&#8203;KobusEllis](https://github.com/KobusEllis)]] ##### Changed - \[[#&#8203;2652]]: MySQL: Remove collation compatibility check for strings \[\[[@&#8203;alu](https://github.com/alu)]] - \[[#&#8203;2960]]: Removed `Send` trait bound from argument binding \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;2970]]: refactor: lift type mappings into driver crates \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3148]]: Bump libsqlite3-sys to v0.28 \[\[[@&#8203;NfNitLoop](https://github.com/NfNitLoop)]] - Note: version bumps to `libsqlite3-sys` are not considered breaking changes as per our semver guarantees. - \[[#&#8203;3265]]: perf: box `MySqlConnection` to reduce sizes of futures \[\[[@&#8203;stepantubanov](https://github.com/stepantubanov)]] - \[[#&#8203;3352]]: chore:added a testcase for `sqlx migrate add ...` \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3340]]: ci: Add job to check that sqlx builds with its declared minimum dependencies \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] ##### Fixed - \[[#&#8203;2702]]: Constrain cyclic associated types to themselves \[\[[@&#8203;BadBastion](https://github.com/BadBastion)]] - \[[#&#8203;2954]]: Fix several inter doc links \[\[[@&#8203;ralpha](https://github.com/ralpha)]] - \[[#&#8203;3073]]: feat(logging): Log slow acquires from connection pool \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3137]]: SqliteConnectOptions::filename() memory fix ([#&#8203;3136](https://github.com/launchbadge/sqlx/issues/3136)) \[\[[@&#8203;hoxxep](https://github.com/hoxxep)]] - \[[#&#8203;3138]]: PostgreSQL Bugfix: Ensure connection is usable after failed COPY inside a transaction \[\[[@&#8203;feikesteenbergen](https://github.com/feikesteenbergen)]] - \[[#&#8203;3146]]: fix(sqlite): delete unused `ConnectionHandleRaw` type \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3162]]: Drop urlencoding dependency \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;3165]]: Bump deps that do not need code changes \[\[[@&#8203;GnomedDev](https://github.com/GnomedDev)]] - \[[#&#8203;3167]]: fix(ci): use `docker compose` instead of `docker-compose` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3172]]: fix: Option decoding in any driver \[\[[@&#8203;pxp9](https://github.com/pxp9)]] - \[[#&#8203;3173]]: fix(postgres) : int type conversion while decoding \[\[[@&#8203;RaghavRox](https://github.com/RaghavRox)]] - \[[#&#8203;3190]]: Update time to 0.3.36 \[\[[@&#8203;BlackSoulHub](https://github.com/BlackSoulHub)]] - \[[#&#8203;3191]]: Fix unclean TLS shutdown \[\[[@&#8203;levkk](https://github.com/levkk)]] - \[[#&#8203;3194]]: Fix leaking connections in fetch\_optional ([#&#8203;2647](https://github.com/launchbadge/sqlx/issues/2647)) \[\[[@&#8203;danjpgriffin](https://github.com/danjpgriffin)]] - \[[#&#8203;3216]]: security: bump rustls to 0.21.11 \[\[[@&#8203;toxeus](https://github.com/toxeus)]] - \[[#&#8203;3230]]: fix: sqlite pragma order for auto\_vacuum \[\[[@&#8203;jasonish](https://github.com/jasonish)]] - \[[#&#8203;3233]]: fix: get\_filename should not consume self \[\[[@&#8203;jasonish](https://github.com/jasonish)]] - \[[#&#8203;3234]]: fix(ci): pin Rust version, ditch unmaintained actions \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3236]]: fix: resolve `path` ownership problems when using `sqlx_macros_unstable` \[\[[@&#8203;lily-mosquitoes](https://github.com/lily-mosquitoes)]] - \[[#&#8203;3254]]: fix: hide `sqlx_postgres::any` \[\[[@&#8203;Zarathustra2](https://github.com/Zarathustra2)]] - \[[#&#8203;3266]]: ci: MariaDB - add back 11.4 and add 11.5 \[\[[@&#8203;grooverdan](https://github.com/grooverdan)]] - \[[#&#8203;3267]]: ci: syntax fix \[\[[@&#8203;grooverdan](https://github.com/grooverdan)]] - \[[#&#8203;3271]]: docs(sqlite): fix typo - unixtime() -> unixepoch() \[\[[@&#8203;joelkoen](https://github.com/joelkoen)]] - \[[#&#8203;3276]]: Invert boolean for `migrate` error message. ([#&#8203;3275](https://github.com/launchbadge/sqlx/issues/3275)) \[\[[@&#8203;nk9](https://github.com/nk9)]] - \[[#&#8203;3279]]: fix Clippy errors \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3288]]: fix: sqlite update\_hook char types \[\[[@&#8203;jasonish](https://github.com/jasonish)]] - \[[#&#8203;3297]]: Pass the `persistent` query setting when preparing queries with the `Any` driver \[\[[@&#8203;etorreborre](https://github.com/etorreborre)]] - \[[#&#8203;3298]]: Track null arguments in order to provide the appropriate type when converting them. \[\[[@&#8203;etorreborre](https://github.com/etorreborre)]] - \[[#&#8203;3312]]: doc: Minor rust docs fixes \[\[[@&#8203;SrGesus](https://github.com/SrGesus)]] - \[[#&#8203;3327]]: chore: fixed one usage of `select_input_type!()` being unhygenic \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3328]]: fix(ci): comment not separated from other characters \[\[[@&#8203;hamirmahal](https://github.com/hamirmahal)]] - \[[#&#8203;3341]]: refactor: Resolve cargo check warnings in postgres examples \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3346]]: fix(postgres): don't panic if `M` or `C` Notice fields are not UTF-8 \[\[[@&#8203;YgorSouza](https://github.com/YgorSouza)]] - \[[#&#8203;3350]]: fix:the `json`-feature should activate `sqlx-postgres?/json` as well \[\[[@&#8203;CommanderStorm](https://github.com/CommanderStorm)]] - \[[#&#8203;3353]]: fix: build script new line at eof \[\[[@&#8203;Zarthus](https://github.com/Zarthus)]] - (no PR): activate `clock` and `std` features of `workspace.dependencies.chrono`. [#&#8203;2482]: https://github.com/launchbadge/sqlx/pull/2482 [#&#8203;2652]: https://github.com/launchbadge/sqlx/pull/2652 [#&#8203;2697]: https://github.com/launchbadge/sqlx/pull/2697 [#&#8203;2702]: https://github.com/launchbadge/sqlx/pull/2702 [#&#8203;2736]: https://github.com/launchbadge/sqlx/pull/2736 [#&#8203;2869]: https://github.com/launchbadge/sqlx/pull/2869 [#&#8203;2917]: https://github.com/launchbadge/sqlx/pull/2917 [#&#8203;2940]: https://github.com/launchbadge/sqlx/pull/2940 [#&#8203;2954]: https://github.com/launchbadge/sqlx/pull/2954 [#&#8203;2960]: https://github.com/launchbadge/sqlx/pull/2960 [#&#8203;2970]: https://github.com/launchbadge/sqlx/pull/2970 [#&#8203;2973]: https://github.com/launchbadge/sqlx/pull/2973 [#&#8203;3064]: https://github.com/launchbadge/sqlx/pull/3064 [#&#8203;3073]: https://github.com/launchbadge/sqlx/pull/3073 [#&#8203;3113]: https://github.com/launchbadge/sqlx/pull/3113 [#&#8203;3123]: https://github.com/launchbadge/sqlx/pull/3123 [#&#8203;3126]: https://github.com/launchbadge/sqlx/pull/3126 [#&#8203;3130]: https://github.com/launchbadge/sqlx/pull/3130 [#&#8203;3137]: https://github.com/launchbadge/sqlx/pull/3137 [#&#8203;3138]: https://github.com/launchbadge/sqlx/pull/3138 [#&#8203;3146]: https://github.com/launchbadge/sqlx/pull/3146 [#&#8203;3148]: https://github.com/launchbadge/sqlx/pull/3148 [#&#8203;3154]: https://github.com/launchbadge/sqlx/pull/3154 [#&#8203;3162]: https://github.com/launchbadge/sqlx/pull/3162 [#&#8203;3165]: https://github.com/launchbadge/sqlx/pull/3165 [#&#8203;3167]: https://github.com/launchbadge/sqlx/pull/3167 [#&#8203;3172]: https://github.com/launchbadge/sqlx/pull/3172 [#&#8203;3173]: https://github.com/launchbadge/sqlx/pull/3173 [#&#8203;3181]: https://github.com/launchbadge/sqlx/pull/3181 [#&#8203;3184]: https://github.com/launchbadge/sqlx/pull/3184 [#&#8203;3188]: https://github.com/launchbadge/sqlx/pull/3188 [#&#8203;3190]: https://github.com/launchbadge/sqlx/pull/3190 [#&#8203;3191]: https://github.com/launchbadge/sqlx/pull/3191 [#&#8203;3194]: https://github.com/launchbadge/sqlx/pull/3194 [#&#8203;3216]: https://github.com/launchbadge/sqlx/pull/3216 [#&#8203;3230]: https://github.com/launchbadge/sqlx/pull/3230 [#&#8203;3233]: https://github.com/launchbadge/sqlx/pull/3233 [#&#8203;3234]: https://github.com/launchbadge/sqlx/pull/3234 [#&#8203;3236]: https://github.com/launchbadge/sqlx/pull/3236 [#&#8203;3244]: https://github.com/launchbadge/sqlx/pull/3244 [#&#8203;3252]: https://github.com/launchbadge/sqlx/pull/3252 [#&#8203;3254]: https://github.com/launchbadge/sqlx/pull/3254 [#&#8203;3260]: https://github.com/launchbadge/sqlx/pull/3260 [#&#8203;3265]: https://github.com/launchbadge/sqlx/pull/3265 [#&#8203;3266]: https://github.com/launchbadge/sqlx/pull/3266 [#&#8203;3267]: https://github.com/launchbadge/sqlx/pull/3267 [#&#8203;3271]: https://github.com/launchbadge/sqlx/pull/3271 [#&#8203;3276]: https://github.com/launchbadge/sqlx/pull/3276 [#&#8203;3279]: https://github.com/launchbadge/sqlx/pull/3279 [#&#8203;3285]: https://github.com/launchbadge/sqlx/pull/3285 [#&#8203;3288]: https://github.com/launchbadge/sqlx/pull/3288 [#&#8203;3291]: https://github.com/launchbadge/sqlx/pull/3291 [#&#8203;3293]: https://github.com/launchbadge/sqlx/pull/3293 [#&#8203;3297]: https://github.com/launchbadge/sqlx/pull/3297 [#&#8203;3298]: https://github.com/launchbadge/sqlx/pull/3298 [#&#8203;3303]: https://github.com/launchbadge/sqlx/pull/3303 [#&#8203;3311]: https://github.com/launchbadge/sqlx/pull/3311 [#&#8203;3312]: https://github.com/launchbadge/sqlx/pull/3312 [#&#8203;3327]: https://github.com/launchbadge/sqlx/pull/3327 [#&#8203;3328]: https://github.com/launchbadge/sqlx/pull/3328 [#&#8203;3329]: https://github.com/launchbadge/sqlx/pull/3329 [#&#8203;3337]: https://github.com/launchbadge/sqlx/pull/3337 [#&#8203;3340]: https://github.com/launchbadge/sqlx/pull/3340 [#&#8203;3341]: https://github.com/launchbadge/sqlx/pull/3341 [#&#8203;3343]: https://github.com/launchbadge/sqlx/pull/3343 [#&#8203;3346]: https://github.com/launchbadge/sqlx/pull/3346 [#&#8203;3350]: https://github.com/launchbadge/sqlx/pull/3350 [#&#8203;3352]: https://github.com/launchbadge/sqlx/pull/3352 [#&#8203;3353]: https://github.com/launchbadge/sqlx/pull/3353 [#&#8203;3356]: https://github.com/launchbadge/sqlx/pull/3356 ### [`v0.7.4`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#074---2024-03-11) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.7.3...v0.7.4) 38 pull requests were merged this release cycle. This is officially the **last** release of the 0.7.x release cycle. As of this release, development of 0.8.0 has begun on `main` and only high-priority bugfixes may be backported. ##### Added - \[[#&#8203;2891]]: feat: expose getters for connect options fields \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;2902]]: feat: add `to_url_lossy` to connect options \[\[[@&#8203;lily-mosquitoes](https://github.com/lily-mosquitoes)]] - \[[#&#8203;2927]]: Support `query!` for cargo-free systems \[\[[@&#8203;kshramt](https://github.com/kshramt)]] - \[[#&#8203;2997]]: doc(FAQ): add entry explaining prepared statements \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3001]]: Update README to clarify MariaDB support \[\[[@&#8203;iangilfillan](https://github.com/iangilfillan)]] - \[[#&#8203;3004]]: feat(logging): Add numeric elapsed time field elapsed\_secs \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3007]]: feat: add `raw_sql` API \[\[[@&#8203;abonander](https://github.com/abonander)]] - This hopefully makes it easier to find how to execute statements which are not supported by the default prepared statement interfaces `query*()` and `query!()`. - Improved documentation across the board for the `query*()` functions. - Deprecated: `execute_many()` and `fetch_many()` on interfaces that use prepared statements. - Multiple SQL statements in one query string were only supported by SQLite because its prepared statement interface is the *only* way to execute SQL. All other database flavors forbid multiple statements in one prepared statement string as an extra defense against SQL injection. - The new `raw_sql` API retains this functionality because it explicitly does *not* use prepared statements. Raw or text-mode query interfaces generally allow multiple statements in one query string, and this is supported by all current databases. Due to their nature, however, one cannot use bind parameters with them. - If this change affects you, an issue is open for discussion: [#&#8203;3108](https://github.com/launchbadge/sqlx/issues/3108) - \[[#&#8203;3011]]: Added support to IpAddr with MySQL/MariaDB. \[\[[@&#8203;Icerath](https://github.com/Icerath)]] - \[[#&#8203;3013]]: Add default implementation for PgInterval \[\[[@&#8203;pawurb](https://github.com/pawurb)]] - \[[#&#8203;3018]]: Add default implementation for PgMoney \[\[[@&#8203;pawurb](https://github.com/pawurb)]] - \[[#&#8203;3026]]: Update docs to reflect support for MariaDB data types \[\[[@&#8203;iangilfillan](https://github.com/iangilfillan)]] - \[[#&#8203;3037]]: feat(mysql): allow to connect with mysql driver without default behavor \[\[[@&#8203;darkecho731](https://github.com/darkecho731)]] ##### Changed - \[[#&#8203;2900]]: Show latest url to docs for macro.migrate \[\[[@&#8203;Vrajs16](https://github.com/Vrajs16)]] - \[[#&#8203;2914]]: Use `create_new` instead of `atomic-file-write` \[\[[@&#8203;mattfbacon](https://github.com/mattfbacon)]] - \[[#&#8203;2926]]: docs: update example for `PgConnectOptions` \[\[[@&#8203;Fyko](https://github.com/Fyko)]] - \[[#&#8203;2989]]: sqlx-core: Remove dotenvy dependency \[\[[@&#8203;joshtriplett](https://github.com/joshtriplett)]] - \[[#&#8203;2996]]: chore: Update ahash to 0.8.7 \[\[[@&#8203;takenoko-gohan](https://github.com/takenoko-gohan)]] - \[[#&#8203;3006]]: chore(deps): Replace unmaintained tempdir crate with tempfile \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3008]]: chore: Ignore .sqlx folder created by running ci steps locally \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3009]]: chore(dev-deps): Upgrade env\_logger from 0.9 to 0.11 \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3010]]: chore(deps): Upgrade criterion to 0.5.1 \[\[[@&#8203;iamjpotts](https://github.com/iamjpotts)]] - \[[#&#8203;3050]]: Optimize SASL auth in sqlx-postgres \[\[[@&#8203;mirek26](https://github.com/mirek26)]] - \[[#&#8203;3055]]: Set TCP\_NODELAY option on TCP sockets \[\[[@&#8203;mirek26](https://github.com/mirek26)]] - \[[#&#8203;3065]]: Improve max\_lifetime handling \[\[[@&#8203;mirek26](https://github.com/mirek26)]] - \[[#&#8203;3072]]: Change the name of "inner" function generated by `#[sqlx::test]` \[\[[@&#8203;ciffelia](https://github.com/ciffelia)]] - \[[#&#8203;3083]]: Remove sha1 because it's not being used in postgres \[\[[@&#8203;rafaelGuerreiro](https://github.com/rafaelGuerreiro)]] ##### Fixed - \[[#&#8203;2898]]: Fixed docs \[\[[@&#8203;Vrajs16](https://github.com/Vrajs16)]] - \[[#&#8203;2905]]: fix(mysql): Close prepared statement if persistence is disabled \[\[[@&#8203;larsschumacher](https://github.com/larsschumacher)]] - \[[#&#8203;2913]]: Fix handling of deferred constraints \[\[[@&#8203;Thomasdezeeuw](https://github.com/Thomasdezeeuw)]] - \[[#&#8203;2919]]: fix duplicate "\`" in FromRow "default" attribute doc comment \[\[[@&#8203;shengsheng](https://github.com/shengsheng)]] - \[[#&#8203;2932]]: fix(postgres): avoid unnecessary flush in PgCopyIn::read\_from \[\[[@&#8203;tsing](https://github.com/tsing)]] - \[[#&#8203;2955]]: Minor fixes \[\[[@&#8203;Dawsoncodes](https://github.com/Dawsoncodes)]] - \[[#&#8203;2963]]: Fixed ReadMe badge styling \[\[[@&#8203;tadghh](https://github.com/tadghh)]] - \[[#&#8203;2976]]: fix: AnyRow not support PgType::Varchar \[\[[@&#8203;holicc](https://github.com/holicc)]] - \[[#&#8203;3053]]: fix: do not panic when binding a large BigDecimal \[\[[@&#8203;Ekleog](https://github.com/Ekleog)]] - \[[#&#8203;3056]]: fix: spans in sqlite tracing ([#&#8203;2876](https://github.com/launchbadge/sqlx/issues/2876)) \[\[[@&#8203;zoomiti](https://github.com/zoomiti)]] - \[[#&#8203;3089]]: fix(migrate): improve error message when parsing version from filename \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;3098]]: Migrations fixes \[\[[@&#8203;abonander](https://github.com/abonander)]] - Unhides `sqlx::migrate::Migrator`. - Improves I/O error message when failing to read a file in `migrate!()`. [#&#8203;2891]: https://github.com/launchbadge/sqlx/pull/2891 [#&#8203;2898]: https://github.com/launchbadge/sqlx/pull/2898 [#&#8203;2900]: https://github.com/launchbadge/sqlx/pull/2900 [#&#8203;2902]: https://github.com/launchbadge/sqlx/pull/2902 [#&#8203;2905]: https://github.com/launchbadge/sqlx/pull/2905 [#&#8203;2913]: https://github.com/launchbadge/sqlx/pull/2913 [#&#8203;2914]: https://github.com/launchbadge/sqlx/pull/2914 [#&#8203;2919]: https://github.com/launchbadge/sqlx/pull/2919 [#&#8203;2926]: https://github.com/launchbadge/sqlx/pull/2926 [#&#8203;2927]: https://github.com/launchbadge/sqlx/pull/2927 [#&#8203;2932]: https://github.com/launchbadge/sqlx/pull/2932 [#&#8203;2955]: https://github.com/launchbadge/sqlx/pull/2955 [#&#8203;2963]: https://github.com/launchbadge/sqlx/pull/2963 [#&#8203;2976]: https://github.com/launchbadge/sqlx/pull/2976 [#&#8203;2989]: https://github.com/launchbadge/sqlx/pull/2989 [#&#8203;2996]: https://github.com/launchbadge/sqlx/pull/2996 [#&#8203;2997]: https://github.com/launchbadge/sqlx/pull/2997 [#&#8203;3001]: https://github.com/launchbadge/sqlx/pull/3001 [#&#8203;3004]: https://github.com/launchbadge/sqlx/pull/3004 [#&#8203;3006]: https://github.com/launchbadge/sqlx/pull/3006 [#&#8203;3007]: https://github.com/launchbadge/sqlx/pull/3007 [#&#8203;3008]: https://github.com/launchbadge/sqlx/pull/3008 [#&#8203;3009]: https://github.com/launchbadge/sqlx/pull/3009 [#&#8203;3010]: https://github.com/launchbadge/sqlx/pull/3010 [#&#8203;3011]: https://github.com/launchbadge/sqlx/pull/3011 [#&#8203;3013]: https://github.com/launchbadge/sqlx/pull/3013 [#&#8203;3018]: https://github.com/launchbadge/sqlx/pull/3018 [#&#8203;3026]: https://github.com/launchbadge/sqlx/pull/3026 [#&#8203;3037]: https://github.com/launchbadge/sqlx/pull/3037 [#&#8203;3050]: https://github.com/launchbadge/sqlx/pull/3050 [#&#8203;3053]: https://github.com/launchbadge/sqlx/pull/3053 [#&#8203;3055]: https://github.com/launchbadge/sqlx/pull/3055 [#&#8203;3056]: https://github.com/launchbadge/sqlx/pull/3056 [#&#8203;3065]: https://github.com/launchbadge/sqlx/pull/3065 [#&#8203;3072]: https://github.com/launchbadge/sqlx/pull/3072 [#&#8203;3083]: https://github.com/launchbadge/sqlx/pull/3083 [#&#8203;3089]: https://github.com/launchbadge/sqlx/pull/3089 [#&#8203;3098]: https://github.com/launchbadge/sqlx/pull/3098 ### [`v0.7.3`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#073---2023-11-22) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.7.2...v0.7.3) 38 pull requests were merged this release cycle. ##### Added - \[[#&#8203;2478]]: feat(citext): support postgres citext \[\[[@&#8203;hgranthorner](https://github.com/hgranthorner)]] - \[[#&#8203;2545]]: Add `fixtures_path` in sqlx::test args \[\[[@&#8203;ripa1995](https://github.com/ripa1995)]] - \[[#&#8203;2665]]: feat(mysql): support packet splitting \[\[[@&#8203;tk2217](https://github.com/tk2217)]] - \[[#&#8203;2752]]: Enhancement [#&#8203;2747](https://github.com/launchbadge/sqlx/issues/2747) Provide `fn PgConnectOptions::get_host(&self)` \[\[[@&#8203;boris-lok](https://github.com/boris-lok)]] - \[[#&#8203;2769]]: Customize the macro error message based on the metadata \[\[[@&#8203;Nemo157](https://github.com/Nemo157)]] - \[[#&#8203;2793]]: derived Hash trait for PgInterval \[\[[@&#8203;yasamoka](https://github.com/yasamoka)]] - \[[#&#8203;2801]]: derive FromRow: sqlx(default) for all fields \[\[[@&#8203;grgi](https://github.com/grgi)]] - \[[#&#8203;2827]]: Add impl `FromRow` for the unit type \[\[[@&#8203;nanoqsh](https://github.com/nanoqsh)]] - \[[#&#8203;2871]]: Add `MySqlConnectOptions::get_database()` \[\[[@&#8203;shiftrightonce](https://github.com/shiftrightonce)]] - \[[#&#8203;2873]]: Sqlx Cli: Added force flag to drop database for postgres \[\[[@&#8203;Vrajs16](https://github.com/Vrajs16)]] - \[[#&#8203;2894]]: feat: `Text` adapter \[\[[@&#8203;abonander](https://github.com/abonander)]] ##### Changed - \[[#&#8203;2701]]: Remove documentation on offline feature \[\[[@&#8203;Baptistemontan](https://github.com/Baptistemontan)]] - \[[#&#8203;2713]]: Add additional info regarding using Transaction and PoolConnection as… \[\[[@&#8203;satwanjyu](https://github.com/satwanjyu)]] - \[[#&#8203;2770]]: Update README.md \[\[[@&#8203;snspinn](https://github.com/snspinn)]] - \[[#&#8203;2797]]: doc(mysql): document behavior regarding `BOOLEAN` and the query macros \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2803]]: Don't use separate temp dir for query jsons (2) \[\[[@&#8203;mattfbacon](https://github.com/mattfbacon)]] - \[[#&#8203;2819]]: postgres begin cancel safe \[\[[@&#8203;conradludgate](https://github.com/conradludgate)]] - \[[#&#8203;2832]]: Update extra\_float\_digits default to 2 instead of 3 \[\[[@&#8203;brianheineman](https://github.com/brianheineman)]] - \[[#&#8203;2865]]: Update Faq - Bulk upsert with optional fields \[\[[@&#8203;Vrajs16](https://github.com/Vrajs16)]] - \[[#&#8203;2880]]: feat: use specific message for slow query logs \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2882]]: Do not require db url for prepare \[\[[@&#8203;tamasfe](https://github.com/tamasfe)]] - \[[#&#8203;2890]]: doc(sqlite): cover lack of `NUMERIC` support \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[No PR]: Upgraded `libsqlite3-sys` to 0.27.0 - Note: linkage to `libsqlite3-sys` is considered semver-exempt; see the release notes for 0.7.0 below for details. ##### Fixed - \[[#&#8203;2640]]: fix: sqlx::macro db cleanup race condition by adding a margin to current timestamp \[\[[@&#8203;fhsgoncalves](https://github.com/fhsgoncalves)]] - \[[#&#8203;2655]]: \[fix] Urlencode when passing filenames to sqlite3 \[\[[@&#8203;uttarayan21](https://github.com/uttarayan21)]] - \[[#&#8203;2684]]: Make PgListener recover from UnexpectedEof \[\[[@&#8203;hamiltop](https://github.com/hamiltop)]] - \[[#&#8203;2688]]: fix: Make rust\_decimal and bigdecimal decoding more lenient \[\[[@&#8203;cameronbraid](https://github.com/cameronbraid)]] - \[[#&#8203;2754]]: Is tests/x.py maintained? And I tried fix it. \[\[[@&#8203;qwerty2501](https://github.com/qwerty2501)]] - \[[#&#8203;2784]]: fix: decode postgres time without subsecond \[\[[@&#8203;granddaifuku](https://github.com/granddaifuku)]] - \[[#&#8203;2806]]: Depend on version of async-std with non-private spawn-blocking \[\[[@&#8203;A248](https://github.com/A248)]] - \[[#&#8203;2820]]: fix: correct decoding of `rust_decimal::Decimal` for high-precision values \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2822]]: issue [#&#8203;2821](https://github.com/launchbadge/sqlx/issues/2821) Update error handling logic when opening a TCP connection \[\[[@&#8203;anupj](https://github.com/anupj)]] - \[[#&#8203;2826]]: chore: bump some sqlx-core dependencies \[\[[@&#8203;djc](https://github.com/djc)]] - \[[#&#8203;2838]]: Fixes rust\_decimal scale for Postgres \[\[[@&#8203;jkleinknox](https://github.com/jkleinknox)]] - \[[#&#8203;2847]]: Fix comment in `sqlx migrate add` help text \[\[[@&#8203;cryeprecision](https://github.com/cryeprecision)]] - \[[#&#8203;2850]]: fix(core): avoid unncessary wakeups in `try_stream!()` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2856]]: Prevent warnings running `cargo build` \[\[[@&#8203;nyurik](https://github.com/nyurik)]] - \[[#&#8203;2864]]: fix(sqlite): use `AtomicUsize` for thread IDs \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2892]]: Fixed force dropping bug \[\[[@&#8203;Vrajs16](https://github.com/Vrajs16)]] [#&#8203;2478]: https://github.com/launchbadge/sqlx/pull/2478 [#&#8203;2545]: https://github.com/launchbadge/sqlx/pull/2545 [#&#8203;2640]: https://github.com/launchbadge/sqlx/pull/2640 [#&#8203;2655]: https://github.com/launchbadge/sqlx/pull/2655 [#&#8203;2665]: https://github.com/launchbadge/sqlx/pull/2665 [#&#8203;2684]: https://github.com/launchbadge/sqlx/pull/2684 [#&#8203;2688]: https://github.com/launchbadge/sqlx/pull/2688 [#&#8203;2701]: https://github.com/launchbadge/sqlx/pull/2701 [#&#8203;2713]: https://github.com/launchbadge/sqlx/pull/2713 [#&#8203;2752]: https://github.com/launchbadge/sqlx/pull/2752 [#&#8203;2754]: https://github.com/launchbadge/sqlx/pull/2754 [#&#8203;2769]: https://github.com/launchbadge/sqlx/pull/2769 [#&#8203;2770]: https://github.com/launchbadge/sqlx/pull/2770 [#&#8203;2782]: https://github.com/launchbadge/sqlx/pull/2782 [#&#8203;2784]: https://github.com/launchbadge/sqlx/pull/2784 [#&#8203;2793]: https://github.com/launchbadge/sqlx/pull/2793 [#&#8203;2797]: https://github.com/launchbadge/sqlx/pull/2797 [#&#8203;2801]: https://github.com/launchbadge/sqlx/pull/2801 [#&#8203;2803]: https://github.com/launchbadge/sqlx/pull/2803 [#&#8203;2806]: https://github.com/launchbadge/sqlx/pull/2806 [#&#8203;2819]: https://github.com/launchbadge/sqlx/pull/2819 [#&#8203;2820]: https://github.com/launchbadge/sqlx/pull/2820 [#&#8203;2822]: https://github.com/launchbadge/sqlx/pull/2822 [#&#8203;2826]: https://github.com/launchbadge/sqlx/pull/2826 [#&#8203;2827]: https://github.com/launchbadge/sqlx/pull/2827 [#&#8203;2832]: https://github.com/launchbadge/sqlx/pull/2832 [#&#8203;2838]: https://github.com/launchbadge/sqlx/pull/2838 [#&#8203;2847]: https://github.com/launchbadge/sqlx/pull/2847 [#&#8203;2850]: https://github.com/launchbadge/sqlx/pull/2850 [#&#8203;2856]: https://github.com/launchbadge/sqlx/pull/2856 [#&#8203;2864]: https://github.com/launchbadge/sqlx/pull/2864 [#&#8203;2865]: https://github.com/launchbadge/sqlx/pull/2865 [#&#8203;2871]: https://github.com/launchbadge/sqlx/pull/2871 [#&#8203;2873]: https://github.com/launchbadge/sqlx/pull/2873 [#&#8203;2880]: https://github.com/launchbadge/sqlx/pull/2880 [#&#8203;2882]: https://github.com/launchbadge/sqlx/pull/2882 [#&#8203;2890]: https://github.com/launchbadge/sqlx/pull/2890 [#&#8203;2892]: https://github.com/launchbadge/sqlx/pull/2892 [#&#8203;2894]: https://github.com/launchbadge/sqlx/pull/2894 ### [`v0.7.2`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#072---2023-09-25) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.7.1...v0.7.2) 23 pull requests were merged this release cycle. ##### Added - \[[#&#8203;2121]]: Add JSON support to `FromRow` derive \[\[[@&#8203;95ulisse](https://github.com/95ulisse)]] - \[[#&#8203;2533]]: Implement mysql\_clear\_password \[\[[@&#8203;ldanilek](https://github.com/ldanilek)]] - \[[#&#8203;2538]]: cli: add --target-version CLI flags for migrate run/revert \[\[[@&#8203;inahga](https://github.com/inahga)]] - \[[#&#8203;2577]]: supplement Postgres listen example with a small chat example \[\[[@&#8203;JockeM](https://github.com/JockeM)]] - \[[#&#8203;2602]]: Support naming migrations sequentially \[\[[@&#8203;vmax](https://github.com/vmax)]] - \[[#&#8203;2634]]: Adding PgHasArrayType for &\[u8;N] \[\[[@&#8203;snf](https://github.com/snf)]] - \[[#&#8203;2646]]: Support for setting client certificate and key from bytes \[\[[@&#8203;wyhaya](https://github.com/wyhaya)]] - \[[#&#8203;2664]]: Automatically infer migration type \[\[[@&#8203;vmax](https://github.com/vmax)]] - \[[#&#8203;2712]]: Add impl for `Type`, `Decode`, and `Encode` for `Box<str>` and `Box<[u8]>` \[\[[@&#8203;grant0417](https://github.com/grant0417)]] ##### Changed - \[[#&#8203;2650]]: Cleanup format arguments \[\[[@&#8203;nyurik](https://github.com/nyurik)]] - \[[#&#8203;2695]]: remove \&mut PoolConnection from Executor docs \[\[[@&#8203;olback](https://github.com/olback)]] - This impl was removed in 0.7.0 because of coherence issues. - \[[#&#8203;2706]]: Clarify where optional features should be enabled \[\[[@&#8203;kryptan](https://github.com/kryptan)]] - \[[#&#8203;2717]]: Update README.md \[\[[@&#8203;fermanjj](https://github.com/fermanjj)]] - \[[#&#8203;2739]]: Bump mariadb CI images + mysql unpin \[\[[@&#8203;grooverdan](https://github.com/grooverdan)]] - \[[#&#8203;2742]]: Implemented poll\_flush for Box\<S:Socket> \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;2740]]: Remove sealed trait comments from documentation \[\[[@&#8203;bobozaur](https://github.com/bobozaur)]] - \[[#&#8203;2750]]: Fix [#&#8203;2384](https://github.com/launchbadge/sqlx/issues/2384), bump flume to v0.11.0 \[\[[@&#8203;madadam](https://github.com/madadam)]] - \[[#&#8203;2757]]: Remove unused `remove_dir_all` crate from `sqlx-cli`, fixes RUSTSEC-2023-0018 \[\[[@&#8203;aldur](https://github.com/aldur)]] ##### Fixed - \[[#&#8203;2624]]: Documentation typo: BYTE -> BINARY \[\[[@&#8203;sebastianv89](https://github.com/sebastianv89)]] - \[[#&#8203;2628]]: docs: 0.7 is stable in the entire README \[\[[@&#8203;marcusirgens](https://github.com/marcusirgens)]] - \[[#&#8203;2630]]: fix(postgres): fix buffer management in PgCopyIn::read\_from \[\[[@&#8203;tsing](https://github.com/tsing)]] - \[[#&#8203;2651]]: Chore: Fix few build warnings, and make CI fail on warn \[\[[@&#8203;nyurik](https://github.com/nyurik)]] - \[[#&#8203;2670]]: fix: ignore extra fields in Postgres describe parsing \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2687]]: docs: Fix description of `min_connections` \[\[[@&#8203;hakoerber](https://github.com/hakoerber)]] [#&#8203;2121]: https://github.com/launchbadge/sqlx/pull/2121 [#&#8203;2533]: https://github.com/launchbadge/sqlx/pull/2533 [#&#8203;2538]: https://github.com/launchbadge/sqlx/pull/2538 [#&#8203;2577]: https://github.com/launchbadge/sqlx/pull/2577 [#&#8203;2602]: https://github.com/launchbadge/sqlx/pull/2602 [#&#8203;2624]: https://github.com/launchbadge/sqlx/pull/2624 [#&#8203;2628]: https://github.com/launchbadge/sqlx/pull/2628 [#&#8203;2630]: https://github.com/launchbadge/sqlx/pull/2630 [#&#8203;2634]: https://github.com/launchbadge/sqlx/pull/2634 [#&#8203;2646]: https://github.com/launchbadge/sqlx/pull/2646 [#&#8203;2650]: https://github.com/launchbadge/sqlx/pull/2650 [#&#8203;2651]: https://github.com/launchbadge/sqlx/pull/2651 [#&#8203;2664]: https://github.com/launchbadge/sqlx/pull/2664 [#&#8203;2670]: https://github.com/launchbadge/sqlx/pull/2670 [#&#8203;2687]: https://github.com/launchbadge/sqlx/pull/2687 [#&#8203;2695]: https://github.com/launchbadge/sqlx/pull/2695 [#&#8203;2706]: https://github.com/launchbadge/sqlx/pull/2706 [#&#8203;2712]: https://github.com/launchbadge/sqlx/pull/2712 [#&#8203;2717]: https://github.com/launchbadge/sqlx/pull/2717 [#&#8203;2739]: https://github.com/launchbadge/sqlx/pull/2739 [#&#8203;2740]: https://github.com/launchbadge/sqlx/pull/2740 [#&#8203;2742]: https://github.com/launchbadge/sqlx/pull/2742 [#&#8203;2750]: https://github.com/launchbadge/sqlx/pull/2750 [#&#8203;2757]: https://github.com/launchbadge/sqlx/pull/2757 ### [`v0.7.1`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#071---2023-07-14) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.7.0...v0.7.1) This release mainly addresses issues reported with the 0.7.0 release. 16 pull requests were merged this release cycle. ##### Added - \[[#&#8203;2551]]: Introduce build\_query\_scalar for QueryBuilder \[\[[@&#8203;iamquang95](https://github.com/iamquang95)]] - \[[#&#8203;2605]]: Implement Default for QueryBuilder \[\[[@&#8203;Xydez](https://github.com/Xydez)]] - \[[#&#8203;2616]]: feat(sqlx-core): add table function to database error \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;2619]]: feat: allow opt-out of `PgHasArrayType` with `#[derive(sqlx::Type)]` \[\[[@&#8203;abonander](https://github.com/abonander)]] - TL;DR: if you're getting errors from `#[derive(sqlx::Type)]` with `#[sqlx(transparent)]` regarding `PgHasArrayType` not being implemented, add `#[sqlx(no_pg_array)]` to fix. ##### Changed - \[[#&#8203;2566]]: improve docs about migration files \[\[[@&#8203;jnnnnn](https://github.com/jnnnnn)]] - \[[#&#8203;2576]]: Major Version Update clap to 4.0 \[\[[@&#8203;titaniumtraveler](https://github.com/titaniumtraveler)]] - \[[#&#8203;2597]]: Bump webpki-roots to v0.24 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2603]]: docs(changelog): be more verbose about offline mode breaking change \[\[[@&#8203;mrl5](https://github.com/mrl5)]] ##### Fixed - \[[#&#8203;2553]]: Implement `Clone` for `PoolOptions` manually ([#&#8203;2548](https://github.com/launchbadge/sqlx/issues/2548)) \[\[[@&#8203;alilleybrinker](https://github.com/alilleybrinker)]] - \[[#&#8203;2580]]: Update README.md now that 0.7.0 is no longer in alpha \[\[[@&#8203;saolof](https://github.com/saolof)]] - \[[#&#8203;2585]]: Fix for Issue [#&#8203;2549](https://github.com/launchbadge/sqlx/issues/2549) - cannot use feature "rust\_decimal" without also using "bigdecimal" \[\[[@&#8203;deneut](https://github.com/deneut)]] - \[[#&#8203;2586]]: Fix optional dependency on sqlx-macros \[\[[@&#8203;kitterion](https://github.com/kitterion)]] - \[[#&#8203;2593]]: Correct mention of the `tls-native-tls` in the documentation. \[\[[@&#8203;denschub](https://github.com/denschub)]] - \[[#&#8203;2599]]: Remove incorrect CAST in test database cleanup for MySQL. \[\[[@&#8203;fd](https://github.com/fd)]] - \[[#&#8203;2613]]: Fix readme.md to reduce confusion about optional features (decimal->rust\_decimal) \[\[[@&#8203;vabka](https://github.com/vabka)]] - \[[#&#8203;2620]]: fix(sqlite/any): encode bool as integer \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] [#&#8203;2551]: https://github.com/launchbadge/sqlx/pull/2551 [#&#8203;2553]: https://github.com/launchbadge/sqlx/pull/2553 [#&#8203;2566]: https://github.com/launchbadge/sqlx/pull/2566 [#&#8203;2576]: https://github.com/launchbadge/sqlx/pull/2576 [#&#8203;2580]: https://github.com/launchbadge/sqlx/pull/2580 [#&#8203;2585]: https://github.com/launchbadge/sqlx/pull/2585 [#&#8203;2586]: https://github.com/launchbadge/sqlx/pull/2586 [#&#8203;2593]: https://github.com/launchbadge/sqlx/pull/2593 [#&#8203;2597]: https://github.com/launchbadge/sqlx/pull/2597 [#&#8203;2599]: https://github.com/launchbadge/sqlx/pull/2599 [#&#8203;2603]: https://github.com/launchbadge/sqlx/pull/2603 [#&#8203;2605]: https://github.com/launchbadge/sqlx/pull/2605 [#&#8203;2613]: https://github.com/launchbadge/sqlx/pull/2613 [#&#8203;2616]: https://github.com/launchbadge/sqlx/pull/2616 [#&#8203;2619]: https://github.com/launchbadge/sqlx/pull/2619 [#&#8203;2620]: https://github.com/launchbadge/sqlx/pull/2620 ### [`v0.7.0`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#070---2023-06-30) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.6.3...v0.7.0) At least **70 pull requests** were merged this release cycle! (The exact count is muddied with pull requests for alpha releases and such.) And we gained 43 new contributors! Thank you to everyone who helped make this release a reality. ##### Breaking Many revisions were made to query analysis in the SQLite driver; these are all potentially breaking changes as they can change the output of `sqlx::query!()` *et al*. We'd like to thank \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] for their numerous PRs to this area. The MSSQL driver has been removed as it was not nearly at the same maturity level as the other drivers. [As previously announced][sqlx-pro], we have plans to introduce a fully featured replacement as a premium offering, alongside drivers for other proprietary databases, with the goal to support full-time development on SQLx. If interested, please email your inquiry to <sqlx@launchbadge.com>. The offline mode for the queries has been changed to use a separate file per `query!()` invocation, which is intended to reduce the number of conflicts when merging branches in a project that both modified queries. This means that CLI flag `--merged` is no longer supported. See \[[#&#8203;2363]] for details and make sure that your `sqlx-cli` version is in sync with the `sqlx` version in your project. The type ascription override syntax for the query macros has been deprecated, as parse support for it has been removed in `syn 2.0`, which we'll be upgrading to in the next breaking release. This can be replaced with type overrides using casting syntax (`as`). See \[[#&#8203;2483]] for details. - \[[#&#8203;1946]]: Fix compile time verification performance regression for sqlite \[\[[@&#8203;liningpan](https://github.com/liningpan)]] - \[[#&#8203;1960]]: Fix sqlite update return and order by type inference \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - \[[#&#8203;1984]]: Sqlite EXPLAIN type inference improvements \[\[[@&#8203;rongcuid](https://github.com/rongcuid)]] - \[[#&#8203;2039]]: Break drivers out into separate crates, clean up some technical debt \[\[[@&#8203;abonander](https://github.com/abonander)]] - All deprecated items have been removed. - The `mssql` feature and associated database driver has been deleted from the source tree. It will return as part of our planned SQLx Pro offering as a from-scratch rewrite with extra features (such as TLS) and type integrations that were previously missing. - The `runtime-actix-*` features have been deleted. They were previously changed to be aliases of their `runtime-tokio-*` counterparts for backwards compatibility reasons, but their continued existence is misleading as SQLx has no special knowledge of Actix anymore. - To fix, simply replace the `runtime-actix-*` feature with its `runtime-tokio-*` equivalent. - The `git2` feature has been removed. This was a requested integration from a while ago that over time made less and less sense to be part of SQLx itself. We have to be careful with the crates we add to our public API as each one introduces yet another semver hazard. The expected replacement is to make `#[derive(sqlx::Type)]` useful enough that users can write wrapper types for whatever they want to use without SQLx needing to be specifically aware of it. - The `Executor` impls for `Transaction` and `PoolConnection` have been deleted because they cannot exist in the new crate architecture without rewriting the `Executor` trait entirely. - To fix this breakage, simply add a dereference where an `impl Executor` is expected, as they both dereference to the inner connection type which will still implement it: - `&mut transaction` -> `&mut *transaction` - `&mut connection` -> `&mut *connection` - These cannot be blanket impls as it triggers an overflow in the compiler due to the lack of lazy normalization, and the driver crates cannot provide their own impls due to the orphan rule. - We're expecting to do another major refactor of traits to incorporate generic associated types (GAT). This will mean another major release of SQLx but ideally most API usage will not need to change significantly, if at all. - The fields of `Migrator` are now `#[doc(hidden)]` and semver-exempt; they weren't meant to be public. - The `offline` feature has been removed from the `sqlx` facade crate and is enabled unconditionally as most users are expected to have enabled it anyway and disabling it doesn't seem to appreciably affect compile times. - The `decimal` feature has been renamed to `rust_decimal` to match the crate it actually provides integrations for. - `AnyDriver` and `AnyConnection` now require either `sqlx::any::install_drivers()` or `sqlx::any::install_default_drivers()` to be called at some point during the process' lifetime before the first connection is made, as the set of possible drivers is now determined at runtime. This was determined to be the least painful way to provide knowledge of database drivers to `Any` without them being hardcoded. - The `AnyEncode` trait has been removed. - \[[#&#8203;2109]]: feat: better database errors \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;2094]]: Update libsqlite3-sys to 0.25.1 \[\[[@&#8203;penberg](https://github.com/penberg)]] - Alongside this upgrade, we are now considering the linkage to `libsqlite3-sys` to be **semver-exempt**, and we reserve the right to upgrade it as necessary. If you are using `libsqlite3-sys` directly or a crate that links it such as `rusqlite`, you should pin the versions of both crates to avoid breakages from `cargo update`: ```toml [dependencies] sqlx = { version = "=0.7.0", features = ["sqlite"] } rusqlite = "=0.29.0" ``` - \[[#&#8203;2132]]: fix: use owned Builder pattern for ConnectOptions \[\[[@&#8203;ar3s3ru](https://github.com/ar3s3ru)]] - \[[#&#8203;2253]]: Sqlite describe fixes \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - \[[#&#8203;2285]]: `time`: Assume UTC when decoding a DATETIME column in sqlite \[\[[@&#8203;nstinus](https://github.com/nstinus)]] - \[[#&#8203;2363]]: \[offline] Change prepare to one-file-per-query \[\[[@&#8203;cycraig](https://github.com/cycraig)]] - \[[#&#8203;2387]]: PATCH: bump libsqlite3-sys to patched version \[\[[@&#8203;grantkee](https://github.com/grantkee)]] - \[[#&#8203;2409]]: fix([#&#8203;2407](https://github.com/launchbadge/sqlx/issues/2407)): respect the HaltIfNull opcode when determining nullability \[\[[@&#8203;arlyon](https://github.com/arlyon)]] - \[[#&#8203;2459]]: limit the number of instructions that can be evaluated \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - \[[#&#8203;2467]]: Add and improve sqlite describe performance benchmarks \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - \[[#&#8203;2491]]: sqlite date macro support \[\[[@&#8203;Arcayr](https://github.com/Arcayr)]] - Changes `OffsetDateTime` to be the first type used when deserializing a `timestamp` type. - \[[#&#8203;2496]]: Bump to libsqlite3-sys 0.26 \[\[[@&#8203;mdecimus](https://github.com/mdecimus)]] - \[[#&#8203;2508]]: Sqlite analytical \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] ##### Added - \[[#&#8203;1850]]: Add client SSL authentication using key-file for Postgres, MySQL and MariaDB \[\[[@&#8203;ThibsG](https://github.com/ThibsG)]] - \[[#&#8203;2088]]: feat: Add set\_connect\_options method to Pool \[\[[@&#8203;moatra](https://github.com/moatra)]] - \[[#&#8203;2113]]: Expose PoolOptions for reading \[\[[@&#8203;FSMaxB](https://github.com/FSMaxB)]] - \[[#&#8203;2115]]: Allow using complex types in `try_from` when deriving `FromRow` \[\[[@&#8203;95ulisse](https://github.com/95ulisse)]] - \[[#&#8203;2116]]: \[SQLite] Add option to execute `PRAGMA optimize;` on close of a connection \[\[[@&#8203;miles170](https://github.com/miles170)]] - \[[#&#8203;2189]]: Added regexp support in sqlite \[\[[@&#8203;VictorKoenders](https://github.com/VictorKoenders)]] - \[[#&#8203;2224]]: Add From impls for Json \[\[[@&#8203;dbeckwith](https://github.com/dbeckwith)]] - \[[#&#8203;2256]]: add progress handler support to sqlite \[\[[@&#8203;nbaztec](https://github.com/nbaztec)]] - \[[#&#8203;2366]]: Allow ignoring attributes for deriving FromRow \[\[[@&#8203;grgi](https://github.com/grgi)]] - \[[#&#8203;2369]]: new type support in query\_as \[\[[@&#8203;0xdeafbeef](https://github.com/0xdeafbeef)]] - \[[#&#8203;2379]]: feat: add `Connection::shrink_buffers`, `PoolConnection::close` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2400]]: fix(docs): example of `sqlx_macros_unstable` in config.toml \[\[[@&#8203;df51d](https://github.com/df51d)]] - \[[#&#8203;2469]]: Add Simple format for Uuid for MySQL & SQLite. \[\[[@&#8203;MidasLamb](https://github.com/MidasLamb)]] - \[[#&#8203;2483]]: chore: add deprecation notice for type ascription use \[\[[@&#8203;saiintbrisson](https://github.com/saiintbrisson)]] - \[[#&#8203;2506]]: add args to query builder ([#&#8203;2494](https://github.com/launchbadge/sqlx/issues/2494)) \[\[[@&#8203;cemoktra](https://github.com/cemoktra)]] - \[[#&#8203;2554]]: Impl `AsMut` for advisory lock types ([#&#8203;2520](https://github.com/launchbadge/sqlx/issues/2520)) \[\[[@&#8203;alilleybrinker](https://github.com/alilleybrinker)]] - \[[#&#8203;2559]]: Add CLI autocompletion using clap\_complete \[\[[@&#8203;titaniumtraveler](https://github.com/titaniumtraveler)]] ##### Changed - \[[#&#8203;2185]]: Initial work to switch to `tracing` \[\[[@&#8203;CosmicHorrorDev](https://github.com/CosmicHorrorDev)]] - \[[#&#8203;2193]]: Start testing on Postgres 15 and drop Postgres 10 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - We reserve the right to drop support for end-of-lifed database versions [as discussed in our FAQ][faq-db-version]. - \[[#&#8203;2213]]: Use `let else` statements in favor of macro \[\[[@&#8203;OverHash](https://github.com/OverHash)]] - \[[#&#8203;2365]]: Update dependencies \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2371]]: Disable rustls crate logging feature by default up to date \[\[[@&#8203;sergeiivankov](https://github.com/sergeiivankov)]] - \[[#&#8203;2373]]: chore: Use tracing's fields to get structured logs \[\[[@&#8203;jaysonsantos](https://github.com/jaysonsantos)]] - \[[#&#8203;2393]]: Lower default logging level for statements to Debug \[\[[@&#8203;bnoctis](https://github.com/bnoctis)]] - \[[#&#8203;2445]]: Traverse symlinks when resolving migrations \[\[[@&#8203;tgeoghegan](https://github.com/tgeoghegan)]] - \[[#&#8203;2485]]: chore(sqlx-postgres): replace `dirs` with `home` & `etcetera` \[\[[@&#8203;utkarshgupta137](https://github.com/utkarshgupta137)]] - \[[#&#8203;2515]]: Bump mac\_address to 1.1.5 \[\[[@&#8203;repnop](https://github.com/repnop)]] - \[[#&#8203;2440]]: Update rustls to 0.21, webpki-roots to 0.23 \[\[[@&#8203;SergioBenitez](https://github.com/SergioBenitez)]] - \[[#&#8203;2563]]: Update rsa to 0.9 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2564]]: Update bitflags to v2 \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2565]]: Bump indexmap and ahash \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2574]]: doc: make it clear that `ConnectOptions` types impl `FromStr` \[\[[@&#8203;abonander](https://github.com/abonander)]] ##### Fixed - \[[#&#8203;2098]]: Fix sqlite compilation \[\[[@&#8203;cycraig](https://github.com/cycraig)]] - \[[#&#8203;2120]]: fix logical merge conflict \[\[[@&#8203;tyrelr](https://github.com/tyrelr)]] - \[[#&#8203;2133]]: Postgres OID resolution query does not take into account current `search_path` \[\[[@&#8203;95ulisse](https://github.com/95ulisse)]] - \[[#&#8203;2156]]: Fixed typo. \[\[[@&#8203;cdbfoster](https://github.com/cdbfoster)]] - \[[#&#8203;2179]]: fix: ensures recover from fail with PgCopyIn \[\[[@&#8203;andyquinterom](https://github.com/andyquinterom)]] - \[[#&#8203;2200]]: Run CI on \*-dev branch \[\[[@&#8203;joehillen](https://github.com/joehillen)]] - \[[#&#8203;2222]]: Add context to confusing sqlx prepare parse error \[\[[@&#8203;laundmo](https://github.com/laundmo)]] - \[[#&#8203;2271]]: feat: support calling Postgres procedures with the macros \[\[[@&#8203;bgeron](https://github.com/bgeron)]] - \[[#&#8203;2282]]: Don't run EXPLAIN nullability analysis on Materialize \[\[[@&#8203;benesch](https://github.com/benesch)]] - \[[#&#8203;2319]]: Set whoami default-features to false \[\[[@&#8203;thedodd](https://github.com/thedodd)]] - \[[#&#8203;2352]]: Preparing 0.7.0-alpha.1 release \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2355]]: Fixed the example code for `sqlx::test` \[\[[@&#8203;kenkoooo](https://github.com/kenkoooo)]] - \[[#&#8203;2367]]: Fix sqlx-cli create, drop, migrate \[\[[@&#8203;cycraig](https://github.com/cycraig)]] - \[[#&#8203;2376]]: fix(pool): close when last handle is dropped, extra check in `try_acquire` \[\[[@&#8203;abonander](https://github.com/abonander)]] - \[[#&#8203;2378]]: Fix README build badge \[\[[@&#8203;dbrgn](https://github.com/dbrgn)]] - \[[#&#8203;2398]]: fix(prepare): store temporary query files inside the workspace \[\[[@&#8203;aschey](https://github.com/aschey)]] - \[[#&#8203;2402]]: fix: drop old time 0.1.44 dep \[\[[@&#8203;codahale](https://github.com/codahale)]] - \[[#&#8203;2413]]: fix(macros-core): use of undeclared `tracked_path` \[\[[@&#8203;df51d](https://github.com/df51d)]] - \[[#&#8203;2420]]: Enable runtime-tokio feature of sqlx when building sqlx-cli \[\[[@&#8203;paolobarbolini](https://github.com/paolobarbolini)]] - \[[#&#8203;2453]]: in README.md, correct spelling and grammar \[\[[@&#8203;vizvasrj](https://github.com/vizvasrj)]] - \[[#&#8203;2454]]: fix: ensure fresh test db's aren't accidentally deleted by do\_cleanup \[\[[@&#8203;phlip9](https://github.com/phlip9)]] - \[[#&#8203;2507]]: Exposing the Oid of PostgreSQL types \[\[[@&#8203;Razican](https://github.com/Razican)]] - \[[#&#8203;2519]]: Use ::std::result::Result::Ok in output.rs \[\[[@&#8203;southball](https://github.com/southball)]] - \[[#&#8203;2569]]: Fix broken links to mysql error documentation \[\[[@&#8203;titaniumtraveler](https://github.com/titaniumtraveler)]] - \[[#&#8203;2570]]: Add a newline to the generated JSON files \[\[[@&#8203;nyurik](https://github.com/nyurik)]] - \[[#&#8203;2572]]: Do not panic when `PrepareOk` fails to decode \[\[[@&#8203;stepantubanov](https://github.com/stepantubanov)]] - \[[#&#8203;2573]]: fix(sqlite) Do not drop notify mutex guard until after condvar is triggered \[\[[@&#8203;andrewwhitehead](https://github.com/andrewwhitehead)]] [sqlx-pro]: https://github.com/launchbadge/sqlx/discussions/1616 [faq-db-version]: https://github.com/launchbadge/sqlx/blob/main/FAQ.md#what-database-versions-does-sqlx-support [#&#8203;1850]: https://github.com/launchbadge/sqlx/pull/1850 [#&#8203;1946]: https://github.com/launchbadge/sqlx/pull/1946 [#&#8203;1960]: https://github.com/launchbadge/sqlx/pull/1960 [#&#8203;1984]: https://github.com/launchbadge/sqlx/pull/1984 [#&#8203;2039]: https://github.com/launchbadge/sqlx/pull/2039 [#&#8203;2088]: https://github.com/launchbadge/sqlx/pull/2088 [#&#8203;2092]: https://github.com/launchbadge/sqlx/pull/2092 [#&#8203;2094]: https://github.com/launchbadge/sqlx/pull/2094 [#&#8203;2098]: https://github.com/launchbadge/sqlx/pull/2098 [#&#8203;2109]: https://github.com/launchbadge/sqlx/pull/2109 [#&#8203;2113]: https://github.com/launchbadge/sqlx/pull/2113 [#&#8203;2115]: https://github.com/launchbadge/sqlx/pull/2115 [#&#8203;2116]: https://github.com/launchbadge/sqlx/pull/2116 [#&#8203;2120]: https://github.com/launchbadge/sqlx/pull/2120 [#&#8203;2132]: https://github.com/launchbadge/sqlx/pull/2132 [#&#8203;2133]: https://github.com/launchbadge/sqlx/pull/2133 [#&#8203;2156]: https://github.com/launchbadge/sqlx/pull/2156 [#&#8203;2179]: https://github.com/launchbadge/sqlx/pull/2179 [#&#8203;2185]: https://github.com/launchbadge/sqlx/pull/2185 [#&#8203;2189]: https://github.com/launchbadge/sqlx/pull/2189 [#&#8203;2193]: https://github.com/launchbadge/sqlx/pull/2193 [#&#8203;2200]: https://github.com/launchbadge/sqlx/pull/2200 [#&#8203;2213]: https://github.com/launchbadge/sqlx/pull/2213 [#&#8203;2222]: https://github.com/launchbadge/sqlx/pull/2222 [#&#8203;2224]: https://github.com/launchbadge/sqlx/pull/2224 [#&#8203;2253]: https://github.com/launchbadge/sqlx/pull/2253 [#&#8203;2256]: https://github.com/launchbadge/sqlx/pull/2256 [#&#8203;2271]: https://github.com/launchbadge/sqlx/pull/2271 [#&#8203;2282]: https://github.com/launchbadge/sqlx/pull/2282 [#&#8203;2285]: https://github.com/launchbadge/sqlx/pull/2285 [#&#8203;2319]: https://github.com/launchbadge/sqlx/pull/2319 [#&#8203;2352]: https://github.com/launchbadge/sqlx/pull/2352 [#&#8203;2355]: https://github.com/launchbadge/sqlx/pull/2355 [#&#8203;2363]: https://github.com/launchbadge/sqlx/pull/2363 [#&#8203;2365]: https://github.com/launchbadge/sqlx/pull/2365 [#&#8203;2366]: https://github.com/launchbadge/sqlx/pull/2366 [#&#8203;2367]: https://github.com/launchbadge/sqlx/pull/2367 [#&#8203;2369]: https://github.com/launchbadge/sqlx/pull/2369 [#&#8203;2371]: https://github.com/launchbadge/sqlx/pull/2371 [#&#8203;2373]: https://github.com/launchbadge/sqlx/pull/2373 [#&#8203;2376]: https://github.com/launchbadge/sqlx/pull/2376 [#&#8203;2378]: https://github.com/launchbadge/sqlx/pull/2378 [#&#8203;2379]: https://github.com/launchbadge/sqlx/pull/2379 [#&#8203;2387]: https://github.com/launchbadge/sqlx/pull/2387 [#&#8203;2393]: https://github.com/launchbadge/sqlx/pull/2393 [#&#8203;2398]: https://github.com/launchbadge/sqlx/pull/2398 [#&#8203;2400]: https://github.com/launchbadge/sqlx/pull/2400 [#&#8203;2402]: https://github.com/launchbadge/sqlx/pull/2402 [#&#8203;2408]: https://github.com/launchbadge/sqlx/pull/2408 [#&#8203;2409]: https://github.com/launchbadge/sqlx/pull/2409 [#&#8203;2413]: https://github.com/launchbadge/sqlx/pull/2413 [#&#8203;2420]: https://github.com/launchbadge/sqlx/pull/2420 [#&#8203;2440]: https://github.com/launchbadge/sqlx/pull/2440 [#&#8203;2445]: https://github.com/launchbadge/sqlx/pull/2445 [#&#8203;2453]: https://github.com/launchbadge/sqlx/pull/2453 [#&#8203;2454]: https://github.com/launchbadge/sqlx/pull/2454 [#&#8203;2459]: https://github.com/launchbadge/sqlx/pull/2459 [#&#8203;2467]: https://github.com/launchbadge/sqlx/pull/2467 [#&#8203;2469]: https://github.com/launchbadge/sqlx/pull/2469 [#&#8203;2483]: https://github.com/launchbadge/sqlx/pull/2483 [#&#8203;2485]: https://github.com/launchbadge/sqlx/pull/2485 [#&#8203;2491]: https://github.com/launchbadge/sqlx/pull/2491 [#&#8203;2496]: https://github.com/launchbadge/sqlx/pull/2496 [#&#8203;2506]: https://github.com/launchbadge/sqlx/pull/2506 [#&#8203;2507]: https://github.com/launchbadge/sqlx/pull/2507 [#&#8203;2508]: https://github.com/launchbadge/sqlx/pull/2508 [#&#8203;2515]: https://github.com/launchbadge/sqlx/pull/2515 [#&#8203;2519]: https://github.com/launchbadge/sqlx/pull/2519 [#&#8203;2554]: https://github.com/launchbadge/sqlx/pull/2554 [#&#8203;2559]: https://github.com/launchbadge/sqlx/pull/2559 [#&#8203;2563]: https://github.com/launchbadge/sqlx/pull/2563 [#&#8203;2564]: https://github.com/launchbadge/sqlx/pull/2564 [#&#8203;2565]: https://github.com/launchbadge/sqlx/pull/2565 [#&#8203;2569]: https://github.com/launchbadge/sqlx/pull/2569 [#&#8203;2570]: https://github.com/launchbadge/sqlx/pull/2570 [#&#8203;2572]: https://github.com/launchbadge/sqlx/pull/2572 [#&#8203;2573]: https://github.com/launchbadge/sqlx/pull/2573 [#&#8203;2574]: https://github.com/launchbadge/sqlx/pull/2574 ### [`v0.6.3`](https://github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#063---2023-03-21) [Compare Source](https://github.com/launchbadge/sqlx/compare/v0.6.2...v0.6.3) This is a hotfix to address the breakage caused by transitive dependencies upgrading to `syn = "2"`. We set `default-features = false` for our dependency on `syn = "1"` to be good crates.io citizens, but failed to enable the features we actually used, which went undetected because we transitively depended on `syn` with the default features enabled through other crates, and so they were also on for us because features are additive. When those other dependencies upgraded to `syn = "2"` it was no longer enabling those features for us, and so compilation broke for projects that don't also depend on `syn = "1"`, transitively or otherwise. There is no PR for this fix as there was no longer a dedicated development branch for `0.6`, but discussion can be found in [issue #&#8203;2418]. As of this release, the `0.7` release is in alpha and so development is no longer occurring against `0.6`. This fix will be forward-ported to `0.7`. [issue #&#8203;2418]: https://github.com/launchbadge/sqlx/issues/2418 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zODUuMCIsInVwZGF0ZWRJblZlciI6IjQyLjUyLjgiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOlsicmVub3ZhdGUtYm90Il19-->
Author
Member

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package sqlx@0.6.2 --precise 0.9.0
error: failed to parse manifest at `/tmp/renovate-bot-cache/repos/gitea/LibrePages/conductor/Cargo.toml`

Caused by:
  dependency (clap) specified without providing a local path, Git repository, version, or workspace dependency to use

### ⚠️ Artifact update problem Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: Cargo.lock ``` Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package sqlx@0.6.2 --precise 0.9.0 error: failed to parse manifest at `/tmp/renovate-bot-cache/repos/gitea/LibrePages/conductor/Cargo.toml` Caused by: dependency (clap) specified without providing a local path, Git repository, version, or workspace dependency to use ```
renovate-bot force-pushed renovate/sqlx-0.x from 8ef837971c
Some checks failed
renovate/artifacts Artifact file update failure
to 783ac62d7e
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-06-10 19:30:53 +05:30
Compare
renovate-bot changed title from chore(deps): update rust crate sqlx to 0.7.0 to chore(deps): update rust crate sqlx to 0.8.0 2024-07-23 08:00:28 +05:30
renovate-bot force-pushed renovate/sqlx-0.x from 783ac62d7e
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
to 1657644902
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-07-23 08:00:28 +05:30
Compare
renovate-bot force-pushed renovate/sqlx-0.x from 1657644902
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
to ea55e05742
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/pull_request_metadata/woodpecker Pipeline failed
2026-05-25 05:04:31 +05:30
Compare
renovate-bot changed title from chore(deps): update rust crate sqlx to 0.8.0 to chore(deps): update rust crate sqlx to 0.9.0 2026-05-25 05:04:34 +05:30
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/pull_request_metadata/woodpecker Pipeline failed
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/sqlx-0.x:renovate/sqlx-0.x
git switch renovate/sqlx-0.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/sqlx-0.x
git switch renovate/sqlx-0.x
git rebase master
git switch master
git merge --ff-only renovate/sqlx-0.x
git switch renovate/sqlx-0.x
git rebase master
git switch master
git merge --no-ff renovate/sqlx-0.x
git switch master
git merge --squash renovate/sqlx-0.x
git switch master
git merge --ff-only renovate/sqlx-0.x
git switch master
git merge renovate/sqlx-0.x
git push origin master
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
LibrePages/conductor!17
No description provided.