@@ -428,17 +428,14 @@ impl DataFrame {
428428 /// ```
429429 ///
430430 pub fn drop_columns ( self , columns : & [ & str ] ) -> Result < DataFrame > {
431+ let schema = Arc :: clone ( self . plan . schema ( ) ) ;
431432 let fields_to_drop = columns
432433 . iter ( )
433- . map ( |name| {
434- self . plan
435- . schema ( )
436- . qualified_field_with_unqualified_name ( name)
437- } )
434+ . map ( |name| schema. qualified_field_with_unqualified_name ( name) )
438435 . filter ( |r| r. is_ok ( ) )
439436 . map ( |r| {
440437 let ( qualifier, field) = r. unwrap ( ) ;
441- ( qualifier. cloned ( ) , field. clone ( ) )
438+ ( qualifier, field)
442439 } )
443440 . collect :: < Vec < _ > > ( ) ;
444441 self . drop_qualified_columns ( & fields_to_drop)
@@ -453,20 +450,16 @@ impl DataFrame {
453450 /// * `fields_to_drop` - A slice of tuples containing the qualifier and field to drop
454451 pub fn drop_qualified_columns (
455452 self ,
456- fields_to_drop : & [ ( Option < TableReference > , Field ) ] ,
453+ fields_to_drop : & [ ( Option < & TableReference > , & Field ) ] ,
457454 ) -> Result < DataFrame > {
458- let field_references_to_drop = fields_to_drop
459- . iter ( )
460- . map ( |( qualifier, field) | ( qualifier. as_ref ( ) , field) )
461- . collect :: < Vec < _ > > ( ) ;
462455 let expr: Vec < Expr > = self
463456 . plan
464457 . schema ( )
465458 . fields ( )
466459 . into_iter ( )
467460 . enumerate ( )
468461 . map ( |( idx, _) | self . plan . schema ( ) . qualified_field ( idx) )
469- . filter ( |( qualifier, f) | !field_references_to_drop . contains ( & ( * qualifier, f) ) )
462+ . filter ( |( qualifier, f) | !fields_to_drop . contains ( & ( * qualifier, f) ) )
470463 . map ( |( qualifier, field) | Expr :: Column ( Column :: from ( ( qualifier, field) ) ) )
471464 . collect ( ) ;
472465 self . select ( expr)
0 commit comments