@@ -3,15 +3,16 @@ use crate::column::ColumnIndex;
33use crate :: database:: Database ;
44use crate :: error:: Error ;
55use crate :: ext:: ustr:: UStr ;
6+ use crate :: sql_str:: SqlStr ;
67use crate :: statement:: Statement ;
78use crate :: HashMap ;
89use either:: Either ;
9- use std:: borrow:: Cow ;
1010use std:: sync:: Arc ;
1111
12- pub struct AnyStatement < ' q > {
12+ #[ derive( Clone ) ]
13+ pub struct AnyStatement {
1314 #[ doc( hidden) ]
14- pub sql : Cow < ' q , str > ,
15+ pub sql : SqlStr ,
1516 #[ doc( hidden) ]
1617 pub parameters : Option < Either < Vec < AnyTypeInfo > , usize > > ,
1718 #[ doc( hidden) ]
@@ -20,19 +21,14 @@ pub struct AnyStatement<'q> {
2021 pub columns : Vec < AnyColumn > ,
2122}
2223
23- impl < ' q > Statement < ' q > for AnyStatement < ' q > {
24+ impl Statement for AnyStatement {
2425 type Database = Any ;
2526
26- fn to_owned ( & self ) -> AnyStatement < ' static > {
27- AnyStatement :: < ' static > {
28- sql : Cow :: Owned ( self . sql . clone ( ) . into_owned ( ) ) ,
29- column_names : self . column_names . clone ( ) ,
30- parameters : self . parameters . clone ( ) ,
31- columns : self . columns . clone ( ) ,
32- }
27+ fn into_sql ( self ) -> SqlStr {
28+ self . sql
3329 }
3430
35- fn sql ( & self ) -> & str {
31+ fn sql ( & self ) -> & SqlStr {
3632 & self . sql
3733 }
3834
@@ -51,8 +47,8 @@ impl<'q> Statement<'q> for AnyStatement<'q> {
5147 impl_statement_query ! ( AnyArguments <' _>) ;
5248}
5349
54- impl ColumnIndex < AnyStatement < ' _ > > for & ' _ str {
55- fn index ( & self , statement : & AnyStatement < ' _ > ) -> Result < usize , Error > {
50+ impl ColumnIndex < AnyStatement > for & ' _ str {
51+ fn index ( & self , statement : & AnyStatement ) -> Result < usize , Error > {
5652 statement
5753 . column_names
5854 . get ( * self )
@@ -61,15 +57,14 @@ impl ColumnIndex<AnyStatement<'_>> for &'_ str {
6157 }
6258}
6359
64- impl < ' q > AnyStatement < ' q > {
60+ impl AnyStatement {
6561 #[ doc( hidden) ]
6662 pub fn try_from_statement < S > (
67- query : & ' q str ,
68- statement : & S ,
63+ statement : S ,
6964 column_names : Arc < HashMap < UStr , usize > > ,
7065 ) -> crate :: Result < Self >
7166 where
72- S : Statement < ' q > ,
67+ S : Statement ,
7368 AnyTypeInfo : for < ' a > TryFrom < & ' a <S :: Database as Database >:: TypeInfo , Error = Error > ,
7469 AnyColumn : for < ' a > TryFrom < & ' a <S :: Database as Database >:: Column , Error = Error > ,
7570 {
@@ -91,7 +86,7 @@ impl<'q> AnyStatement<'q> {
9186 . collect :: < Result < Vec < _ > , _ > > ( ) ?;
9287
9388 Ok ( Self {
94- sql : query . into ( ) ,
89+ sql : statement . into_sql ( ) ,
9590 columns,
9691 column_names,
9792 parameters,
0 commit comments