This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_0_313 in repository libpostgresql-jdbc-java.
commit 6452452581fb2d8983df6ab64ee867d2283d5046 Author: Kris Jurka <[email protected]> Date: Fri Aug 12 18:22:31 2005 +0000 Every execution of a Statement clears the warning chain from the previous execution. This was causing a memory leak by endlessly chaining warnings together that should have been discarded. Report and analysis by Albe Laurenz. --- org/postgresql/jdbc2/AbstractJdbc2Statement.java | 8 +++++++- org/postgresql/test/jdbc2/BatchExecuteTest.java | 14 +++++++++++++- org/postgresql/test/jdbc2/StatementTest.java | 15 +++++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java index f018cd2..04847f1 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Statement.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Statement.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.68.2.6 2005/05/08 23:52:00 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.68.2.7 2005/06/08 16:21:01 davec Exp $ * *------------------------------------------------------------------------- */ @@ -356,6 +356,9 @@ public abstract class AbstractJdbc2Statement implements BaseStatement } protected void execute(Query queryToExecute, ParameterList queryParameters, int flags) throws SQLException { + // Every statement execution clears any previous warnings. + clearWarnings(); + // Close any existing resultsets associated with this statement. while (firstUnclosedResult != null) { @@ -2412,6 +2415,9 @@ public abstract class AbstractJdbc2Statement implements BaseStatement { checkClosed(); + // Every statement execution clears any previous warnings. + clearWarnings(); + if (batchStatements == null || batchStatements.isEmpty()) return new int[0]; diff --git a/org/postgresql/test/jdbc2/BatchExecuteTest.java b/org/postgresql/test/jdbc2/BatchExecuteTest.java index 6e93ec5..bd1eddb 100644 --- a/org/postgresql/test/jdbc2/BatchExecuteTest.java +++ b/org/postgresql/test/jdbc2/BatchExecuteTest.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BatchExecuteTest.java,v 1.11 2004/11/09 08:54:00 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BatchExecuteTest.java,v 1.12 2005/01/11 08:25:48 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -241,4 +241,16 @@ public class BatchExecuteTest extends TestCase stmt.close(); } + + public void testWarningsAreCleared() throws SQLException + { + Statement stmt = con.createStatement(); + stmt.addBatch("CREATE TEMP TABLE unused (a int primary key)"); + stmt.executeBatch(); + // Execute an empty batch to clear warnings. + stmt.executeBatch(); + assertNull(stmt.getWarnings()); + stmt.close(); + } + } diff --git a/org/postgresql/test/jdbc2/StatementTest.java b/org/postgresql/test/jdbc2/StatementTest.java index 44ad2e6..781dc26 100644 --- a/org/postgresql/test/jdbc2/StatementTest.java +++ b/org/postgresql/test/jdbc2/StatementTest.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/StatementTest.java,v 1.14 2005/01/18 21:33:18 oliver Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/StatementTest.java,v 1.15 2005/01/27 11:30:48 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -306,5 +306,16 @@ public class StatementTest extends TestCase assertEquals(TestUtil.getDatabase(),rs.getString(1)); } } - + + public void testWarningsAreCleared() throws SQLException + { + Statement stmt = con.createStatement(); + // Will generate a NOTICE: for primary key index creation + stmt.execute("CREATE TEMP TABLE unused (a int primary key)"); + stmt.executeQuery("SELECT 1"); + // Executing another query should clear the warning from the first one. + assertNull(stmt.getWarnings()); + stmt.close(); + } + } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

