From 24db70ee9fe6981ec896b1bc36310161b8c1fc17 Mon Sep 17 00:00:00 2001 From: etorreborre Date: Tue, 18 Jun 2024 11:28:03 +0200 Subject: [PATCH] use the persistent query setting with the Any driver --- sqlx-core/src/any/connection/backend.rs | 2 ++ sqlx-core/src/any/connection/executor.rs | 4 ++-- sqlx-mysql/src/any.rs | 3 ++- sqlx-postgres/src/any.rs | 4 ++-- sqlx-sqlite/src/any.rs | 6 ++++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/sqlx-core/src/any/connection/backend.rs b/sqlx-core/src/any/connection/backend.rs index 8dff4ba29f..7f051bd41f 100644 --- a/sqlx-core/src/any/connection/backend.rs +++ b/sqlx-core/src/any/connection/backend.rs @@ -72,12 +72,14 @@ pub trait AnyConnectionBackend: std::any::Any + Debug + Send + 'static { fn fetch_many<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxStream<'q, crate::Result>>; fn fetch_optional<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxFuture<'q, crate::Result>>; diff --git a/sqlx-core/src/any/connection/executor.rs b/sqlx-core/src/any/connection/executor.rs index ab023092d4..8d1cb5a1ae 100644 --- a/sqlx-core/src/any/connection/executor.rs +++ b/sqlx-core/src/any/connection/executor.rs @@ -23,7 +23,7 @@ impl<'c> Executor<'c> for &'c mut AnyConnection { Ok(arguments) => arguments, Err(error) => return stream::once(future::ready(Err(error))).boxed(), }; - self.backend.fetch_many(query.sql(), arguments) + self.backend.fetch_many(query.sql(), query.persistent(), arguments) } fn fetch_optional<'e, 'q: 'e, E>( @@ -38,7 +38,7 @@ impl<'c> Executor<'c> for &'c mut AnyConnection { Ok(arguments) => arguments, Err(error) => return future::ready(Err(error)).boxed(), }; - self.backend.fetch_optional(query.sql(), arguments) + self.backend.fetch_optional(query.sql(), query.persistent(), arguments) } fn prepare_with<'e, 'q: 'e>( diff --git a/sqlx-mysql/src/any.rs b/sqlx-mysql/src/any.rs index d8b6b34707..4c6b35e024 100644 --- a/sqlx-mysql/src/any.rs +++ b/sqlx-mysql/src/any.rs @@ -75,6 +75,7 @@ impl AnyConnectionBackend for MySqlConnection { fn fetch_many<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxStream<'q, sqlx_core::Result>> { let persistent = arguments.is_some(); @@ -100,9 +101,9 @@ impl AnyConnectionBackend for MySqlConnection { fn fetch_optional<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxFuture<'q, sqlx_core::Result>> { - let persistent = arguments.is_some(); let arguments = arguments .as_ref() .map(AnyArguments::convert_to) diff --git a/sqlx-postgres/src/any.rs b/sqlx-postgres/src/any.rs index f1424ab6c9..96a5ae0a9f 100644 --- a/sqlx-postgres/src/any.rs +++ b/sqlx-postgres/src/any.rs @@ -74,9 +74,9 @@ impl AnyConnectionBackend for PgConnection { fn fetch_many<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxStream<'q, sqlx_core::Result>> { - let persistent = arguments.is_some(); let arguments = match arguments.as_ref().map(AnyArguments::convert_to).transpose() { Ok(arguments) => arguments, Err(error) => { @@ -99,9 +99,9 @@ impl AnyConnectionBackend for PgConnection { fn fetch_optional<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxFuture<'q, sqlx_core::Result>> { - let persistent = arguments.is_some(); let arguments = arguments .as_ref() .map(AnyArguments::convert_to) diff --git a/sqlx-sqlite/src/any.rs b/sqlx-sqlite/src/any.rs index ea0f320e22..7435168dee 100644 --- a/sqlx-sqlite/src/any.rs +++ b/sqlx-sqlite/src/any.rs @@ -75,10 +75,11 @@ impl AnyConnectionBackend for SqliteConnection { fn fetch_many<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxStream<'q, sqlx_core::Result>> { - let persistent = arguments.is_some(); let args = arguments.map(map_arguments); + let persistent = persistent && args.is_some(); Box::pin( self.worker @@ -97,10 +98,11 @@ impl AnyConnectionBackend for SqliteConnection { fn fetch_optional<'q>( &'q mut self, query: &'q str, + persistent: bool, arguments: Option>, ) -> BoxFuture<'q, sqlx_core::Result>> { - let persistent = arguments.is_some(); let args = arguments.map(map_arguments); + let persistent = persistent && args.is_some(); Box::pin(async move { let stream = self