This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to annotated tag REL9_3_1102 in repository libpostgresql-jdbc-java.
commit ec0c79a3b7af00e24e39600e15cd14c7745af959 Author: Heikki Linnakangas <[email protected]> Date: Wed Nov 13 22:31:43 2013 +0200 Plug some Statement leaks in metadata queries. These are fairly harmless, nobody calls these metadata methods frequently enough for the leaks to matter, and a regular Statement doesn't hold onto any server resources anyway. But let's appease Coverity. --- .../jdbc2/AbstractJdbc2DatabaseMetaData.java | 43 +++++++++++++++++----- org/postgresql/largeobject/LargeObjectManager.java | 5 ++- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java index 547edba..8a2087d 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java +++ b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java @@ -57,13 +57,16 @@ public abstract class AbstractJdbc2DatabaseMetaData } sql = "SELECT t1.typlen/t2.typlen FROM " + from + " t1.typelem=t2.oid AND t1.typname='oidvector'"; } - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); if (!rs.next()) { + stmt.close(); throw new PSQLException(GT.tr("Unable to determine a value for MaxIndexKeys due to missing system catalog data."), PSQLState.UNEXPECTED_ERROR); } INDEX_MAX_KEYS = rs.getInt(1); rs.close(); + stmt.close(); } return INDEX_MAX_KEYS; } @@ -80,13 +83,15 @@ public abstract class AbstractJdbc2DatabaseMetaData { sql = "SELECT typlen FROM pg_type WHERE typname='name'"; } - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); if (!rs.next()) { throw new PSQLException(GT.tr("Unable to find name datatype in the system catalogs."), PSQLState.UNEXPECTED_ERROR); } NAMEDATALEN = rs.getInt("typlen"); rs.close(); + stmt.close(); } return NAMEDATALEN - 1; } @@ -1797,7 +1802,8 @@ public abstract class AbstractJdbc2DatabaseMetaData byte isnullableUnknown[] = new byte[0]; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { byte schema[] = rs.getBytes("nspname"); @@ -1922,7 +1928,8 @@ public abstract class AbstractJdbc2DatabaseMetaData columnsql += "pg_catalog."; } columnsql += "pg_attribute a WHERE a.attrelid = " + returnTypeRelid + " AND a.attnum > 0 ORDER BY a.attnum "; - ResultSet columnrs = connection.createStatement().executeQuery(columnsql); + Statement columnstmt = connection.createStatement(); + ResultSet columnrs = columnstmt.executeQuery(columnsql); while (columnrs.next()) { int columnTypeOid = (int)columnrs.getLong("atttypid"); @@ -1948,9 +1955,11 @@ public abstract class AbstractJdbc2DatabaseMetaData v.add(tuple); } columnrs.close(); + columnstmt.close(); } } rs.close(); + stmt.close(); return (ResultSet)((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } @@ -2446,7 +2455,8 @@ public abstract class AbstractJdbc2DatabaseMetaData } sql += " ORDER BY nspname,c.relname,attnum "; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { byte[][] tuple = new byte[numberOfFields][]; @@ -2538,6 +2548,7 @@ public abstract class AbstractJdbc2DatabaseMetaData v.add(tuple); } rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } @@ -2688,7 +2699,8 @@ public abstract class AbstractJdbc2DatabaseMetaData } sql += " ORDER BY attname "; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { byte schemaName[] = rs.getBytes("nspname"); @@ -2745,6 +2757,7 @@ public abstract class AbstractJdbc2DatabaseMetaData } } rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } @@ -2819,7 +2832,8 @@ public abstract class AbstractJdbc2DatabaseMetaData } sql += " ORDER BY nspname, relname "; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { byte schema[] = rs.getBytes("nspname"); @@ -2870,6 +2884,7 @@ public abstract class AbstractJdbc2DatabaseMetaData } } rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } @@ -3164,7 +3179,8 @@ public abstract class AbstractJdbc2DatabaseMetaData " AND i.indisprimary " + " ORDER BY a.attnum "; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { byte tuple[][] = new byte[8][]; @@ -3185,6 +3201,8 @@ public abstract class AbstractJdbc2DatabaseMetaData tuple[7] = connection.encodeString(Integer.toString(java.sql.DatabaseMetaData.bestRowNotPseudo)); v.add(tuple); } + rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } @@ -3555,7 +3573,8 @@ public abstract class AbstractJdbc2DatabaseMetaData sql += ",keyseq"; - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); // returns the following columns // and some example data with a table defined as follows @@ -3691,6 +3710,8 @@ public abstract class AbstractJdbc2DatabaseMetaData tuples.add(tuple); } + rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, tuples); } @@ -3953,7 +3974,8 @@ public abstract class AbstractJdbc2DatabaseMetaData " WHERE NOT (typname ~ '^pg_toast_') "; } - ResultSet rs = connection.createStatement().executeQuery(sql); + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); // cache some results, this will keep memory useage down, and speed // things up a little. byte bZero[] = connection.encodeString("0"); @@ -4015,6 +4037,7 @@ public abstract class AbstractJdbc2DatabaseMetaData } rs.close(); + stmt.close(); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); } diff --git a/org/postgresql/largeobject/LargeObjectManager.java b/org/postgresql/largeobject/LargeObjectManager.java index e07cc14..9cec808 100644 --- a/org/postgresql/largeobject/LargeObjectManager.java +++ b/org/postgresql/largeobject/LargeObjectManager.java @@ -9,6 +9,7 @@ package org.postgresql.largeobject; import java.sql.ResultSet; +import java.sql.Statement; import java.sql.SQLException; import org.postgresql.core.BaseConnection; import org.postgresql.fastpath.Fastpath; @@ -132,13 +133,15 @@ public class LargeObjectManager sql += ")"; } - ResultSet res = conn.createStatement().executeQuery(sql); + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); if (res == null) throw new PSQLException(GT.tr("Failed to initialize LargeObject API"), PSQLState.SYSTEM_ERROR); fp.addFunctions(res); res.close(); + stmt.close(); conn.getLogger().debug("Large Object initialised"); } -- 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

