@@ -482,4 +482,52 @@ mod tests {
482482 }
483483 Ok ( ( ) )
484484 }
485+
486+ #[ pg_test]
487+ fn test_text_array_as_vec_string ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
488+ let a = Spi :: get_one :: < Array < String > > (
489+ "SELECT ARRAY[NULL, NULL, NULL, NULL, 'the fifth element']::text[]" ,
490+ ) ?
491+ . expect ( "spi result was NULL" )
492+ . into_iter ( )
493+ . collect :: < Vec < _ > > ( ) ;
494+ assert_eq ! ( a, vec![ None , None , None , None , Some ( String :: from( "the fifth element" ) ) ] ) ;
495+ Ok ( ( ) )
496+ }
497+
498+ #[ pg_test]
499+ fn test_text_array_iter ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
500+ let a = Spi :: get_one :: < Array < String > > (
501+ "SELECT ARRAY[NULL, NULL, NULL, NULL, 'the fifth element']::text[]" ,
502+ ) ?
503+ . expect ( "spi result was NULL" ) ;
504+
505+ let mut iter = a. iter ( ) ;
506+
507+ assert_eq ! ( iter. next( ) , Some ( None ) ) ;
508+ assert_eq ! ( iter. next( ) , Some ( None ) ) ;
509+ assert_eq ! ( iter. next( ) , Some ( None ) ) ;
510+ assert_eq ! ( iter. next( ) , Some ( None ) ) ;
511+ assert_eq ! ( iter. next( ) , Some ( Some ( String :: from( "the fifth element" ) ) ) ) ;
512+ assert_eq ! ( iter. next( ) , None ) ;
513+
514+ Ok ( ( ) )
515+ }
516+
517+ #[ pg_test]
518+ fn test_text_array_via_getter ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
519+ let a = Spi :: get_one :: < Array < String > > (
520+ "SELECT ARRAY[NULL, NULL, NULL, NULL, 'the fifth element']::text[]" ,
521+ ) ?
522+ . expect ( "spi result was NULL" ) ;
523+
524+ assert_eq ! ( a. get( 0 ) , Some ( None ) ) ;
525+ assert_eq ! ( a. get( 1 ) , Some ( None ) ) ;
526+ assert_eq ! ( a. get( 2 ) , Some ( None ) ) ;
527+ assert_eq ! ( a. get( 3 ) , Some ( None ) ) ;
528+ assert_eq ! ( a. get( 4 ) , Some ( Some ( String :: from( "the fifth element" ) ) ) ) ;
529+ assert_eq ! ( a. get( 5 ) , None ) ;
530+
531+ Ok ( ( ) )
532+ }
485533}
0 commit comments