@@ -168,6 +168,7 @@ impl TableFunctionImpl for ParquetMetadataFunc {
168168 Field :: new( "num_values" , DataType :: Int64 , true ) ,
169169 Field :: new( "path_in_schema" , DataType :: Utf8 , true ) ,
170170 Field :: new( "type" , DataType :: Utf8 , true ) ,
171+ Field :: new( "logical_type" , DataType :: Utf8 , true ) ,
171172 Field :: new( "stats_min" , DataType :: Utf8 , true ) ,
172173 Field :: new( "stats_max" , DataType :: Utf8 , true ) ,
173174 Field :: new( "stats_null_count" , DataType :: Int64 , true ) ,
@@ -194,6 +195,7 @@ impl TableFunctionImpl for ParquetMetadataFunc {
194195 let mut num_values_arr = vec ! [ ] ;
195196 let mut path_in_schema_arr = vec ! [ ] ;
196197 let mut type_arr = vec ! [ ] ;
198+ let mut logical_type_arr = vec ! [ ] ;
197199 let mut stats_min_arr = vec ! [ ] ;
198200 let mut stats_max_arr = vec ! [ ] ;
199201 let mut stats_null_count_arr = vec ! [ ] ;
@@ -219,6 +221,10 @@ impl TableFunctionImpl for ParquetMetadataFunc {
219221 num_values_arr. push ( column. num_values ( ) ) ;
220222 path_in_schema_arr. push ( column. column_path ( ) . to_string ( ) ) ;
221223 type_arr. push ( column. column_type ( ) . to_string ( ) ) ;
224+ logical_type_arr. push (
225+ column. column_descr ( ) . logical_type_ref ( )
226+ . map ( |lt| format ! ( "{:?}" , lt) )
227+ ) ;
222228 let converted_type = column. column_descr ( ) . converted_type ( ) ;
223229
224230 if let Some ( s) = column. statistics ( ) {
@@ -260,6 +266,7 @@ impl TableFunctionImpl for ParquetMetadataFunc {
260266 Arc :: new( Int64Array :: from( num_values_arr) ) ,
261267 Arc :: new( StringArray :: from( path_in_schema_arr) ) ,
262268 Arc :: new( StringArray :: from( type_arr) ) ,
269+ Arc :: new( StringArray :: from( logical_type_arr) ) ,
263270 Arc :: new( StringArray :: from( stats_min_arr) ) ,
264271 Arc :: new( StringArray :: from( stats_max_arr) ) ,
265272 Arc :: new( Int64Array :: from( stats_null_count_arr) ) ,
0 commit comments