Skip to content

Commit 75bc048

Browse files
authored
Release 0.9.0 (#4256)
* refactor: un-track `Cargo.lock` * chore: prepare release `0.9.0` * chore: update `rand`, crypto crates * chore: update `rand`, crypto crates (2) * chore: revert `-Z direct-minimal-versions` For context: #4173 (comment) * chore: fix new clippy warnings * fix: compiler errors in tests/sqlite * fix: compiler errors in tests/postgres * fix: errors in `axum-social-with-tests` * fix: errors in Postgres examples, update `examples/x.py` * fix(sqlite): don't panic if `call_with_result` didn't set an error message * chore: update CHANGELOG for 0.9.0 * chore: upgrade `etcetera` to `0.11.0` * chore: document release PR changes * chore: document `Executor` methods not for general use * chore: update copyright
1 parent 6956cef commit 75bc048

53 files changed

Lines changed: 410 additions & 5370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/sqlx.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ jobs:
7777
run: |
7878
rustup show active-toolchain || rustup toolchain install
7979
rustup toolchain install nightly
80-
- run: cargo +nightly generate-lockfile -Z direct-minimal-versions
80+
- run: cargo +nightly generate-lockfile -Z minimal-versions
8181
- run: cargo build --all-features
8282

8383
test:

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ ipaddr.so
2020

2121
# Temporary files from running the tests locally like they would be run from CI
2222
.sqlx
23+
24+
# Checking-in a `Cargo.lock` is not that helpful for a published package:
25+
# * Requires manual `cargo update` frequently to test with new versions
26+
# * `cargo install sqlx-cli` uses latest deps anyways unless `--locked` is passed
27+
# * Libraries don't really need reproducible builds
28+
# * Should also check with `-Z direct-minimal-versions` (which our CI does)
29+
# * PRs which add/remove/update deps cause churn which results in annyoing merge conflicts
30+
Cargo.lock

CHANGELOG.md

Lines changed: 155 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,35 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## 0.9.0-alpha.1 - 2025-10-14
8+
## 0.9.0 - 2026-05-06
99

10-
Accumulated changes since the beginning of the alpha cycle. Effectively a draft CHANGELOG for the 0.9.0 release.
10+
### Important Announcements
1111

12-
This section will be replaced in subsequent alpha releases. See the Git history of this file for previous alphas.
12+
#### New Github Organization
13+
Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization:
14+
https://github.com/transact-rs/
15+
16+
This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been
17+
informally transferred to the collective ownership of its principal authors. Moving the repository to a new
18+
organization makes this change more clear, and also allows for potentially inviting outside collaborators.
19+
20+
#### `Cargo.lock` Removed from Tracking
21+
The `Cargo.lock` has been removed from tracking in Git. CI should now always test with the latest versions of
22+
all dependencies by default, alongside our pass that checks with `cargo generate-lockfile -Z minimal-versions`.
23+
24+
This should eliminate the need for any PRs that update dependencies to also update `Cargo.lock` or
25+
contend with an endless stream of merge conflicts against it.
26+
27+
**N.B.** `cargo install --locked sqlx-cli` will no longer work. However, `cargo install sqlx-cli` has _always_
28+
used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users
29+
requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran `cargo update`
30+
sporadically, so relying on SQLx's lockfile offered few guarantees anyway.
31+
32+
See [the manual page for `cargo install`][man-cargo-install] for details.
1333

1434
### Breaking
35+
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).
36+
1537

