From 594a8afff487585e9aac5a7888cb56dbc58613d1 Mon Sep 17 00:00:00 2001 From: illumination-k Date: Thu, 11 Nov 2021 03:31:12 +0900 Subject: [PATCH 1/3] Allow projection to be set to 0 in io::ipc::read::reader::FileReader::new --- src/io/ipc/read/reader.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/io/ipc/read/reader.rs b/src/io/ipc/read/reader.rs index 0f025e4451c..03e22e96cba 100644 --- a/src/io/ipc/read/reader.rs +++ b/src/io/ipc/read/reader.rs @@ -236,13 +236,11 @@ impl FileReader { /// Panics iff the projection is not in increasing order (e.g. `[1, 0]` nor `[0, 1, 1]` are valid) pub fn new(reader: R, metadata: FileMetadata, projection: Option>) -> Self { if let Some(projection) = projection.as_ref() { - let _ = projection.iter().fold(0, |mut acc, v| { + let _ = projection.windows(2).for_each(|x| { assert!( - *v > acc, + x[0] < x[1], "The projection on IPC must be ordered and non-overlapping" ); - acc = *v; - acc }); } let projection = projection.map(|projection| { From acfa396ea4451ee067c962c881dfe6c539a7c8f5 Mon Sep 17 00:00:00 2001 From: illumination-k Date: Thu, 11 Nov 2021 03:53:38 +0900 Subject: [PATCH 2/3] fix: for_each returns (); --- src/io/ipc/read/reader.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/io/ipc/read/reader.rs b/src/io/ipc/read/reader.rs index 03e22e96cba..e9a8328cfde 100644 --- a/src/io/ipc/read/reader.rs +++ b/src/io/ipc/read/reader.rs @@ -236,7 +236,7 @@ impl FileReader { /// Panics iff the projection is not in increasing order (e.g. `[1, 0]` nor `[0, 1, 1]` are valid) pub fn new(reader: R, metadata: FileMetadata, projection: Option>) -> Self { if let Some(projection) = projection.as_ref() { - let _ = projection.windows(2).for_each(|x| { + projection.windows(2).for_each(|x| { assert!( x[0] < x[1], "The projection on IPC must be ordered and non-overlapping" From 83b8db07160f3463317e5933ac72daa2adfeac5d Mon Sep 17 00:00:00 2001 From: illumination-k Date: Thu, 11 Nov 2021 04:18:04 +0900 Subject: [PATCH 3/3] change 1 to 0 in https://github.com/jorgecarleitao/arrow2/blob/main/tests/it/io/ipc/read/file.rs#L181 --- tests/it/io/ipc/read/file.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/it/io/ipc/read/file.rs b/tests/it/io/ipc/read/file.rs index 602c4151a9a..c9f067ccc14 100644 --- a/tests/it/io/ipc/read/file.rs +++ b/tests/it/io/ipc/read/file.rs @@ -178,5 +178,5 @@ fn test_projection(version: &str, file_name: &str, column: usize) -> Result<()> fn read_projected() -> Result<()> { test_projection("1.0.0-littleendian", "generated_primitive", 1)?; test_projection("1.0.0-littleendian", "generated_dictionary", 2)?; - test_projection("1.0.0-littleendian", "generated_nested", 1) + test_projection("1.0.0-littleendian", "generated_nested", 0) }