@@ -88,7 +88,15 @@ fn create_table(results: &[RecordBatch], options: &FormatOptions) -> Result<Tabl
8888
8989 let mut header = Vec :: new ( ) ;
9090 for field in schema. fields ( ) {
91- header. push ( Cell :: new ( field. name ( ) ) ) ;
91+ if options. types_info ( ) {
92+ header. push ( Cell :: new ( format ! (
93+ "{}\n {}" ,
94+ field. name( ) ,
95+ field. data_type( )
96+ ) ) )
97+ } else {
98+ header. push ( Cell :: new ( field. name ( ) ) ) ;
99+ }
92100 }
93101 table. set_header ( header) ;
94102
@@ -1059,9 +1067,18 @@ mod tests {
10591067
10601068 #[ test]
10611069 fn test_format_options ( ) {
1062- let options = FormatOptions :: default ( ) . with_null ( "null" ) ;
1063- let array = Int32Array :: from ( vec ! [ Some ( 1 ) , Some ( 2 ) , None , Some ( 3 ) , Some ( 4 ) ] ) ;
1064- let batch = RecordBatch :: try_from_iter ( [ ( "my_column_name" , Arc :: new ( array) as _ ) ] ) . unwrap ( ) ;
1070+ let options = FormatOptions :: default ( )
1071+ . with_null ( "null" )
1072+ . with_types_info ( true ) ;
1073+ let int32_array = Int32Array :: from ( vec ! [ Some ( 1 ) , Some ( 2 ) , None , Some ( 3 ) , Some ( 4 ) ] ) ;
1074+ let string_array =
1075+ StringArray :: from ( vec ! [ Some ( "foo" ) , Some ( "bar" ) , None , Some ( "baz" ) , None ] ) ;
1076+
1077+ let batch = RecordBatch :: try_from_iter ( [
1078+ ( "my_int32_name" , Arc :: new ( int32_array) as _ ) ,
1079+ ( "my_string_name" , Arc :: new ( string_array) as _ ) ,
1080+ ] )
1081+ . unwrap ( ) ;
10651082
10661083 let column = pretty_format_columns_with_options (
10671084 "my_column_name" ,
@@ -1071,11 +1088,7 @@ mod tests {
10711088 . unwrap ( )
10721089 . to_string ( ) ;
10731090
1074- let batch = pretty_format_batches_with_options ( & [ batch] , & options)
1075- . unwrap ( )
1076- . to_string ( ) ;
1077-
1078- let expected = vec ! [
1091+ let expected_column = vec ! [
10791092 "+----------------+" ,
10801093 "| my_column_name |" ,
10811094 "+----------------+" ,
@@ -1088,9 +1101,26 @@ mod tests {
10881101 ] ;
10891102
10901103 let actual: Vec < & str > = column. lines ( ) . collect ( ) ;
1091- assert_eq ! ( expected, actual, "Actual result:\n {column}" ) ;
1104+ assert_eq ! ( expected_column, actual, "Actual result:\n {column}" ) ;
1105+
1106+ let batch = pretty_format_batches_with_options ( & [ batch] , & options)
1107+ . unwrap ( )
1108+ . to_string ( ) ;
1109+
1110+ let expected_table = vec ! [
1111+ "+---------------+----------------+" ,
1112+ "| my_int32_name | my_string_name |" ,
1113+ "| Int32 | Utf8 |" ,
1114+ "+---------------+----------------+" ,
1115+ "| 1 | foo |" ,
1116+ "| 2 | bar |" ,
1117+ "| null | null |" ,
1118+ "| 3 | baz |" ,
1119+ "| 4 | null |" ,
1120+ "+---------------+----------------+" ,
1121+ ] ;
10921122
10931123 let actual: Vec < & str > = batch. lines ( ) . collect ( ) ;
1094- assert_eq ! ( expected , actual, "Actual result:\n {batch}" ) ;
1124+ assert_eq ! ( expected_table , actual, "Actual result:\n {batch}" ) ;
10951125 }
10961126}
0 commit comments