Skip to content

Commit 72e30b0

Browse files
committed
PR comments
1 parent 85e8b82 commit 72e30b0

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

parquet/src/column/page.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::file::statistics::{Statistics, page_stats_to_thrift};
3131
/// List of supported pages.
3232
/// These are 1-to-1 mapped from the equivalent Thrift definitions, except `buf` which
3333
/// used to store uncompressed bytes of the page.
34-
#[derive(Clone)]
34+
#[derive(Clone, Debug)]
3535
pub enum Page {
3636
/// Data page Parquet format v1.
3737
DataPage {

parquet/src/encodings/decoding.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,10 +1394,7 @@ mod tests {
13941394
fn test_dict_decoder_empty_data() {
13951395
let mut decoder = DictDecoder::<Int32Type>::new();
13961396
let err = decoder.set_data(Bytes::new(), 10).unwrap_err();
1397-
assert_eq!(
1398-
err.to_string(),
1399-
"Parquet error: Not enough bytes to decode bit_width"
1400-
);
1397+
assert_eq!(err.to_string(), "EOF: Not enough bytes to decode bit_width");
14011398
}
14021399

14031400
fn test_plain_decode<T: DataType>(

parquet/src/file/reader.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ mod tests {
299299
let err = data.get_read(5).unwrap_err();
300300
assert_eq!(
301301
err.to_string(),
302-
"Parquet error: Expected to read at offset 5, while file has length 4"
302+
"EOF: Expected to read at offset 5, while file has length 4"
303303
);
304304
}
305305

@@ -309,13 +309,13 @@ mod tests {
309309
let err = data.get_bytes(5, 1).unwrap_err();
310310
assert_eq!(
311311
err.to_string(),
312-
"Parquet error: Expected to read 1 bytes at offset 5, while file has length 4"
312+
"EOF: Expected to read 1 bytes at offset 5, while file has length 4"
313313
);
314314

315315
let err = data.get_bytes(2, 3).unwrap_err();
316316
assert_eq!(
317317
err.to_string(),
318-
"Parquet error: Expected to read 3 bytes at offset 2, while file has length 4"
318+
"EOF: Expected to read 3 bytes at offset 2, while file has length 4"
319319
);
320320
}
321321
}

parquet/src/file/serialized_reader.rs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use crate::compression::{Codec, create_codec};
2525
#[cfg(feature = "encryption")]
2626
use crate::encryption::decrypt::{CryptoContext, read_and_decrypt};
2727
use crate::errors::{ParquetError, Result};
28-
use crate::file::metadata::thrift::PageHeader;
28+
use crate::file::metadata::thrift::{DataPageHeaderV2, PageHeader};
2929
use crate::file::page_index::offset_index::{OffsetIndexMetaData, PageLocation};
3030
use crate::file::statistics;
3131
use crate::file::{
@@ -1145,10 +1145,7 @@ mod tests {
11451145

11461146
use super::*;
11471147

1148-
#[test]
11491148
fn test_decode_page_invalid_offset() {
1150-
use crate::file::metadata::thrift_gen::DataPageHeaderV2;
1151-
11521149
let page_header = PageHeader {
11531150
r#type: PageType::DATA_PAGE_V2,
11541151
uncompressed_page_size: 10,
@@ -1171,19 +1168,45 @@ mod tests {
11711168

11721169
let buffer = Bytes::new();
11731170
let err = decode_page(page_header, buffer, Type::INT32, None).unwrap_err();
1174-
assert_eq!(err.to_string(), "Parquet error: Invalid page header");
1171+
assert!(
1172+
err.to_string()
1173+
.contains("DataPage v2 header contains implausible values")
1174+
);
11751175
}
11761176

1177-
#[test]
11781177
fn test_decode_unsupported_page() {
1179-
let mut page_header = PageHeader::default();
1180-
page_header.r#type = PageType::INDEX_PAGE;
1178+
let mut page_header = PageHeader {
1179+
r#type: PageType::INDEX_PAGE,
1180+
uncompressed_page_size: 10,
1181+
compressed_page_size: 10,
1182+
data_page_header: None,
1183+
index_page_header: None,
1184+
dictionary_page_header: None,
1185+
crc: None,
1186+
data_page_header_v2: None,
1187+
};
11811188
let buffer = Bytes::new();
1182-
let err = decode_page(page_header, buffer, Type::INT32, None).unwrap_err();
1189+
let err = decode_page(page_header.clone(), buffer.clone(), Type::INT32, None).unwrap_err();
11831190
assert_eq!(
11841191
err.to_string(),
11851192
"Parquet error: Page type INDEX_PAGE is not supported"
11861193
);
1194+
1195+
page_header.data_page_header_v2 = Some(DataPageHeaderV2 {
1196+
num_nulls: 0,
1197+
num_rows: 0,
1198+
num_values: 0,
1199+
encoding: Encoding::PLAIN,
1200+
definition_levels_byte_length: 11,
1201+
repetition_levels_byte_length: 0,
1202+
is_compressed: None,
1203+
statistics: None,
1204+
});
1205+
let err = decode_page(page_header, buffer, Type::INT32, None).unwrap_err();
1206+
assert!(
1207+
err.to_string()
1208+
.contains("DataPage v2 header contains implausible values")
1209+
);
11871210
}
11881211

11891212
#[test]

0 commit comments

Comments
 (0)