From 76ae2865005cc79d56972d68d3be30805581103d Mon Sep 17 00:00:00 2001 From: Austin Bonander Date: Tue, 20 Sep 2022 14:10:52 -0700 Subject: [PATCH 1/2] CHANGELOG: mention that users should upgrade CLI --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98382a5175..0c37be3155 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * [[#2057]]: Make begin,commit,rollback cancel-safe in sqlite [[@madadam]] * [[#2058]]: fix typo in documentation [[@lovasoa]] * [[#2067]]: fix(docs): close code block in query_builder.rs [[@abonander]] -* [[#2069]]: Fix `prepare` race condition in workspaces [[@cycraig]] +* [[#2069]]: Fix `prepare` race condition in workspaces [[@cycraig]]\ + * NOTE: this changes the directory structure under `target/` that `cargo sqlx prepare` depends on. + If you use offline mode in your workflow, please rerun `cargo install sqlx-cli` to upgrade. * [[#2072]]: SqliteConnectOptions typo [[@fasterthanlime]] * [[#2074]]: fix: mssql uses unsigned for tinyint instead of signed [[@he4d]] * [[#2081]]: close unnamed portal after each executed extended query [[@DXist]] From 4f0c70d827967d1128e61b61e5b1691b29e09017 Mon Sep 17 00:00:00 2001 From: Danilo Cianfrone Date: Sun, 2 Oct 2022 16:54:35 +0200 Subject: [PATCH 2/2] fix(sqlx-core): use owned builder pattern for ConnectOptions --- sqlx-core/src/any/options.rs | 30 +++++++++++------------ sqlx-core/src/connection.rs | 6 ++--- sqlx-core/src/mssql/options/connect.rs | 4 +-- sqlx-core/src/mysql/options/connect.rs | 4 +-- sqlx-core/src/postgres/options/connect.rs | 4 +-- sqlx-core/src/sqlite/options/connect.rs | 4 +-- 6 files changed, 25 insertions(+), 27 deletions(-) diff --git a/sqlx-core/src/any/options.rs b/sqlx-core/src/any/options.rs index 3e81198b1b..5e5ae4b0b1 100644 --- a/sqlx-core/src/any/options.rs +++ b/sqlx-core/src/any/options.rs @@ -184,53 +184,51 @@ impl ConnectOptions for AnyConnectOptions { Box::pin(AnyConnection::establish(self)) } - fn log_statements(&mut self, level: LevelFilter) -> &mut Self { - match &mut self.0 { + fn log_statements(self, level: LevelFilter) -> Self { + Self(match self.0 { #[cfg(feature = "postgres")] AnyConnectOptionsKind::Postgres(o) => { - o.log_statements(level); + AnyConnectOptionsKind::Postgres(o.log_statements(level)) } #[cfg(feature = "mysql")] AnyConnectOptionsKind::MySql(o) => { - o.log_statements(level); + AnyConnectOptionsKind::MySql(o.log_statements(level)) } #[cfg(feature = "sqlite")] AnyConnectOptionsKind::Sqlite(o) => { - o.log_statements(level); + AnyConnectOptionsKind::Sqlite(o.log_statements(level)) } #[cfg(feature = "mssql")] AnyConnectOptionsKind::Mssql(o) => { - o.log_statements(level); + AnyConnectOptionsKind::Mssql(o.log_statements(level)) } - }; - self + }) } - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self { - match &mut self.0 { + fn log_slow_statements(self, level: LevelFilter, duration: Duration) -> Self { + Self(match self.0 { #[cfg(feature = "postgres")] AnyConnectOptionsKind::Postgres(o) => { - o.log_slow_statements(level, duration); + AnyConnectOptionsKind::Postgres(o.log_slow_statements(level, duration)) } #[cfg(feature = "mysql")] AnyConnectOptionsKind::MySql(o) => { - o.log_slow_statements(level, duration); + AnyConnectOptionsKind::MySql(o.log_slow_statements(level, duration)) } #[cfg(feature = "sqlite")] AnyConnectOptionsKind::Sqlite(o) => { - o.log_slow_statements(level, duration); + AnyConnectOptionsKind::Sqlite(o.log_slow_statements(level, duration)) } #[cfg(feature = "mssql")] AnyConnectOptionsKind::Mssql(o) => { - o.log_slow_statements(level, duration); + AnyConnectOptionsKind::Mssql(o.log_slow_statements(level, duration)) } - }; - self + }) } } diff --git a/sqlx-core/src/connection.rs b/sqlx-core/src/connection.rs index 80469ea3e5..613c0c8404 100644 --- a/sqlx-core/src/connection.rs +++ b/sqlx-core/src/connection.rs @@ -167,14 +167,14 @@ pub trait ConnectOptions: 'static + Send + Sync + FromStr + Debug + Self::Connection: Sized; /// Log executed statements with the specified `level` - fn log_statements(&mut self, level: LevelFilter) -> &mut Self; + fn log_statements(self, level: LevelFilter) -> Self; /// Log executed statements with a duration above the specified `duration` /// at the specified `level`. - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self; + fn log_slow_statements(self, level: LevelFilter, duration: Duration) -> Self; /// Entirely disables statement logging (both slow and regular). - fn disable_statement_logging(&mut self) -> &mut Self { + fn disable_statement_logging(self) -> Self { self.log_statements(LevelFilter::Off) .log_slow_statements(LevelFilter::Off, Duration::default()) } diff --git a/sqlx-core/src/mssql/options/connect.rs b/sqlx-core/src/mssql/options/connect.rs index 991a8b86e0..ae957d7845 100644 --- a/sqlx-core/src/mssql/options/connect.rs +++ b/sqlx-core/src/mssql/options/connect.rs @@ -15,12 +15,12 @@ impl ConnectOptions for MssqlConnectOptions { Box::pin(MssqlConnection::establish(self)) } - fn log_statements(&mut self, level: LevelFilter) -> &mut Self { + fn log_statements(mut self, level: LevelFilter) -> Self { self.log_settings.log_statements(level); self } - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self { + fn log_slow_statements(mut self, level: LevelFilter, duration: Duration) -> Self { self.log_settings.log_slow_statements(level, duration); self } diff --git a/sqlx-core/src/mysql/options/connect.rs b/sqlx-core/src/mysql/options/connect.rs index fd59dbbdf1..fb491765f8 100644 --- a/sqlx-core/src/mysql/options/connect.rs +++ b/sqlx-core/src/mysql/options/connect.rs @@ -62,12 +62,12 @@ impl ConnectOptions for MySqlConnectOptions { }) } - fn log_statements(&mut self, level: LevelFilter) -> &mut Self { + fn log_statements(mut self, level: LevelFilter) -> Self { self.log_settings.log_statements(level); self } - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self { + fn log_slow_statements(mut self, level: LevelFilter, duration: Duration) -> Self { self.log_settings.log_slow_statements(level, duration); self } diff --git a/sqlx-core/src/postgres/options/connect.rs b/sqlx-core/src/postgres/options/connect.rs index 5c98598dd6..dea303ff3e 100644 --- a/sqlx-core/src/postgres/options/connect.rs +++ b/sqlx-core/src/postgres/options/connect.rs @@ -15,12 +15,12 @@ impl ConnectOptions for PgConnectOptions { Box::pin(PgConnection::establish(self)) } - fn log_statements(&mut self, level: LevelFilter) -> &mut Self { + fn log_statements(mut self, level: LevelFilter) -> Self { self.log_settings.log_statements(level); self } - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self { + fn log_slow_statements(mut self, level: LevelFilter, duration: Duration) -> Self { self.log_settings.log_slow_statements(level, duration); self } diff --git a/sqlx-core/src/sqlite/options/connect.rs b/sqlx-core/src/sqlite/options/connect.rs index 21a61a00ad..249b8d5292 100644 --- a/sqlx-core/src/sqlite/options/connect.rs +++ b/sqlx-core/src/sqlite/options/connect.rs @@ -32,12 +32,12 @@ impl ConnectOptions for SqliteConnectOptions { }) } - fn log_statements(&mut self, level: LevelFilter) -> &mut Self { + fn log_statements(mut self, level: LevelFilter) -> Self { self.log_settings.log_statements(level); self } - fn log_slow_statements(&mut self, level: LevelFilter, duration: Duration) -> &mut Self { + fn log_slow_statements(mut self, level: LevelFilter, duration: Duration) -> Self { self.log_settings.log_slow_statements(level, duration); self }