in parquet/src/format.rs [3603:3750]
fn read_from_in_protocol<T: TInputProtocol>(i_prot: &mut T) -> thrift::Result<ColumnMetaData> {
i_prot.read_struct_begin()?;
let mut f_1: Option<Type> = None;
let mut f_2: Option<Vec<Encoding>> = None;
let mut f_3: Option<Vec<String>> = None;
let mut f_4: Option<CompressionCodec> = None;
let mut f_5: Option<i64> = None;
let mut f_6: Option<i64> = None;
let mut f_7: Option<i64> = None;
let mut f_8: Option<Vec<KeyValue>> = None;
let mut f_9: Option<i64> = None;
let mut f_10: Option<i64> = None;
let mut f_11: Option<i64> = None;
let mut f_12: Option<Statistics> = None;
let mut f_13: Option<Vec<PageEncodingStats>> = None;
let mut f_14: Option<i64> = None;
let mut f_15: Option<i32> = None;
let mut f_16: Option<SizeStatistics> = None;
loop {
let field_ident = i_prot.read_field_begin()?;
if field_ident.field_type == TType::Stop {
break;
}
let field_id = field_id(&field_ident)?;
match field_id {
1 => {
let val = Type::read_from_in_protocol(i_prot)?;
f_1 = Some(val);
},
2 => {
let list_ident = i_prot.read_list_begin()?;
let mut val: Vec<Encoding> = Vec::with_capacity(list_ident.size as usize);
for _ in 0..list_ident.size {
let list_elem_2 = Encoding::read_from_in_protocol(i_prot)?;
val.push(list_elem_2);
}
i_prot.read_list_end()?;
f_2 = Some(val);
},
3 => {
let list_ident = i_prot.read_list_begin()?;
let mut val: Vec<String> = Vec::with_capacity(list_ident.size as usize);
for _ in 0..list_ident.size {
let list_elem_3 = i_prot.read_string()?;
val.push(list_elem_3);
}
i_prot.read_list_end()?;
f_3 = Some(val);
},
4 => {
let val = CompressionCodec::read_from_in_protocol(i_prot)?;
f_4 = Some(val);
},
5 => {
let val = i_prot.read_i64()?;
f_5 = Some(val);
},
6 => {
let val = i_prot.read_i64()?;
f_6 = Some(val);
},
7 => {
let val = i_prot.read_i64()?;
f_7 = Some(val);
},
8 => {
let list_ident = i_prot.read_list_begin()?;
let mut val: Vec<KeyValue> = Vec::with_capacity(list_ident.size as usize);
for _ in 0..list_ident.size {
let list_elem_4 = KeyValue::read_from_in_protocol(i_prot)?;
val.push(list_elem_4);
}
i_prot.read_list_end()?;
f_8 = Some(val);
},
9 => {
let val = i_prot.read_i64()?;
f_9 = Some(val);
},
10 => {
let val = i_prot.read_i64()?;
f_10 = Some(val);
},
11 => {
let val = i_prot.read_i64()?;
f_11 = Some(val);
},
12 => {
let val = Statistics::read_from_in_protocol(i_prot)?;
f_12 = Some(val);
},
13 => {
let list_ident = i_prot.read_list_begin()?;
let mut val: Vec<PageEncodingStats> = Vec::with_capacity(list_ident.size as usize);
for _ in 0..list_ident.size {
let list_elem_5 = PageEncodingStats::read_from_in_protocol(i_prot)?;
val.push(list_elem_5);
}
i_prot.read_list_end()?;
f_13 = Some(val);
},
14 => {
let val = i_prot.read_i64()?;
f_14 = Some(val);
},
15 => {
let val = i_prot.read_i32()?;
f_15 = Some(val);
},
16 => {
let val = SizeStatistics::read_from_in_protocol(i_prot)?;
f_16 = Some(val);
},
_ => {
i_prot.skip(field_ident.field_type)?;
},
};
i_prot.read_field_end()?;
}
i_prot.read_struct_end()?;
verify_required_field_exists("ColumnMetaData.type_", &f_1)?;
verify_required_field_exists("ColumnMetaData.encodings", &f_2)?;
verify_required_field_exists("ColumnMetaData.path_in_schema", &f_3)?;
verify_required_field_exists("ColumnMetaData.codec", &f_4)?;
verify_required_field_exists("ColumnMetaData.num_values", &f_5)?;
verify_required_field_exists("ColumnMetaData.total_uncompressed_size", &f_6)?;
verify_required_field_exists("ColumnMetaData.total_compressed_size", &f_7)?;
verify_required_field_exists("ColumnMetaData.data_page_offset", &f_9)?;
let ret = ColumnMetaData {
type_: f_1.expect("auto-generated code should have checked for presence of required fields"),
encodings: f_2.expect("auto-generated code should have checked for presence of required fields"),
path_in_schema: f_3.expect("auto-generated code should have checked for presence of required fields"),
codec: f_4.expect("auto-generated code should have checked for presence of required fields"),
num_values: f_5.expect("auto-generated code should have checked for presence of required fields"),
total_uncompressed_size: f_6.expect("auto-generated code should have checked for presence of required fields"),
total_compressed_size: f_7.expect("auto-generated code should have checked for presence of required fields"),
key_value_metadata: f_8,
data_page_offset: f_9.expect("auto-generated code should have checked for presence of required fields"),
index_page_offset: f_10,
dictionary_page_offset: f_11,
statistics: f_12,
encoding_stats: f_13,
bloom_filter_offset: f_14,
bloom_filter_length: f_15,
size_statistics: f_16,
};
Ok(ret)
}