Skip to content

Commit 694682d

Browse files
committed
Reduce the amount of SqlStr clones
1 parent db51756 commit 694682d

File tree

9 files changed

+35
-23
lines changed

9 files changed

+35
-23
lines changed

sqlx-core/src/any/statement.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ impl Statement for AnyStatement {
3232
}
3333
}
3434

35-
fn sql(&self) -> SqlStr {
35+
fn sql_cloned(&self) -> SqlStr {
3636
self.sql.clone()
3737
}
3838

39+
fn into_sql(self) -> SqlStr {
40+
self.sql
41+
}
42+
3943
fn parameters(&self) -> Option<Either<&[AnyTypeInfo], usize>> {
4044
match &self.parameters {
4145
Some(Either::Left(types)) => Some(Either::Left(types)),
@@ -64,8 +68,7 @@ impl<'i> ColumnIndex<AnyStatement> for &'i str {
6468
impl<'q> AnyStatement {
6569
#[doc(hidden)]
6670
pub fn try_from_statement<S>(
67-
query: SqlStr,
68-
statement: &S,
71+
statement: S,
6972
column_names: Arc<HashMap<UStr, usize>>,
7073
) -> crate::Result<Self>
7174
where
@@ -91,7 +94,7 @@ impl<'q> AnyStatement {
9194
.collect::<Result<Vec<_>, _>>()?;
9295

9396
Ok(Self {
94-
sql: query,
97+
sql: statement.into_sql(),
9598
columns,
9699
column_names,
97100
parameters,

sqlx-core/src/query.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ where
4747
#[inline]
4848
fn sql(self) -> SqlStr {
4949
match self.statement {
50-
Either::Right(statement) => statement.sql(),
50+
Either::Right(statement) => statement.sql_cloned(),
5151
Either::Left(sql) => sql,
5252
}
5353
}

sqlx-core/src/statement.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ pub trait Statement: Send + Sync {
2525
fn to_owned(&self) -> <Self::Database as Database>::Statement;
2626

2727
/// Get the original SQL text used to create this statement.
28-
fn sql(&self) -> SqlStr;
28+
fn sql_cloned(&self) -> SqlStr;
29+
30+
fn into_sql(self) -> SqlStr;
2931

3032
/// Get the expected parameters for this statement.
3133
///

sqlx-mysql/src/any.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,9 @@ impl AnyConnectionBackend for MySqlConnection {
140140
_parameters: &[AnyTypeInfo],
141141
) -> BoxFuture<'c, sqlx_core::Result<AnyStatement>> {
142142
Box::pin(async move {
143-
let statement = Executor::prepare_with(self, sql.clone(), &[]).await?;
144-
AnyStatement::try_from_statement(
145-
sql,
146-
&statement,
147-
statement.metadata.column_names.clone(),
148-
)
143+
let statement = Executor::prepare_with(self, sql, &[]).await?;
144+
let column_names = statement.metadata.column_names.clone();
145+
AnyStatement::try_from_statement(statement, column_names)
149146
})
150147
}
151148

sqlx-mysql/src/statement.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,14 @@ impl Statement for MySqlStatement {
3333
}
3434
}
3535

36-
fn sql(&self) -> SqlStr {
36+
fn sql_cloned(&self) -> SqlStr {
3737
self.sql.clone()
3838
}
3939

40+
fn into_sql(self) -> SqlStr {
41+
self.sql
42+
}
43+
4044
fn parameters(&self) -> Option<Either<&[MySqlTypeInfo], usize>> {
4145
Some(Either::Right(self.metadata.parameters))
4246
}

sqlx-postgres/src/any.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,9 @@ impl AnyConnectionBackend for PgConnection {
140140
_parameters: &[AnyTypeInfo],
141141
) -> BoxFuture<'c, sqlx_core::Result<AnyStatement>> {
142142
Box::pin(async move {
143-
let statement = Executor::prepare_with(self, sql.clone(), &[]).await?;
144-
AnyStatement::try_from_statement(
145-
sql,
146-
&statement,
147-
statement.metadata.column_names.clone(),
148-
)
143+
let statement = Executor::prepare_with(self, sql, &[]).await?;
144+
let colunn_names = statement.metadata.column_names.clone();
145+
AnyStatement::try_from_statement(statement, colunn_names)
149146
})
150147
}
151148

sqlx-postgres/src/statement.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@ impl Statement for PgStatement {
3434
}
3535
}
3636

37-
fn sql(&self) -> SqlStr {
37+
fn sql_cloned(&self) -> SqlStr {
3838
self.sql.clone()
3939
}
4040

41+
fn into_sql(self) -> SqlStr {
42+
self.sql
43+
}
44+
4145
fn parameters(&self) -> Option<Either<&[PgTypeInfo], usize>> {
4246
Some(Either::Left(&self.metadata.parameters))
4347
}

sqlx-sqlite/src/any.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,9 @@ impl AnyConnectionBackend for SqliteConnection {
137137
_parameters: &[AnyTypeInfo],
138138
) -> BoxFuture<'c, sqlx_core::Result<AnyStatement>> {
139139
Box::pin(async move {
140-
let statement = Executor::prepare_with(self, sql.clone(), &[]).await?;
141-
AnyStatement::try_from_statement(sql, &statement, statement.column_names.clone())
140+
let statement = Executor::prepare_with(self, sql, &[]).await?;
141+
let column_names = statement.column_names.clone();
142+
AnyStatement::try_from_statement(statement, column_names)
142143
})
143144
}
144145

sqlx-sqlite/src/statement/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ impl Statement for SqliteStatement {
3636
}
3737
}
3838

39-
fn sql(&self) -> SqlStr {
39+
fn sql_cloned(&self) -> SqlStr {
4040
self.sql.clone()
4141
}
4242

43+
fn into_sql(self) -> SqlStr {
44+
self.sql
45+
}
46+
4347
fn parameters(&self) -> Option<Either<&[SqliteTypeInfo], usize>> {
4448
Some(Either::Right(self.parameters))
4549
}

0 commit comments

Comments
 (0)