From 6d963a6b1032e7a17254d16ae38db42bf30b6645 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Wed, 30 Sep 2020 15:43:29 -0400 Subject: [PATCH] fix: Actually close unclosed results. Previously was not closing the first unclosed result fixes #1903 --- pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java | 5 ++--- .../test/java/org/postgresql/test/jdbc2/StatementTest.java | 7 +++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java index 40104ce87c..e8061375fc 100644 --- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java +++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java @@ -335,9 +335,8 @@ public boolean executeWithFlags(int flags) throws SQLException { private void closeUnclosedResults() throws SQLException { synchronized (this) { ResultWrapper resultWrapper = this.firstUnclosedResult; - ResultWrapper currentResult = this.result; - for (; resultWrapper != currentResult && resultWrapper != null; - resultWrapper = resultWrapper.getNext()) { + + for (; resultWrapper != null; resultWrapper = resultWrapper.getNext()) { PgResultSet rs = (PgResultSet) resultWrapper.getResultSet(); if (rs != null) { rs.closeInternally(); diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/StatementTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/StatementTest.java index c62939e301..95484cb3da 100644 --- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/StatementTest.java +++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/StatementTest.java @@ -94,6 +94,13 @@ public void testClose() throws SQLException { } } + @Test + public void testResultSetClosed() throws SQLException { + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("select 1"); + stmt.close(); + assertTrue(rs.isClosed()); + } /** * Closing a Statement twice is not an error. */