File tree Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -117,7 +117,11 @@ pub fn parse_metadata<R: ChunkReader>(chunk_reader: &R) -> Result<ParquetMetaDat
117
117
schema_descr,
118
118
column_orders,
119
119
) ;
120
- Ok ( ParquetMetaData :: new ( file_metadata, row_groups) )
120
+ Ok ( ParquetMetaData :: new_with_size (
121
+ file_metadata,
122
+ row_groups,
123
+ footer_metadata_len as u32 ,
124
+ ) )
121
125
}
122
126
123
127
/// Parses column orders from Thrift definition.
Original file line number Diff line number Diff line change @@ -50,15 +50,26 @@ use crate::schema::types::{
50
50
pub struct ParquetMetaData {
51
51
file_metadata : FileMetaData ,
52
52
row_groups : Vec < RowGroupMetaData > ,
53
+ /// Size of serialized metadata. See footer::parse_metadata
54
+ metadata_size : u32 ,
53
55
}
54
56
55
57
impl ParquetMetaData {
56
58
/// Creates Parquet metadata from file metadata and a list of row group metadata `Arc`s
57
59
/// for each available row group.
58
60
pub fn new ( file_metadata : FileMetaData , row_groups : Vec < RowGroupMetaData > ) -> Self {
61
+ ParquetMetaData :: new_with_size ( file_metadata, row_groups, 0 )
62
+ }
63
+
64
+ pub fn new_with_size (
65
+ file_metadata : FileMetaData ,
66
+ row_groups : Vec < RowGroupMetaData > ,
67
+ metadata_size : u32 ,
68
+ ) -> Self {
59
69
ParquetMetaData {
60
70
file_metadata,
61
71
row_groups,
72
+ metadata_size,
62
73
}
63
74
}
64
75
@@ -72,6 +83,10 @@ impl ParquetMetaData {
72
83
self . row_groups . len ( )
73
84
}
74
85
86
+ pub fn metadata_size ( & self ) -> u32 {
87
+ self . metadata_size
88
+ }
89
+
75
90
/// Returns row group metadata for `i`th position.
76
91
/// Position should be less than number of row groups `num_row_groups`.
77
92
pub fn row_group ( & self , i : usize ) -> & RowGroupMetaData {
Original file line number Diff line number Diff line change @@ -158,9 +158,10 @@ impl<R: 'static + ChunkReader> SerializedFileReader<R> {
158
158
filtered_row_groups. push ( row_group_metadata. clone ( ) ) ;
159
159
}
160
160
}
161
- self . metadata = ParquetMetaData :: new (
161
+ self . metadata = ParquetMetaData :: new_with_size (
162
162
self . metadata . file_metadata ( ) . clone ( ) ,
163
163
filtered_row_groups,
164
+ self . metadata . metadata_size ( ) ,
164
165
) ;
165
166
}
166
167
}
You can’t perform that action at this time.
0 commit comments