postgresql-jdbc.git / summary / log / commit / refs

commit    baa02e8232f302e8b1a2ce90d47f9b28b3f40e28
Author:   Dave Cramer <davecramer@gmail.com>
Date:     Tue May 15 10:24:34 2012 +0000

    change Hashtable with Map from Mikko Tiihonen


org/postgresql/fastpath/Fastpath.java | 8 +- org/postgresql/jdbc2/AbstractJdbc2Connection.java | 4 +- .../jdbc2/AbstractJdbc2DatabaseMetaData.java | 86 +++++++++++----------- org/postgresql/jdbc2/AbstractJdbc2ResultSet.java | 4 +- .../jdbc2/AbstractJdbc2ResultSetMetaData.java | 1 - org/postgresql/util/ServerErrorMessage.java | 5 +- 6 files changed, 55 insertions(+), 53 deletions(-) diff --git a/org/postgresql/fastpath/Fastpath.java b/org/postgresql/fastpath/Fastpath.java index 30163d00..653f60b4 100644 --- a/org/postgresql/fastpath/Fastpath.java +++ b/org/postgresql/fastpath/Fastpath.java @@ -9,7 +9,9 @@ package org.postgresql.fastpath; import java.sql.SQLException; import java.sql.ResultSet; -import java.util.Hashtable; +import java.util.HashMap; +import java.util.Map; + import org.postgresql.core.BaseConnection; import org.postgresql.core.QueryExecutor; import org.postgresql.core.ParameterList; @@ -35,7 +37,7 @@ public class Fastpath // This maps the functions names to their id's (possible unique just // to a connection). - private final Hashtable func = new Hashtable(); + private final Map func = new HashMap(); private final QueryExecutor executor; private final BaseConnection connection; @@ -183,7 +185,7 @@ public class Fastpath * * <p>PostgreSQL stores the function id's and their corresponding names in * the pg_proc table. To speed things up locally, instead of querying each - * function from that table when required, a Hashtable is used. Also, only + * function from that table when required, a HashMap is used. Also, only * the function's required are entered into this table, keeping connection * times as fast as possible. * diff --git a/org/postgresql/jdbc2/AbstractJdbc2Connection.java b/org/postgresql/jdbc2/AbstractJdbc2Connection.java index 882a70f4..79015f0f 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Connection.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Connection.java @@ -500,7 +500,7 @@ public abstract class AbstractJdbc2Connection implements BaseConnection * This method is used internally to return an object based around * org.postgresql's more unique data types. * - * <p>It uses an internal Hashtable to get the handling class. If the + * <p>It uses an internal HashMap to get the handling class. If the * type is not supported, then an instance of org.postgresql.util.PGobject * is returned. * @@ -598,7 +598,7 @@ public abstract class AbstractJdbc2Connection implements BaseConnection _typeCache.addDataType(type, klass); } - // This initialises the objectTypes hashtable + // This initialises the objectTypes hash map private void initObjectTypes(Properties info) throws SQLException { // Add in the types that come packaged with the driver. diff --git a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java index 3000cca0..456cfd35 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java +++ b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java @@ -2114,7 +2114,7 @@ public abstract class AbstractJdbc2DatabaseMetaData select += " AND (false "; for (int i = 0; i < types.length; i++) { - Hashtable clauses = (Hashtable)tableTypeClauses.get(types[i]); + Map clauses = (Map)tableTypeClauses.get(types[i]); if (clauses != null) { String clause = (String)clauses.get(useSchemas); @@ -2128,66 +2128,66 @@ public abstract class AbstractJdbc2DatabaseMetaData return createMetaDataStatement().executeQuery(sql); } - private static final Hashtable tableTypeClauses; + private static final Map tableTypeClauses; static { - tableTypeClauses = new Hashtable(); - Hashtable ht = new Hashtable(); + tableTypeClauses = new HashMap(); + Map ht = new HashMap(); tableTypeClauses.put("TABLE", ht); ht.put("SCHEMAS", "c.relkind = 'r' AND n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'"); ht.put("NOSCHEMAS", "c.relkind = 'r' AND c.relname !~ '^pg_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("VIEW", ht); ht.put("SCHEMAS", "c.relkind = 'v' AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema'"); ht.put("NOSCHEMAS", "c.relkind = 'v' AND c.relname !~ '^pg_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("INDEX", ht); ht.put("SCHEMAS", "c.relkind = 'i' AND n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'"); ht.put("NOSCHEMAS", "c.relkind = 'i' AND c.relname !~ '^pg_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SEQUENCE", ht); ht.put("SCHEMAS", "c.relkind = 'S'"); ht.put("NOSCHEMAS", "c.relkind = 'S'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("TYPE", ht); ht.put("SCHEMAS", "c.relkind = 'c' AND n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'"); ht.put("NOSCHEMAS", "c.relkind = 'c' AND c.relname !~ '^pg_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SYSTEM TABLE", ht); ht.put("SCHEMAS", "c.relkind = 'r' AND (n.nspname = 'pg_catalog' OR n.nspname = 'information_schema')"); ht.put("NOSCHEMAS", "c.relkind = 'r' AND c.relname ~ '^pg_' AND c.relname !~ '^pg_toast_' AND c.relname !~ '^pg_temp_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SYSTEM TOAST TABLE", ht); ht.put("SCHEMAS", "c.relkind = 'r' AND n.nspname = 'pg_toast'"); ht.put("NOSCHEMAS", "c.relkind = 'r' AND c.relname ~ '^pg_toast_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SYSTEM TOAST INDEX", ht); ht.put("SCHEMAS", "c.relkind = 'i' AND n.nspname = 'pg_toast'"); ht.put("NOSCHEMAS", "c.relkind = 'i' AND c.relname ~ '^pg_toast_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SYSTEM VIEW", ht); ht.put("SCHEMAS", "c.relkind = 'v' AND (n.nspname = 'pg_catalog' OR n.nspname = 'information_schema') "); ht.put("NOSCHEMAS", "c.relkind = 'v' AND c.relname ~ '^pg_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("SYSTEM INDEX", ht); ht.put("SCHEMAS", "c.relkind = 'i' AND (n.nspname = 'pg_catalog' OR n.nspname = 'information_schema') "); ht.put("NOSCHEMAS", "c.relkind = 'v' AND c.relname ~ '^pg_' AND c.relname !~ '^pg_toast_' AND c.relname !~ '^pg_temp_'"); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("TEMPORARY TABLE", ht); ht.put("SCHEMAS", "c.relkind = 'r' AND n.nspname ~ '^pg_temp_' "); ht.put("NOSCHEMAS", "c.relkind = 'r' AND c.relname ~ '^pg_temp_' "); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("TEMPORARY INDEX", ht); ht.put("SCHEMAS", "c.relkind = 'i' AND n.nspname ~ '^pg_temp_' "); ht.put("NOSCHEMAS", "c.relkind = 'i' AND c.relname ~ '^pg_temp_' "); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("TEMPORARY VIEW", ht); ht.put("SCHEMAS", "c.relkind = 'v' AND n.nspname ~ '^pg_temp_' "); ht.put("NOSCHEMAS", "c.relkind = 'v' AND c.relname ~ '^pg_temp_' "); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("TEMPORARY SEQUENCE", ht); ht.put("SCHEMAS", "c.relkind = 'S' AND n.nspname ~ '^pg_temp_' "); ht.put("NOSCHEMAS", "c.relkind = 'S' AND c.relname ~ '^pg_temp_' "); - ht = new Hashtable(); + ht = new HashMap(); tableTypeClauses.put("FOREIGN TABLE", ht); ht.put("SCHEMAS", "c.relkind = 'f'"); ht.put("NOSCHEMAS", "c.relkind = 'f'"); @@ -2292,11 +2292,11 @@ public abstract class AbstractJdbc2DatabaseMetaData public java.sql.ResultSet getTableTypes() throws SQLException { String types[] = new String[tableTypeClauses.size()]; - Enumeration e = tableTypeClauses.keys(); + Iterator e = tableTypeClauses.keySet().iterator(); int i = 0; - while (e.hasMoreElements()) + while (e.hasNext()) { - types[i++] = (String)e.nextElement(); + types[i++] = (String)e.next(); } sortStringArray(types); @@ -2676,24 +2676,24 @@ public abstract class AbstractJdbc2DatabaseMetaData byte column[] = rs.getBytes("attname"); String owner = rs.getString("rolname"); String acl = rs.getString("attacl"); - Hashtable permissions = parseACL(acl, owner); + Map permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; - Enumeration e = permissions.keys(); + Iterator e = permissions.keySet().iterator(); int i = 0; - while (e.hasMoreElements()) + while (e.hasNext()) { - permNames[i++] = (String)e.nextElement(); + permNames[i++] = (String)e.next(); } sortStringArray(permNames); for (i = 0; i < permNames.length; i++) { byte[] privilege = connection.encodeString(permNames[i]); - Hashtable grantees = (Hashtable)permissions.get(permNames[i]); + Map grantees = (Map)permissions.get(permNames[i]); String granteeUsers[] = new String[grantees.size()]; - Enumeration g = grantees.keys(); + Iterator g = grantees.keySet().iterator(); int k = 0; - while (g.hasMoreElements()){ - granteeUsers[k++] = (String)g.nextElement(); + while (g.hasNext()){ + granteeUsers[k++] = (String)g.next(); } for (int j = 0; j < grantees.size(); j++) { @@ -2798,24 +2798,24 @@ public abstract class AbstractJdbc2DatabaseMetaData byte table[] = rs.getBytes("relname"); String owner = rs.getString("rolname"); String acl = rs.getString("relacl"); - Hashtable permissions = parseACL(acl, owner); + Map permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; - Enumeration e = permissions.keys(); + Iterator e = permissions.keySet().iterator(); int i = 0; - while (e.hasMoreElements()) + while (e.hasNext()) { - permNames[i++] = (String)e.nextElement(); + permNames[i++] = (String)e.next(); } sortStringArray(permNames); for (i = 0; i < permNames.length; i++) { byte[] privilege = connection.encodeString(permNames[i]); - Hashtable grantees = (Hashtable)permissions.get(permNames[i]); + Map grantees = (Map)permissions.get(permNames[i]); String granteeUsers[] = new String[grantees.size()]; - Enumeration g = grantees.keys(); + Iterator g = grantees.keySet().iterator(); int k = 0; - while (g.hasMoreElements()){ - granteeUsers[k++] = (String)g.nextElement(); + while (g.hasNext()){ + granteeUsers[k++] = (String)g.next(); } for (int j = 0; j < granteeUsers.length; j++) { @@ -2909,7 +2909,7 @@ public abstract class AbstractJdbc2DatabaseMetaData * Add the user described by the given acl to the Lists of users * with the privileges described by the acl. */ - private void addACLPrivileges(String acl, Hashtable privileges) { + private void addACLPrivileges(String acl, Map privileges) { int equalIndex = acl.lastIndexOf("="); int slashIndex = acl.lastIndexOf("/"); if (equalIndex == -1) @@ -2984,11 +2984,11 @@ public abstract class AbstractJdbc2DatabaseMetaData sqlpriv = "UNKNOWN"; } - Hashtable usersWithPermission = (Hashtable)privileges.get(sqlpriv); + Map usersWithPermission = (Map)privileges.get(sqlpriv); String[] grant = {grantor, grantable}; if (usersWithPermission == null) { - usersWithPermission = new Hashtable(); + usersWithPermission = new HashMap(); List permissionByGrantor = new ArrayList(); permissionByGrantor.add(grant); usersWithPermission.put(user, permissionByGrantor); @@ -3009,10 +3009,10 @@ public abstract class AbstractJdbc2DatabaseMetaData /** * Take the a String representing an array of ACLs and return - * a Hashtable mapping the SQL permission name to a List of + * a Map mapping the SQL permission name to a List of * usernames who have that permission. */ - public Hashtable parseACL(String aclArray, String owner) { + public Map parseACL(String aclArray, String owner) { if (aclArray == null) { //null acl is a shortcut for owner having full privs @@ -3028,7 +3028,7 @@ public abstract class AbstractJdbc2DatabaseMetaData } List acls = parseACLArray(aclArray); - Hashtable privileges = new Hashtable(); + Map privileges = new HashMap(); for (int i = 0; i < acls.size(); i++) { String acl = (String)acls.get(i); diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index 913f6743..5d840d8d 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -1004,7 +1004,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length); } - // clear the updateValues hashTable for the next set of updates + // clear the updateValues hash map for the next set of updates updateValues.clear(); } @@ -1615,7 +1615,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg } else { - // otherwise go and get the primary keys and create a hashtable of keys + // otherwise go and get the primary keys and create a list of keys String[] s = quotelessTableName(tableName); String quotelessTableName = s[0]; String quotelessSchemaName = s[1]; diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java index bd31544b..160f2d12 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java +++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java @@ -12,7 +12,6 @@ import org.postgresql.core.*; import org.postgresql.util.PSQLException; import org.postgresql.util.PSQLState; import java.sql.*; -import java.util.Hashtable; import org.postgresql.util.GT; public abstract class AbstractJdbc2ResultSetMetaData implements PGResultSetMetaData diff --git a/org/postgresql/util/ServerErrorMessage.java b/org/postgresql/util/ServerErrorMessage.java index 48aa42f5..ded31270 100644 --- a/org/postgresql/util/ServerErrorMessage.java +++ b/org/postgresql/util/ServerErrorMessage.java @@ -7,7 +7,8 @@ */ package org.postgresql.util; -import java.util.Hashtable; +import java.util.HashMap; +import java.util.Map; import java.io.Serializable; public class ServerErrorMessage implements Serializable @@ -26,7 +27,7 @@ public class ServerErrorMessage implements Serializable private static final Character INTERNAL_POSITION = new Character('p'); private static final Character INTERNAL_QUERY = new Character('q'); - private final Hashtable m_mesgParts = new Hashtable(); + private final Map m_mesgParts = new HashMap(); private final int verbosity; public ServerErrorMessage(String p_serverError, int verbosity) [parent: 1d512c68ce78]