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 {

Reply via email to