@@ -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,12 @@ 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
226+ . column_descr ( )
227+ . logical_type_ref ( )
228+ . map ( |lt| format ! ( "{:?}" , lt) ) ,
229+ ) ;
222230 let converted_type = column. column_descr ( ) . converted_type ( ) ;
223231
224232 if let Some ( s) = column. statistics ( ) {
@@ -260,6 +268,7 @@ impl TableFunctionImpl for ParquetMetadataFunc {
260268 Arc :: new( Int64Array :: from( num_values_arr) ) ,
261269 Arc :: new( StringArray :: from( path_in_schema_arr) ) ,
262270 Arc :: new( StringArray :: from( type_arr) ) ,
271+ Arc :: new( StringArray :: from( logical_type_arr) ) ,
263272 Arc :: new( StringArray :: from( stats_min_arr) ) ,
264273 Arc :: new( StringArray :: from( stats_max_arr) ) ,
265274 Arc :: new( Int64Array :: from( stats_null_count_arr) ) ,
0 commit comments