1638
* [[#3383]]: feat: create `sqlx.toml` format [[@abonander]]
1739
* SQLx and `sqlx-cli` now support per-crate configuration files (`sqlx.toml`)
@@ -104,9 +126,18 @@ This section will be replaced in subsequent alpha releases. See the Git history
104126
* [[#3957]]: refactor(sqlite): do not borrow bound values, delete lifetime on `SqliteArguments` [[@iamjpotts]]
105127
* [[#3958]]: refactor(any): Remove lifetime parameter from AnyArguments [[@iamjpotts]]
106128
* [[#3960]]: refactor(core): Remove lifetime parameter from Arguments trait [[@iamjpotts]]
129+
* [[#3993]]: Unescape PostgreSQL passfile password [[@V02460]]
130+
* Previously, `.pgpass` file handling did not process backslash-escapes in the password part.
131+
Now it does, which may change what password is sent to the server.
107132
* [[#4008]]: make `#[derive(sqlx::Type)]` automatically generate `impl PgHasArrayType` by default for newtype structs [[@papaj-na-wrotkach]]
108133
* Manual implementations of PgHasArrayType for newtypes will conflict with the generated one.
109134
Delete the manual impl or add `#[sqlx(no_pg_array)]` where conflicts occur.
135+
* [[#4077]]: breaking: make `offline` optional to allow building without `serde` [[@CathalMullan]]
136+
* [[#4094]]: Bump bit-vec to v0.8 [[@zennozenith]]
137+
* [[#4142]]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth [[@dertin]]
138+
* Connections requiring RSA password encryption now need to enable the `mysql-rsa` feature
139+
or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections.
140+
* [[#4255]]: breaking(any+mysql): correctly convert text and blob types to `AnyTypeInfo` [[@abonander]]
110141

111142
### Added
112143
* [[#3641]]: feat(Postgres): support nested domain types [[@joeydewaal]]
@@ -122,6 +153,14 @@ This section will be replaced in subsequent alpha releases. See the Git history
122153
* [[#3971]]: Allow single-field named structs to be transparent [[@Xiretza]]
123154
* [[#4015]]: feat(sqlite): `no_tx` migration support [[@AlexTMjugador]]
124155
* [[#4020]]: Add `Migrator::with_migrations()` constructor [[@xb284524239]]
156+
* [[#3846]]: Add the possibility to skip migrations [[@Dosenpfand]]
157+
* [[#4107]]: Add SQLite extension entrypoint config to `sqlx.toml`, update SQLite extension example [[@supleed2]]
158+
* [[#4118]]: [postgres] Display line number in error message [[@mousetail]]
159+
* [[#4123]]: feat: add `Json::into_inner()` [[@chrxn1c]]
160+
* [[#4153]]: Add on unimplemented diagnostic to `SqlStr` [[@joeydewaal]]
161+
* [[#4167]]: add sqlite serialize/deserialize example [[@mattrighetti]]
162+
* [[#4228]]: sqlx-postgres: Make `PgNotification` struct clone [[@michaelvanstraten]]
163+
125164

126165
### Changed
127166
* [[#3525]]: Remove unnecessary boxfutures [[@joeydewaal]]
@@ -135,6 +174,24 @@ This section will be replaced in subsequent alpha releases. See the Git history
135174
* [[#3968]]: chore(ci): Add timeouts to ci jobs [[@iamjpotts]]
136175
* [[#4002]]: sqlx-postgres(tests): cleanup 2 unit tests. [[@joeydewaal]]
137176
* [[#4022]]: refactor: tweaks after #3791 [[@abonander]]
177+
* [[#4257]]: Prefer to give real data to `.bind()` in `README.md` [[@sobolevn]]
178+
* [[#4042]]: Update to webpki-roots 1 [[@tottoto]]
179+
* [[#4072]]: chore: update hashlink to v0.11.0 [[@anmolitor]]
180+
* [[#4143]]: Bump whoami to v2 [[@tisonkun]]
181+
* [[#4161]]: sqlx-sqlite: relax libsqlite3-sys constraint to allow 0.36.x [[@darioAnongba]]
182+
* [[#4173]]: ci: check direct minimal versions [[@ricochet]]
183+
* Note: reverted in 0.9.0 release but still listed for contributor credit. See end of PR thread for details.
184+
* [[#4189]]: Bump flume to 0.12.0 [[@opoplawski]]
185+
* [[#4223]]: test(sqlite): add regression test for ORDER BY + LIMIT nullability (#4147) [[@barry3406]]
186+
* [[#4230]]: chore: Update to cargo_metadata 0.23 [[@tottoto]]
187+
* [[#4233]]: Change reference to dotenvy [[@graemer957]]
188+
* [[#4235]]: chore: Update to validator 0.20 [[@tottoto]]
189+
* [[#4253]]: chore: update example to axum 0.8 [[@tottoto]]
190+
* Release PR:
191+
* Upgraded all Rust-Crypto crates, `rand`
192+
* Upgraded `etcetera` to `0.11.0`
193+
* Increased max of `libsqlite3-sys` version range to `<0.38.0`
194+
138195

139196
### Fixed
140197
* [[#3840]]: Fix docs.rs build of sqlx-sqlite [[@gferon]]
@@ -169,10 +226,34 @@ This section will be replaced in subsequent alpha releases. See the Git history
169226
* [[#4053]]: fix(macros): smarter `.env` loading, caching, and invalidation [[@abonander]]
170227
* Additional credit to [[@AlexTMjugador]] ([[#4018]]) and [[@Diggsey]] ([[#4039]]) for their proposed solutions
171228
which served as a useful comparison.
229+
* [[#4068]]: Fix typo in migration example from 'uesrs' to 'users' [[@squidpickles]]
230+
* [[#4069]]: fix some spelling issues [[@joeydewaal]]
231+
* [[#4086]]: fix(mysql): Work around for Issue #2206 (ColumnNotFound error when querying) [[@duelafn]]
232+
* [[#4088]]: (Fix) Handle nullability of SQLite rowid alias columns [[@Lege19]]
233+
* [[#4100]]: postgres: update pgpass path on windows [[@joeydewaal]]
234+
* [[#4134]]: fix CI: replace removed macOS runner, deprecated use of `Command::cargo_bin()` [[@abonander]]
235+
* [[#4136]]: Ensure Deterministic Migration Order [[@aoengin]]
236+
* [[#4158]]: Fix panic in JSONB decoder on invalid version byte [[@jrey8343]]
237+
* [[#4165]]: sqlx-postgres: fix correct operator precedence in byte length check [[@cuiweixie]]
238+
* [[#4171]]: fix(postgres): remove home crate in favor of std::env::home_dir [[@ricochet]]
239+
* [[#4172]]: fix(sqlx-cli): bump openssl minimum to 0.10.46 [[@ricochet]]
240+
* [[#4176]]: fix(mysql): return error instead of panic on truncated OK packet [[@cvzx]]
241+
* [[#4199]]: fix(postgres): make advisory lock cancel safe [[@joeydewaal]]
242+
* [[#4201]]: Fix SCRAM password `SASLprep` [[@var4yn]]
243+
* [[#4202]]: fix: replace from_utf8_unchecked with from_utf8_lossy in SqliteError [[@joaquinhuigomez]]
244+
* [[#4203]]: fix: use sqlite3_value_text for REGEXP to match SQLite coercion [[@joaquinhuigomez]]
245+
* [[#4219]]: sqlite: lossily coerce invalid UTF-8 in custom collation callback [[@joaquinhuigomez]]
246+
* [[#4221]]: fix: replace `from_utf8_unchecked` with `from_utf8` in SQLite column name handling [[@barry3406]]
247+
* [[#4226]]: fix(postgres): use non-prepared statements for metadata queries [[@abonander]]
248+
* [[#4227]]: fix(macros-core): update unstable proc_macro APIs for recent nightly [[@barry3406]]
249+
* [[#4234]]: fix: Use correct path in error when failing to create tmp dir in prepare [[@Miesvanderlippe]]
250+
* [[#4245]]: fix(mysql): repair caching_sha2_password fast-auth path [[@altmannmarcelo]]
251+
* [[#4251]]: fix(tls): potential deadlock in `StdSocket::poll_ready()` [[@abonander]]
172252

173253
[seaorm-2600]: https://github.com/SeaQL/sea-orm/issues/2600
174254
[feature unification]: https://doc.rust-lang.org/cargo/reference/features.html#feature-unification
175255
[preferred-crates]: examples/postgres/preferred-crates
256+
[man-cargo-install]: https://doc.rust-lang.org/cargo/commands/cargo-install.html#dealing-with-the-lockfile
176257

177258
[#3821]: https://github.com/launchbadge/sqlx/pull/3821
178259
[#3383]: https://github.com/launchbadge/sqlx/pull/3383
@@ -248,6 +329,53 @@ This section will be replaced in subsequent alpha releases. See the Git history
248329
[#4027]: https://github.com/launchbadge/sqlx/pull/4027
249330
[#4039]: https://github.com/launchbadge/sqlx/pull/4039
250331
[#4053]: https://github.com/launchbadge/sqlx/pull/4053
332+
[#3846]: https://github.com/launchbadge/sqlx/pull/3846
333+
[#3993]: https://github.com/launchbadge/sqlx/pull/3993
334+
[#4042]: https://github.com/launchbadge/sqlx/pull/4042
335+
[#4068]: https://github.com/launchbadge/sqlx/pull/4068
336+
[#4069]: https://github.com/launchbadge/sqlx/pull/4069
337+
[#4072]: https://github.com/launchbadge/sqlx/pull/4072
338+
[#4077]: https://github.com/launchbadge/sqlx/pull/4077
339+
[#4086]: https://github.com/launchbadge/sqlx/pull/4086
340+
[#4088]: https://github.com/launchbadge/sqlx/pull/4088
341+
[#4094]: https://github.com/launchbadge/sqlx/pull/4094
342+
[#4100]: https://github.com/launchbadge/sqlx/pull/4100
343+
[#4107]: https://github.com/launchbadge/sqlx/pull/4107
344+
[#4118]: https://github.com/launchbadge/sqlx/pull/4118
345+
[#4123]: https://github.com/launchbadge/sqlx/pull/4123
346+
[#4134]: https://github.com/launchbadge/sqlx/pull/4134
347+
[#4136]: https://github.com/launchbadge/sqlx/pull/4136
348+
[#4142]: https://github.com/launchbadge/sqlx/pull/4142
349+
[#4143]: https://github.com/launchbadge/sqlx/pull/4143
350+
[#4153]: https://github.com/launchbadge/sqlx/pull/4153
351+
[#4158]: https://github.com/launchbadge/sqlx/pull/4158
352+
[#4161]: https://github.com/launchbadge/sqlx/pull/4161
353+
[#4165]: https://github.com/launchbadge/sqlx/pull/4165
354+
[#4167]: https://github.com/launchbadge/sqlx/pull/4167
355+
[#4171]: https://github.com/launchbadge/sqlx/pull/4171
356+
[#4172]: https://github.com/launchbadge/sqlx/pull/4172
357+
[#4173]: https://github.com/launchbadge/sqlx/pull/4173
358+
[#4176]: https://github.com/launchbadge/sqlx/pull/4176
359+
[#4189]: https://github.com/launchbadge/sqlx/pull/4189
360+
[#4199]: https://github.com/launchbadge/sqlx/pull/4199
361+
[#4201]: https://github.com/launchbadge/sqlx/pull/4201
362+
[#4202]: https://github.com/launchbadge/sqlx/pull/4202
363+
[#4203]: https://github.com/launchbadge/sqlx/pull/4203
364+
[#4219]: https://github.com/launchbadge/sqlx/pull/4219
365+
[#4221]: https://github.com/launchbadge/sqlx/pull/4221
366+
[#4223]: https://github.com/launchbadge/sqlx/pull/4223
367+
[#4226]: https://github.com/launchbadge/sqlx/pull/4226
368+
[#4227]: https://github.com/launchbadge/sqlx/pull/4227
369+
[#4228]: https://github.com/launchbadge/sqlx/pull/4228
370+
[#4230]: https://github.com/launchbadge/sqlx/pull/4230
371+
[#4233]: https://github.com/launchbadge/sqlx/pull/4233
372+
[#4234]: https://github.com/launchbadge/sqlx/pull/4234
373+
[#4235]: https://github.com/launchbadge/sqlx/pull/4235
374+
[#4245]: https://github.com/launchbadge/sqlx/pull/4245
375+
[#4251]: https://github.com/launchbadge/sqlx/pull/4251
376+
[#4253]: https://github.com/launchbadge/sqlx/pull/4253
377+
[#4255]: https://github.com/launchbadge/sqlx/pull/4255
378+
[#4257]: https://github.com/launchbadge/sqlx/pull/4257
251379

252380
## 0.8.6 - 2025-05-19
253381

@@ -3175,3 +3303,27 @@ Fix docs.rs build by enabling a runtime feature in the docs.rs metadata in `Carg
31753303
[@xb284524239]: https://github.com/xb284524239
31763304
[@Dosenpfand]: https://github.com/Dosenpfand
31773305
[@daviduebler]: https://github.com/daviduebler
3306+
[@squidpickles]: https://github.com/squidpickles
3307+
[@anmolitor]: https://github.com/anmolitor
3308+
[@CathalMullan]: https://github.com/CathalMullan
3309+
[@duelafn]: https://github.com/duelafn
3310+
[@Lege19]: https://github.com/Lege19
3311+
[@zennozenith]: https://github.com/zennozenith
3312+
[@supleed2]: https://github.com/supleed2
3313+
[@mousetail]: https://github.com/mousetail
3314+
[@chrxn1c]: https://github.com/chrxn1c
3315+
[@aoengin]: https://github.com/aoengin
3316+
[@dertin]: https://github.com/dertin
3317+
[@jrey8343]: https://github.com/jrey8343
3318+
[@darioAnongba]: https://github.com/darioAnongba
3319+
[@cuiweixie]: https://github.com/cuiweixie
3320+
[@ricochet]: https://github.com/ricochet
3321+
[@opoplawski]: https://github.com/opoplawski
3322+
[@var4yn]: https://github.com/var4yn
3323+
[@joaquinhuigomez]: https://github.com/joaquinhuigomez
3324+
[@barry3406]: https://github.com/barry3406
3325+
[@michaelvanstraten]: https://github.com/michaelvanstraten
3326+
[@graemer957]: https://github.com/graemer957
3327+
[@Miesvanderlippe]: https://github.com/Miesvanderlippe
3328+
[@altmannmarcelo]: https://github.com/altmannmarcelo
3329+
[@sobolevn]: https://github.com/sobolevn

0 commit comments

Comments
 (0)