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
