@@ -23,7 +23,8 @@ use postgres::{NoticeHandler,
2323 ToSql ,
2424 Error ,
2525 ConnectError ,
26- DbError } ;
26+ DbError ,
27+ VecStreamIterator } ;
2728use postgres:: SqlState :: { SyntaxError ,
2829 QueryCanceled ,
2930 UndefinedTable ,
@@ -786,12 +787,16 @@ fn test_copy_in() {
786787 or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE foo (id INT, name VARCHAR)" , & [ ] ) ) ;
787788
788789 let stmt = or_panic ! ( conn. prepare_copy_in( "foo" , & [ "id" , "name" ] ) ) ;
789- let data: & [ & [ & ToSql ] ] = & [ & [ & 0i32 , & "Steven" . to_string ( ) ] , & [ & 1i32 , & None :: < String > ] ] ;
790790
791- assert_eq ! ( Ok ( 2 ) , stmt. execute( data. iter( ) . map( |r| r. iter( ) . map( |& e| e) ) ) ) ;
791+ let data = ( 0i32 ..2 ) . map ( |i| {
792+ VecStreamIterator :: new ( vec ! [ Box :: new( i) as Box <ToSql >,
793+ Box :: new( format!( "{}" , i) ) as Box <ToSql >] )
794+ } ) ;
795+
796+ assert_eq ! ( Ok ( 2 ) , stmt. execute( data) ) ;
792797
793798 let stmt = or_panic ! ( conn. prepare( "SELECT id, name FROM foo ORDER BY id" ) ) ;
794- assert_eq ! ( vec![ ( 0i32 , Some ( "Steven " . to_string( ) ) ) , ( 1 , None ) ] ,
799+ assert_eq ! ( vec![ ( 0i32 , Some ( "0 " . to_string( ) ) ) , ( 1 , Some ( "1" . to_string ( ) ) ) ] ,
795800 or_panic!( stmt. query( & [ ] ) ) . map( |r| ( r. get( 0 ) , r. get( 1 ) ) ) . collect:: <Vec <_>>( ) ) ;
796801}
797802
@@ -801,18 +806,28 @@ fn test_copy_in_bad_column_count() {
801806 or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE foo (id INT, name VARCHAR)" , & [ ] ) ) ;
802807
803808 let stmt = or_panic ! ( conn. prepare_copy_in( "foo" , & [ "id" , "name" ] ) ) ;
804- let data: & [ & [ & ToSql ] ] = & [ & [ & 0i32 , & "Steven" . to_string ( ) ] , & [ & 1i32 ] ] ;
809+ let data = vec ! [
810+ VecStreamIterator :: new( vec![ Box :: new( 1i32 ) as Box <ToSql >,
811+ Box :: new( "Steven" . to_string( ) ) as Box <ToSql >] ) ,
812+ VecStreamIterator :: new( vec![ Box :: new( 2i32 ) as Box <ToSql >] ) ,
813+ ] . into_iter ( ) ;
805814
806- let res = stmt. execute ( data. iter ( ) . map ( |r| r . iter ( ) . map ( | & e| e ) ) ) ;
815+ let res = stmt. execute ( data) ;
807816 match res {
808817 Err ( Error :: DbError ( ref err) ) if err. message [ ] . contains ( "Invalid column count" ) => { }
809818 Err ( err) => panic ! ( "unexpected error {:?}" , err) ,
810819 _ => panic ! ( "Expected error" ) ,
811820 }
812821
813- let data: & [ & [ & ToSql ] ] = & [ & [ & 0i32 , & "Steven" . to_string ( ) ] , & [ & 1i32 , & "Steven" . to_string ( ) , & 1i32 ] ] ;
822+ let data = vec ! [
823+ VecStreamIterator :: new( vec![ Box :: new( 1i32 ) as Box <ToSql >,
824+ Box :: new( "Steven" . to_string( ) ) as Box <ToSql >] ) ,
825+ VecStreamIterator :: new( vec![ Box :: new( 2i32 ) as Box <ToSql >,
826+ Box :: new( "Steven" . to_string( ) ) as Box <ToSql >,
827+ Box :: new( 3i64 ) as Box <ToSql >] ) ,
828+ ] . into_iter ( ) ;
814829
815- let res = stmt. execute ( data. iter ( ) . map ( |r| r . iter ( ) . map ( | & e| e ) ) ) ;
830+ let res = stmt. execute ( data) ;
816831 match res {
817832 Err ( Error :: DbError ( ref err) ) if err. message [ ] . contains ( "Invalid column count" ) => { }
818833 Err ( err) => panic ! ( "unexpected error {:?}" , err) ,
@@ -828,9 +843,15 @@ fn test_copy_in_bad_type() {
828843 or_panic ! ( conn. execute( "CREATE TEMPORARY TABLE foo (id INT, name VARCHAR)" , & [ ] ) ) ;
829844
830845 let stmt = or_panic ! ( conn. prepare_copy_in( "foo" , & [ "id" , "name" ] ) ) ;
831- let data: & [ & [ & ToSql ] ] = & [ & [ & 0i32 , & "Steven" . to_string ( ) ] , & [ & 1i32 , & 2i32 ] ] ;
832846
833- let res = stmt. execute ( data. iter ( ) . map ( |r| r. iter ( ) . map ( |& e| e) ) ) ;
847+ let data = vec ! [
848+ VecStreamIterator :: new( vec![ Box :: new( 1i32 ) as Box <ToSql >,
849+ Box :: new( "Steven" . to_string( ) ) as Box <ToSql >] ) ,
850+ VecStreamIterator :: new( vec![ Box :: new( 2i32 ) as Box <ToSql >,
851+ Box :: new( 1i32 ) as Box <ToSql >] ) ,
852+ ] . into_iter ( ) ;
853+
854+ let res = stmt. execute ( data) ;
834855 match res {
835856 Err ( Error :: DbError ( ref err) ) if err. message [ ] . contains ( "Unexpected type Varchar" ) => { }
836857 Err ( err) => panic ! ( "unexpected error {:?}" , err) ,
0 commit comments