This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 21de30e881 ARROW-16529: [Java] Fix ArrowVectorIterator.hasNext()
21de30e881 is described below
commit 21de30e881d941ceba5fbe8b8768e80dd0b27721
Author: Todd Farmer <[email protected]>
AuthorDate: Wed May 11 14:30:55 2022 -0400
ARROW-16529: [Java] Fix ArrowVectorIterator.hasNext()
Calls to ArrowVectorIterator.hasNext() should return true until
ArrowVectorIterator.next() has been called, and the underlying ResultSet has
been fully consumed.
Closes #13107 from toddfarmer/tofarmer/fix-hasnext-for-empty-resultset
Authored-by: Todd Farmer <[email protected]>
Signed-off-by: David Li <[email protected]>
---
.../java/org/apache/arrow/adapter/jdbc/ArrowVectorIterator.java | 9 +--------
.../java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java | 6 +++++-
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/ArrowVectorIterator.java
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/ArrowVectorIterator.java
index ba0b700415..48102cc77c 100644
---
a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/ArrowVectorIterator.java
+++
b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/ArrowVectorIterator.java
@@ -163,14 +163,7 @@ public class ArrowVectorIterator implements
Iterator<VectorSchemaRoot>, AutoClos
@Override
public boolean hasNext() {
- if (readComplete) {
- return false;
- }
- try {
- return !resultSet.isLast();
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
+ return !readComplete;
}
/**
diff --git
a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
index 32db254ac3..075d986c87 100644
---
a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
+++
b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java
@@ -265,7 +265,11 @@ public class JdbcToArrowTest extends
AbstractJdbcToArrowTest {
.setReuseVectorSchemaRoot(reuseVectorSchemaRoot).build();
ArrowVectorIterator iter = JdbcToArrow.sqlToArrowVectorIterator(rs,
config);
- assertFalse("Iterator on zero row ResultSet should not haveNext()",
iter.hasNext());
+ assertTrue("Iterator on zero row ResultSet should haveNext() before use",
iter.hasNext());
+ VectorSchemaRoot root = iter.next();
+ assertNotNull("VectorSchemaRoot from first next() result should never be
null", root);
+ assertEquals("VectorSchemaRoot from empty ResultSet should have zero
rows", 0, root.getRowCount());
+ assertFalse("hasNext() should return false on empty ResultSets after
initial next() call", iter.hasNext());
}
private class FakeResultSet implements ResultSet {