@@ -8,6 +8,7 @@ use std::sync::Arc;
88
99use sqlx:: postgres:: types:: { Oid , PgCiText , PgInterval , PgMoney , PgRange } ;
1010use sqlx:: postgres:: Postgres ;
11+ use sqlx_macros:: FromRow ;
1112use sqlx_test:: { new, test_decode_type, test_prepared_type, test_type} ;
1213
1314use sqlx_core:: executor:: Executor ;
@@ -673,6 +674,21 @@ async fn test_arc() -> anyhow::Result<()> {
673674 Ok ( ( ) )
674675}
675676
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+
676692#[ sqlx_macros:: test]
677693async fn test_cow ( ) -> anyhow:: Result < ( ) > {
678694 let mut conn = new :: < Postgres > ( ) . await ?;
@@ -688,6 +704,21 @@ async fn test_cow() -> anyhow::Result<()> {
688704 Ok ( ( ) )
689705}
690706
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+
691722#[ sqlx_macros:: test]
692723async fn test_box ( ) -> anyhow:: Result < ( ) > {
693724 let mut conn = new :: < Postgres > ( ) . await ?;
@@ -713,3 +744,20 @@ async fn test_rc() -> anyhow::Result<()> {
713744 assert ! ( user_age == 1 ) ;
714745 Ok ( ( ) )
715746}
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