Skip to content

Commit

Permalink
use the persistent query setting with the Any driver
Browse files Browse the repository at this point in the history
  • Loading branch information
etorreborre committed Jun 18, 2024
1 parent 402022d commit 24db70e
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 7 deletions.
2 changes: 2 additions & 0 deletions sqlx-core/src/any/connection/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<AnyArguments<'q>>,
) -> BoxStream<'q, crate::Result<Either<AnyQueryResult, AnyRow>>>;

fn fetch_optional<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxFuture<'q, crate::Result<Option<AnyRow>>>;

Expand Down
4 changes: 2 additions & 2 deletions sqlx-core/src/any/connection/executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>(
Expand All @@ -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>(
Expand Down
3 changes: 2 additions & 1 deletion sqlx-mysql/src/any.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ impl AnyConnectionBackend for MySqlConnection {
fn fetch_many<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxStream<'q, sqlx_core::Result<Either<AnyQueryResult, AnyRow>>> {
let persistent = arguments.is_some();
Expand All @@ -100,9 +101,9 @@ impl AnyConnectionBackend for MySqlConnection {
fn fetch_optional<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxFuture<'q, sqlx_core::Result<Option<AnyRow>>> {
let persistent = arguments.is_some();
let arguments = arguments
.as_ref()
.map(AnyArguments::convert_to)
Expand Down
4 changes: 2 additions & 2 deletions sqlx-postgres/src/any.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ impl AnyConnectionBackend for PgConnection {
fn fetch_many<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxStream<'q, sqlx_core::Result<Either<AnyQueryResult, AnyRow>>> {
let persistent = arguments.is_some();
let arguments = match arguments.as_ref().map(AnyArguments::convert_to).transpose() {
Ok(arguments) => arguments,
Err(error) => {
Expand All @@ -99,9 +99,9 @@ impl AnyConnectionBackend for PgConnection {
fn fetch_optional<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxFuture<'q, sqlx_core::Result<Option<AnyRow>>> {
let persistent = arguments.is_some();
let arguments = arguments
.as_ref()
.map(AnyArguments::convert_to)
Expand Down
6 changes: 4 additions & 2 deletions sqlx-sqlite/src/any.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,11 @@ impl AnyConnectionBackend for SqliteConnection {
fn fetch_many<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxStream<'q, sqlx_core::Result<Either<AnyQueryResult, AnyRow>>> {
let persistent = arguments.is_some();
let args = arguments.map(map_arguments);
let persistent = persistent && args.is_some();

Box::pin(
self.worker
Expand All @@ -97,10 +98,11 @@ impl AnyConnectionBackend for SqliteConnection {
fn fetch_optional<'q>(
&'q mut self,
query: &'q str,
persistent: bool,
arguments: Option<AnyArguments<'q>>,
) -> BoxFuture<'q, sqlx_core::Result<Option<AnyRow>>> {
let persistent = arguments.is_some();
let args = arguments.map(map_arguments);
let persistent = persistent && args.is_some();

Box::pin(async move {
let stream = self
Expand Down

0 comments on commit 24db70e

Please sign in to comment.