@@ -336,12 +336,7 @@ impl InnerConnection {
336336 let params = try!( params. into_connect_params ( ) ) ;
337337 let stream = try!( io:: initialize_stream ( & params, ssl) ) ;
338338
339- let ConnectParams {
340- user,
341- database,
342- mut options,
343- ..
344- } = params;
339+ let ConnectParams { user, database, mut options, .. } = params;
345340
346341 let user = try!( user. ok_or ( ConnectError :: MissingUser ) ) ;
347342
@@ -364,9 +359,8 @@ impl InnerConnection {
364359 options. push ( ( "TimeZone" . into_string ( ) , "GMT" . into_string ( ) ) ) ;
365360 // We have to clone here since we need the user again for auth
366361 options. push ( ( "user" . into_string ( ) , user. user . clone ( ) ) ) ;
367- match database {
368- Some ( database) => options. push ( ( "database" . into_string ( ) , database) ) ,
369- None => { }
362+ if let Some ( database) = database {
363+ options. push ( ( "database" . into_string ( ) , database) ) ;
370364 }
371365
372366 try!( conn. write_messages ( & [ StartupMessage {
@@ -473,11 +467,8 @@ impl InnerConnection {
473467 mem:: replace ( & mut self . notice_handler , handler)
474468 }
475469
476- fn raw_prepare ( & mut self , query : & str )
477- -> Result < ( String , Vec < Type > , Vec < ResultDescription > ) > {
478- let stmt_name = format ! ( "s{}" , self . next_stmt_id) ;
479- self . next_stmt_id += 1 ;
480-
470+ fn raw_prepare ( & mut self , stmt_name : & str , query : & str )
471+ -> Result < ( Vec < Type > , Vec < ResultDescription > ) > {
481472 try!( self . write_messages ( & [
482473 Parse {
483474 name : stmt_name[ ] ,
@@ -525,11 +516,18 @@ impl InnerConnection {
525516 try!( self . set_type_names ( param_types. iter_mut ( ) ) ) ;
526517 try!( self . set_type_names ( result_desc. iter_mut ( ) . map ( |d| & mut d. ty ) ) ) ;
527518
528- Ok ( ( stmt_name, param_types, result_desc) )
519+ Ok ( ( param_types, result_desc) )
520+ }
521+
522+ fn make_stmt_name ( & mut self ) -> String {
523+ let stmt_name = format ! ( "s{}" , self . next_stmt_id) ;
524+ self . next_stmt_id += 1 ;
525+ stmt_name
529526 }
530527
531528 fn prepare < ' a > ( & mut self , query : & str , conn : & ' a Connection ) -> Result < Statement < ' a > > {
532- let ( stmt_name, param_types, result_desc) = try!( self . raw_prepare ( query) ) ;
529+ let stmt_name = self . make_stmt_name ( ) ;
530+ let ( param_types, result_desc) = try!( self . raw_prepare ( & * stmt_name, query) ) ;
533531 Ok ( Statement {
534532 conn : conn,
535533 name : stmt_name,
@@ -547,17 +545,16 @@ impl InnerConnection {
547545 let _ = util:: comma_join ( & mut query, rows. iter ( ) . map ( |& e| e) ) ;
548546 let _ = write ! ( & mut query, " FROM {}" , table) ;
549547 let query = String :: from_utf8 ( query) . unwrap ( ) ;
550- let ( stmt_name, _, result_desc) = try!( self . raw_prepare ( query[ ] ) ) ;
551-
552- let column_types = result_desc. iter ( ) . map ( |desc| desc. ty . clone ( ) ) . collect ( ) ;
553- try!( self . close_statement ( stmt_name[ ] , b'S' ) ) ;
548+ let ( _, result_desc) = try!( self . raw_prepare ( "" , query[ ] ) ) ;
549+ let column_types = result_desc. into_iter ( ) . map ( |desc| desc. ty ) . collect ( ) ;
554550
555551 let mut query = vec ! [ ] ;
556552 let _ = write ! ( & mut query, "COPY {} (" , table) ;
557553 let _ = util:: comma_join ( & mut query, rows. iter ( ) . map ( |& e| e) ) ;
558554 let _ = write ! ( & mut query, ") FROM STDIN WITH (FORMAT binary)" ) ;
559555 let query = String :: from_utf8 ( query) . unwrap ( ) ;
560- let ( stmt_name, _, _) = try!( self . raw_prepare ( query[ ] ) ) ;
556+ let stmt_name = self . make_stmt_name ( ) ;
557+ try!( self . raw_prepare ( & * stmt_name, query[ ] ) ) ;
561558
562559 Ok ( CopyInStatement {
563560 conn : conn,
0 commit comments