From 87f4e7d2d018a8f1f50f9ef051aa6b86f5a73617 Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Tue, 14 Feb 2023 14:57:56 +0100 Subject: [PATCH] test(parquet); add slicing to parquet round trip tests --- tests/it/io/parquet/write.rs | 48 +++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/tests/it/io/parquet/write.rs b/tests/it/io/parquet/write.rs index d110298bc68..231af3b880e 100644 --- a/tests/it/io/parquet/write.rs +++ b/tests/it/io/parquet/write.rs @@ -43,36 +43,40 @@ fn round_trip_opt_stats( ), _ => unreachable!(), }; + let len = array.len(); - let field = Field::new("a1", array.data_type().clone(), true); - let schema = Schema::from(vec![field]); + for (start, len) in [(0usize, len), (2, len - 2)] { + let array = array.sliced(start, len); + let field = Field::new("a1", array.data_type().clone(), true); + let schema = Schema::from(vec![field]); - let options = WriteOptions { - write_statistics: true, - compression, - version, - data_pagesize_limit: None, - }; + let options = WriteOptions { + write_statistics: true, + compression, + version, + data_pagesize_limit: None, + }; - let iter = vec![Chunk::try_new(vec![array.clone()])]; + let iter = vec![Chunk::try_new(vec![array.clone()])]; - let row_groups = - RowGroupIterator::try_new(iter.into_iter(), &schema, options, vec![encodings])?; + let row_groups = + RowGroupIterator::try_new(iter.into_iter(), &schema, options, vec![encodings.clone()])?; - let writer = Cursor::new(vec![]); - let mut writer = FileWriter::try_new(writer, schema, options)?; + let writer = Cursor::new(vec![]); + let mut writer = FileWriter::try_new(writer, schema, options)?; - for group in row_groups { - writer.write(group?)?; - } - writer.end(None)?; + for group in row_groups { + writer.write(group?)?; + } + writer.end(None)?; - let data = writer.into_inner().into_inner(); + let data = writer.into_inner().into_inner(); - let (result, stats) = read_column(&mut Cursor::new(data), "a1")?; - assert_eq!(array.as_ref(), result.as_ref()); - if check_stats { - assert_eq!(statistics, stats); + let (result, stats) = read_column(&mut Cursor::new(data), "a1")?; + assert_eq!(array.as_ref(), result.as_ref()); + if check_stats { + assert_eq!(statistics, stats); + } } Ok(()) }