@@ -8,6 +8,7 @@ use std::sync::Arc;
8
8
9
9
use sqlx:: postgres:: types:: { Oid , PgCiText , PgInterval , PgMoney , PgRange } ;
10
10
use sqlx:: postgres:: Postgres ;
11
+ use sqlx_macros:: FromRow ;
11
12
use sqlx_test:: { new, test_decode_type, test_prepared_type, test_type} ;
12
13
13
14
use sqlx_core:: executor:: Executor ;
@@ -673,6 +674,21 @@ async fn test_arc() -> anyhow::Result<()> {
673
674
Ok ( ( ) )
674
675
}
675
676
677
+ #[ sqlx_macros:: test]
678
+ async fn test_arc_str ( ) -> anyhow:: Result < ( ) > {
679
+ let mut conn = new :: < Postgres > ( ) . await ?;
680
+
681
+ let name: Arc < str > = "Harold" . into ( ) ;
682
+
683
+ let username: Arc < str > = sqlx:: query_scalar ( "SELECT $1 AS username" )
684
+ . bind ( & name)
685
+ . fetch_one ( & mut conn)
686
+ . await ?;
687
+
688
+ assert ! ( username == name) ;
689
+ Ok ( ( ) )
690
+ }
691
+
676
692
#[ sqlx_macros:: test]
677
693
async fn test_cow ( ) -> anyhow:: Result < ( ) > {
678
694
let mut conn = new :: < Postgres > ( ) . await ?;
@@ -688,6 +704,21 @@ async fn test_cow() -> anyhow::Result<()> {
688
704
Ok ( ( ) )
689
705
}
690
706
707
+ #[ sqlx_macros:: test]
708
+ async fn test_arc_slice ( ) -> anyhow:: Result < ( ) > {
709
+ let mut conn = new :: < Postgres > ( ) . await ?;
710
+
711
+ let name: Arc < [ u8 ] > = [ 5 , 0 ] . into ( ) ;
712
+
713
+ let username: Arc < [ u8 ] > = sqlx:: query_scalar ( "SELECT $1" )
714
+ . bind ( & name)
715
+ . fetch_one ( & mut conn)
716
+ . await ?;
717
+
718
+ assert ! ( username == name) ;
719
+ Ok ( ( ) )
720
+ }
721
+
691
722
#[ sqlx_macros:: test]
692
723
async fn test_box ( ) -> anyhow:: Result < ( ) > {
693
724
let mut conn = new :: < Postgres > ( ) . await ?;
@@ -713,3 +744,20 @@ async fn test_rc() -> anyhow::Result<()> {
713
744
assert ! ( user_age == 1 ) ;
714
745
Ok ( ( ) )
715
746
}
747
+
748
+ #[ sqlx_macros:: test]
749
+ async fn test_arc_slice_2 ( ) -> anyhow:: Result < ( ) > {
750
+ let mut conn = new :: < Postgres > ( ) . await ?;
751
+
752
+ #[ derive( FromRow ) ]
753
+ struct Nested {
754
+ inner : Arc < [ i32 ] > ,
755
+ }
756
+
757
+ let username: Nested = sqlx:: query_as ( "SELECT ARRAY[1, 2, 3]::INT4[] as inner" )
758
+ . fetch_one ( & mut conn)
759
+ . await ?;
760
+
761
+ assert ! ( username. inner. as_ref( ) == & [ 1 , 2 , 3 ] ) ;
762
+ Ok ( ( ) )
763
+ }
0 commit comments