This is an automated email from the ASF dual-hosted git repository.

jhyde pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite-avatica.git

commit 02c5fa1530586076fef3a15cffd31ea0e61ba98a
Author: Greg Hart <[email protected]>
AuthorDate: Mon Dec 19 11:08:23 2022 -0800

    [CALCITE-5443] After Statement.getMoreResults() has returned false, 
Statement.getUpdateCount() should return -1
    
    Close apache/calcite-avatica#201
---
 .../apache/calcite/avatica/AvaticaStatement.java   |  1 +
 .../calcite/avatica/AvaticaStatementTest.java      | 28 ++++++++++++++++++++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java 
b/core/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
index 1eff01bad..01fac3109 100644
--- a/core/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
+++ b/core/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
@@ -476,6 +476,7 @@ public abstract class AvaticaStatement
     if (openResultSet != null) {
       openResultSet.close();
     }
+    updateCount = -1;
     return false;
   }
 
diff --git 
a/core/src/test/java/org/apache/calcite/avatica/AvaticaStatementTest.java 
b/core/src/test/java/org/apache/calcite/avatica/AvaticaStatementTest.java
index 26ea2ea28..985f91395 100644
--- a/core/src/test/java/org/apache/calcite/avatica/AvaticaStatementTest.java
+++ b/core/src/test/java/org/apache/calcite/avatica/AvaticaStatementTest.java
@@ -54,25 +54,49 @@ public class AvaticaStatementTest {
     assertArrayEquals(longValues, statement.executeLargeBatch());
   }
 
-  @Test public void testGetMoreResults() throws SQLException {
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-2140>[CALCITE-2140]
+   * Basic implementation of Statement#getMoreResults()</a> that verifies 
result
+   * sets are closed after a call to {@code getMoreResults()}. */
+  @Test public void testGetMoreResultsWithResultSet() throws SQLException {
     AvaticaResultSet resultSet = mock(AvaticaResultSet.class);
     statement.openResultSet = resultSet;
 
     doCallRealMethod().when(statement).onResultSetClose(any(ResultSet.class));
     when(statement.getMoreResults()).thenCallRealMethod();
     when(statement.getMoreResults(anyInt())).thenCallRealMethod();
+    when(statement.getUpdateCount()).thenCallRealMethod();
 
     assertFalse(statement.getMoreResults());
+    assertEquals(-1, statement.getUpdateCount());
     verify(resultSet).close();
   }
 
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-5443>[CALCITE-5443]
+   * After Statement.getMoreResults() has returned false,
+   * Statement.getUpdateCount() should return -1</a> that verifies that the
+   * update count is reset after a call to
+   * {@link java.sql.Statement#getMoreResults()}. */
+  @Test public void testGetMoreResultsWithUpdateCount() throws SQLException {
+    statement.updateCount = 1;
+
+    when(statement.getMoreResults()).thenCallRealMethod();
+    when(statement.getMoreResults(anyInt())).thenCallRealMethod();
+    when(statement.getUpdateCount()).thenCallRealMethod();
+    when(statement.getLargeUpdateCount()).thenCallRealMethod();
+
+    assertFalse(statement.getMoreResults());
+    assertEquals(-1, statement.getUpdateCount());
+    assertEquals(-1, statement.getLargeUpdateCount());
+  }
+
   @Test public void testFetchSize() throws SQLException {
     doCallRealMethod().when(statement).setFetchSize(anyInt());
     when(statement.getFetchSize()).thenCallRealMethod();
     statement.setFetchSize(50);
     assertEquals(50, statement.getFetchSize());
   }
-
 }
 
 // End AvaticaStatementTest.java

Reply via email to