@@ -607,12 +607,12 @@ impl LogicalPlanBuilder {
607607 for ( l, r) in & on {
608608 if self . plan . schema ( ) . field_from_column ( l) . is_ok ( )
609609 && right. schema ( ) . field_from_column ( r) . is_ok ( )
610- && can_hash ( self . plan . schema ( ) . field_from_column ( l) . unwrap ( ) . data_type ( ) )
610+ && can_hash ( self . plan . schema ( ) . field_from_column ( l) ? . data_type ( ) )
611611 {
612612 join_on. push ( ( l. clone ( ) , r. clone ( ) ) ) ;
613613 } else if self . plan . schema ( ) . field_from_column ( r) . is_ok ( )
614614 && right. schema ( ) . field_from_column ( l) . is_ok ( )
615- && can_hash ( self . plan . schema ( ) . field_from_column ( r) . unwrap ( ) . data_type ( ) )
615+ && can_hash ( self . plan . schema ( ) . field_from_column ( r) ? . data_type ( ) )
616616 {
617617 join_on. push ( ( r. clone ( ) , l. clone ( ) ) ) ;
618618 } else {
@@ -629,7 +629,9 @@ impl LogicalPlanBuilder {
629629 }
630630 if join_on. is_empty ( ) {
631631 let join = Self :: from ( self . plan . clone ( ) ) . cross_join ( & right. clone ( ) ) ?;
632- join. filter ( filters. unwrap ( ) )
632+ join. filter ( filters. ok_or_else ( || {
633+ DataFusionError :: Internal ( "filters should not be None here" . to_string ( ) )
634+ } ) ?)
633635 } else {
634636 Ok ( Self :: from ( LogicalPlan :: Join ( Join {
635637 left : Arc :: new ( self . plan . clone ( ) ) ,
@@ -901,18 +903,16 @@ pub fn union_with_alias(
901903 . map ( |p| match p. as_ref ( ) {
902904 LogicalPlan :: Projection ( Projection {
903905 expr, input, alias, ..
904- } ) => Arc :: new (
905- project_with_column_index_alias (
906- expr. to_vec ( ) ,
907- input. clone ( ) ,
908- union_schema. clone ( ) ,
909- alias. clone ( ) ,
910- )
911- . unwrap ( ) ,
912- ) ,
913- x => Arc :: new ( x. clone ( ) ) ,
906+ } ) => Ok ( Arc :: new ( project_with_column_index_alias (
907+ expr. to_vec ( ) ,
908+ input. clone ( ) ,
909+ union_schema. clone ( ) ,
910+ alias. clone ( ) ,
911+ ) ?) ) ,
912+ x => Ok ( Arc :: new ( x. clone ( ) ) ) ,
914913 } )
915- . collect :: < Vec < _ > > ( ) ;
914+ . into_iter ( )
915+ . collect :: < Result < Vec < _ > > > ( ) ?;
916916
917917 if inputs. is_empty ( ) {
918918 return Err ( DataFusionError :: Plan ( "Empty UNION" . to_string ( ) ) ) ;
0 commit comments