File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1312,17 +1312,20 @@ impl<'a> fmt::Show for Statement<'a> {
13121312#[ unsafe_destructor]
13131313impl < ' conn > Drop for Statement < ' conn > {
13141314 fn drop ( & mut self ) {
1315- if !self . finished {
1316- let _ = self . finish_inner ( ) ;
1317- }
1315+ let _ = self . finish_inner ( ) ;
13181316 }
13191317}
13201318
13211319impl < ' conn > Statement < ' conn > {
13221320 fn finish_inner ( & mut self ) -> Result < ( ) > {
1323- let mut conn = self . conn . conn . borrow_mut ( ) ;
1324- check_desync ! ( conn) ;
1325- conn. close_statement ( & * self . name , b'S' )
1321+ if !self . finished {
1322+ self . finished = true ;
1323+ let mut conn = self . conn . conn . borrow_mut ( ) ;
1324+ check_desync ! ( conn) ;
1325+ conn. close_statement ( & * self . name , b'S' )
1326+ } else {
1327+ Ok ( ( ) )
1328+ }
13261329 }
13271330
13281331 fn inner_execute ( & self , portal_name : & str , row_limit : i32 , params : & [ & ToSql ] ) -> Result < ( ) > {
@@ -1480,7 +1483,6 @@ impl<'conn> Statement<'conn> {
14801483 /// Functionally identical to the `Drop` implementation of the
14811484 /// `Statement` except that it returns any error to the caller.
14821485 pub fn finish ( mut self ) -> Result < ( ) > {
1483- self . finished = true ;
14841486 self . finish_inner ( )
14851487 }
14861488}
Original file line number Diff line number Diff line change @@ -906,10 +906,13 @@ fn test_prepare_cached() {
906906
907907 let stmt = or_panic ! ( conn. prepare_cached( "SELECT id FROM foo ORDER BY id" ) ) ;
908908 assert_eq ! ( & [ 1 , 2 ] [ ] , or_panic!( stmt. query( & [ ] ) ) . map( |r| r. get( 0 ) ) . collect:: <Vec <i32 >>( ) ) ;
909+ or_panic ! ( stmt. finish( ) ) ;
909910
910911 let stmt = or_panic ! ( conn. prepare_cached( "SELECT id FROM foo ORDER BY id" ) ) ;
911912 assert_eq ! ( & [ 1 , 2 ] [ ] , or_panic!( stmt. query( & [ ] ) ) . map( |r| r. get( 0 ) ) . collect:: <Vec <i32 >>( ) ) ;
913+ or_panic ! ( stmt. finish( ) ) ;
912914
913915 let stmt = or_panic ! ( conn. prepare_cached( "SELECT id FROM foo ORDER BY id DESC" ) ) ;
914916 assert_eq ! ( & [ 2 , 1 ] [ ] , or_panic!( stmt. query( & [ ] ) ) . map( |r| r. get( 0 ) ) . collect:: <Vec <i32 >>( ) ) ;
917+ or_panic ! ( stmt. finish( ) ) ;
915918}
You can’t perform that action at this time.
0 commit comments