From 447ac4a350df5549977617129357439714248d67 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 | 6 ++++-- sqlx-mysql/src/any.rs | 6 ++++-- sqlx-postgres/src/any.rs | 6 ++++-- sqlx-sqlite/src/any.rs | 6 ++++-- 5 files changed, 18 insertions(+), 8 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..ccf6dd7933 100644 --- a/sqlx-core/src/any/connection/executor.rs +++ b/sqlx-core/src/any/connection/executor.rs @@ -23,7 +23,8 @@ 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 +39,8 @@ 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..fa8d34f8db 100644 --- a/sqlx-mysql/src/any.rs +++ b/sqlx-mysql/src/any.rs @@ -75,9 +75,10 @@ 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(); + let persistent = persistent && arguments.is_some(); let arguments = match arguments.as_ref().map(AnyArguments::convert_to).transpose() { Ok(arguments) => arguments, Err(error) => { @@ -100,9 +101,10 @@ 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 persistent = 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 2419551821..7eae4bcb73 100644 --- a/sqlx-postgres/src/any.rs +++ b/sqlx-postgres/src/any.rs @@ -74,9 +74,10 @@ 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 persistent = persistent && arguments.is_some(); let arguments = match arguments.as_ref().map(AnyArguments::convert_to).transpose() { Ok(arguments) => arguments, Err(error) => { @@ -99,9 +100,10 @@ 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 persistent = 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 d878aaee70..5e422655bf 100644 --- a/sqlx-sqlite/src/any.rs +++ b/sqlx-sqlite/src/any.rs @@ -75,9 +75,10 @@ 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 persistent = persistent && arguments.is_some(); let args = arguments.map(map_arguments); Box::pin( @@ -97,9 +98,10 @@ 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 persistent = persistent && arguments.is_some(); let args = arguments.map(map_arguments); Box::pin(async move {