This is an automated email from the ASF dual-hosted git repository.
gangwu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-java.git
The following commit(s) were added to refs/heads/master by this push:
new 26268c941 PARQUET-2498: Vector IO to handle empty range list (#1374)
26268c941 is described below
commit 26268c941203c889ff13f701d577406b9e6b683b
Author: Steve Loughran <[email protected]>
AuthorDate: Thu Jun 13 05:45:56 2024 +0100
PARQUET-2498: Vector IO to handle empty range list (#1374)
Empty range lists currently trigger IllegalArgumentException,
however some (integration test) codepaths attempt to do this.
Downgrading the empty list case to a no-op resolves this.
Contributed by Steve Loughran
Change-Id: I07ed7e8f0628e170441a2d0679e822d23cfb1440
---
.../apache/parquet/hadoop/util/wrapped/io/VectorIoBridge.java | 7 ++++++-
.../parquet/hadoop/util/wrapped/io/TestVectorIoBridge.java | 11 +++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/wrapped/io/VectorIoBridge.java
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/wrapped/io/VectorIoBridge.java
index 3523a12ab..7720f7fe9 100644
---
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/wrapped/io/VectorIoBridge.java
+++
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/wrapped/io/VectorIoBridge.java
@@ -362,7 +362,12 @@ public final class VectorIoBridge {
private static List<ParquetFileRange> validateAndSortRanges(final
List<ParquetFileRange> input) {
requireNonNull(input, "Null input list");
- checkArgument(!input.isEmpty(), "Empty input list");
+ if (input.isEmpty()) {
+ // this may seem a pathological case, but it
+ // has surfaced during testing.
+ LOG.debug("Empty input list");
+ return input;
+ }
final List<ParquetFileRange> sortedRanges;
if (input.size() == 1) {
diff --git
a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/wrapped/io/TestVectorIoBridge.java
b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/wrapped/io/TestVectorIoBridge.java
index ad97851ba..6d7b92fc7 100644
---
a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/wrapped/io/TestVectorIoBridge.java
+++
b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/wrapped/io/TestVectorIoBridge.java
@@ -305,6 +305,17 @@ public class TestVectorIoBridge {
verifyExceptionalVectoredRead(null, NullPointerException.class);
}
+ /**
+ * An empty range list is permitted.
+ */
+ @Test
+ public void testEmptyRangeList() throws Exception {
+ List<ParquetFileRange> fileRanges = new ArrayList<>();
+ try (FSDataInputStream in = openTestFile()) {
+ readVectored(in, fileRanges);
+ }
+ }
+
@Test
public void testSomeRandomNonOverlappingRanges() throws Exception {
List<ParquetFileRange> fileRanges = ranges(