[libpostgresql-jdbc-java] 07/93: Plug some Statement leaks in metadata queries.
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Mon Jan 9 10:18:46 UTC 2017
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 <heikki.linnakangas at iki.fi>
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
More information about the pkg-java-commits
mailing list