@@ -315,10 +315,10 @@ impl DFSchema {
315315 if !can_cast_types ( r_field. data_type ( ) , l_field. data_type ( ) ) {
316316 Err ( DataFusionError :: Plan (
317317 format ! ( "Column {} (type: {}) is not compatible with column {} (type: {})" ,
318- r_field. name( ) ,
319- r_field. data_type( ) ,
320- l_field. name( ) ,
321- l_field. data_type( ) ) ) )
318+ r_field. name( ) ,
319+ r_field. data_type( ) ,
320+ l_field. name( ) ,
321+ l_field. data_type( ) ) ) )
322322 } else {
323323 Ok ( ( ) )
324324 }
@@ -367,21 +367,7 @@ impl From<DFSchema> for Schema {
367367 /// Convert DFSchema into a Schema
368368 fn from ( df_schema : DFSchema ) -> Self {
369369 Schema :: new_with_metadata (
370- df_schema
371- . fields
372- . into_iter ( )
373- . map ( |f| {
374- if f. qualifier ( ) . is_some ( ) {
375- Field :: new (
376- f. name ( ) . as_str ( ) ,
377- f. data_type ( ) . to_owned ( ) ,
378- f. is_nullable ( ) ,
379- )
380- } else {
381- f. field
382- }
383- } )
384- . collect ( ) ,
370+ df_schema. fields . into_iter ( ) . map ( |f| f. field ) . collect ( ) ,
385371 df_schema. metadata ,
386372 )
387373 }
@@ -608,6 +594,7 @@ impl DFField {
608594mod tests {
609595 use super :: * ;
610596 use arrow:: datatypes:: DataType ;
597+ use std:: collections:: BTreeMap ;
611598
612599 #[ test]
613600 fn from_unqualified_field ( ) {
@@ -805,6 +792,25 @@ mod tests {
805792 Field :: new( "c1" , DataType :: Boolean , true ) ,
806793 ] )
807794 }
795+ #[ test]
796+ fn test_dfschema_to_schema_convertion ( ) {
797+ let mut a: DFField = DFField :: new ( Some ( "table1" ) , "a" , DataType :: Int64 , false ) ;
798+ let mut b: DFField = DFField :: new ( Some ( "table1" ) , "b" , DataType :: Int64 , false ) ;
799+ let mut a_metadata = BTreeMap :: new ( ) ;
800+ a_metadata. insert ( "key" . to_string ( ) , "value" . to_string ( ) ) ;
801+ a. field . set_metadata ( Some ( a_metadata) ) ;
802+ let mut b_metadata = BTreeMap :: new ( ) ;
803+ b_metadata. insert ( "key" . to_string ( ) , "value" . to_string ( ) ) ;
804+ b. field . set_metadata ( Some ( b_metadata) ) ;
805+
806+ let df_schema = Arc :: new (
807+ DFSchema :: new_with_metadata ( [ a, b] . to_vec ( ) , HashMap :: new ( ) ) . unwrap ( ) ,
808+ ) ;
809+ let schema: Schema = df_schema. as_ref ( ) . clone ( ) . into ( ) ;
810+ let a_df = df_schema. fields . get ( 0 ) . unwrap ( ) . field ( ) ;
811+ let a_arrow = schema. fields . get ( 0 ) . unwrap ( ) ;
812+ assert_eq ! ( a_df. metadata( ) , a_arrow. metadata( ) )
813+ }
808814
809815 fn test_schema_2 ( ) -> Schema {
810816 Schema :: new ( vec ! [
0 commit comments