diff --git a/parquet/src/file/serialized_reader.rs b/parquet/src/file/serialized_reader.rs index 629606e587d4..f8716359e045 100644 --- a/parquet/src/file/serialized_reader.rs +++ b/parquet/src/file/serialized_reader.rs @@ -442,8 +442,10 @@ pub(crate) fn decode_page( let result = match page_header.type_ { PageType::DICTIONARY_PAGE => { - assert!(page_header.dictionary_page_header.is_some()); - let dict_header = page_header.dictionary_page_header.as_ref().unwrap(); + let dict_header = + page_header.dictionary_page_header.as_ref().ok_or_else(|| { + ParquetError::General("Missing dictionary page header".to_string()) + })?; let is_sorted = dict_header.is_sorted.unwrap_or(false); Page::DictionaryPage { buf: buffer, @@ -453,8 +455,9 @@ pub(crate) fn decode_page( } } PageType::DATA_PAGE => { - assert!(page_header.data_page_header.is_some()); - let header = page_header.data_page_header.unwrap(); + let header = page_header.data_page_header.ok_or_else(|| { + ParquetError::General("Missing V1 data page header".to_string()) + })?; Page::DataPage { buf: buffer, num_values: header.num_values as u32, @@ -465,8 +468,9 @@ pub(crate) fn decode_page( } } PageType::DATA_PAGE_V2 => { - assert!(page_header.data_page_header_v2.is_some()); - let header = page_header.data_page_header_v2.unwrap(); + let header = page_header.data_page_header_v2.ok_or_else(|| { + ParquetError::General("Missing V2 data page header".to_string()) + })?; let is_compressed = header.is_compressed.unwrap_or(true); Page::DataPageV2 { buf: buffer,