/** * Take the a String representing an array of ACLs and return * a Hashtable mapping the SQL permission name to a Vector of * usernames who have that permission. */ protected Hashtable parseACL(String aclArray, String owner) { if (aclArray == null) { //null acl is a shortcut for owner having full privs String perms = "arwdRxt"; if (connection.haveMinimumServerVersion("8.2")) { // 8.2 Removed the separate RULE permission perms = "arwdxt"; } else if (connection.haveMinimumServerVersion("8.4")) { // 8.4 Added a separate TRUNCATE permission perms = "arwdDxt"; } aclArray = "{" + owner + "=" + perms + "}"; } Vector acls = parseACLArray(aclArray); Hashtable privileges = new Hashtable(); for (int i = 0; i < acls.size(); i++) { String acl = (String)acls.elementAt(i); addACLPrivileges(acl, privileges); } return privileges; }
if (schema != null && !"".equals(schema)) sql += " AND n.nspname = " + escapeQuotes(schema); if (schema != null && !"".equals(schema)) where += " AND n.nspname = " + escapeQuotes(schema); sql += " AND ct.relname = " + escapeQuotes(table); " ORDER BY table_name, pk_name, key_seq"; return createMetaDataStatement().executeQuery(sql);
public java.sql.ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException { return getColumns(2, catalog, schemaPattern, tableNamePattern, columnNamePattern); }
if (schemaPattern != null && !"".equals(schemaPattern)) sql += " AND nspname LIKE " + escapeQuotes(schemaPattern); sql += " WHERE ''::text LIKE " + escapeQuotes(schemaPattern); return createMetaDataStatement().executeQuery(sql);
public java.sql.ResultSet getTableTypes() throws SQLException { String types[] = new String[tableTypeClauses.size()]; Enumeration e = tableTypeClauses.keys(); int i = 0; while (e.hasMoreElements()) { types[i++] = (String)e.nextElement(); } sortStringArray(types); Field f[] = new Field[1]; Vector v = new Vector(); f[0] = new Field("TABLE_TYPE", Oid.VARCHAR); for (i = 0; i < types.length; i++) { byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(types[i]); v.addElement(tuple); } return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
if (schemaPattern != null && !"".equals(schemaPattern)) sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern); sql += " AND c.relname LIKE " + escapeQuotes(tableNamePattern); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); sortStringArray(permNames); for (i = 0; i < permNames.length; i++) return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v);
" pg_catalog.pg_constraint con, "; if (connection.haveMinimumServerVersion("8.0")) { sql += " pg_catalog.generate_series(1, " + getMaxIndexKeys() + ") pos(n), "; } else { sql += " information_schema._pg_keypositions() pos(n), "; sql += " AND pkn.nspname = " + escapeQuotes(primarySchema); sql += " AND fkn.nspname = " + escapeQuotes(foreignSchema); sql += " AND pkc.relname = " + escapeQuotes(primaryTable); sql += " AND fkc.relname = " + escapeQuotes(foreignTable); return createMetaDataStatement().executeQuery(sql); where += " AND n1.nspname = " + escapeQuotes(primarySchema); where += " AND n2.nspname = " + escapeQuotes(foreignSchema); sql += "AND c1.relname=" + escapeQuotes(primaryTable); sql += "AND c2.relname=" + escapeQuotes(foreignTable); Vector tokens = tokenize(targs, "\\000"); if (tokens.size() > 0) return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, tuples);
public int getMaxTableNameLength() throws SQLException { return getMaxNameLength(); }
public java.sql.ResultSet getCatalogs() throws SQLException { Field f[] = new Field[1]; Vector v = new Vector(); f[0] = new Field("TABLE_CAT", Oid.VARCHAR); byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(connection.getCatalog()); v.addElement(tuple); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
public java.sql.ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException { return getImportedExportedKeys(null, null, null, catalog, schema, table); }
public int getMaxColumnsInIndex() throws SQLException { return getMaxIndexKeys(); }
if (schema != null && !"".equals(schema)) sql += " AND n.nspname = " + escapeQuotes(schema); sql += " AND c.relname = " + escapeQuotes(table); if (columnNamePattern != null && !"".equals(columnNamePattern)) sql += " AND a.attname LIKE " + escapeQuotes(columnNamePattern); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); sortStringArray(permNames); for (i = 0; i < permNames.length; i++) return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v);
" pg_catalog.pg_constraint con, "; if (connection.haveMinimumServerVersion("8.0")) { sql += " pg_catalog.generate_series(1, " + getMaxIndexKeys() + ") pos(n), "; } else { sql += " information_schema._pg_keypositions() pos(n), "; sql += " AND pkn.nspname = '" + escapeQuotes(primarySchema) + "' "; sql += " AND fkn.nspname = '" + escapeQuotes(foreignSchema) + "' "; sql += " AND pkc.relname = '" + escapeQuotes(primaryTable) + "' "; sql += " AND fkc.relname = '" + escapeQuotes(foreignTable) + "' "; return createMetaDataStatement().executeQuery(sql); where += " AND n1.nspname = '" + escapeQuotes(primarySchema) + "' "; where += " AND n2.nspname = '" + escapeQuotes(foreignSchema) + "' "; sql += "AND c1.relname='" + escapeQuotes(primaryTable) + "' "; sql += "AND c2.relname='" + escapeQuotes(foreignTable) + "' "; Vector tokens = tokenize(targs, "\\000"); if (tokens.size() > 0) return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, tuples);
public int getMaxProcedureNameLength() throws SQLException { return getMaxNameLength(); }
if (schemaPattern != null && !"".equals(schemaPattern)) sql += " AND nspname LIKE " + escapeQuotes(schemaPattern); sql += " WHERE ''::text LIKE " + escapeQuotes(schemaPattern); return createMetaDataStatement().executeQuery(sql);
public java.sql.ResultSet getTableTypes() throws SQLException { String types[] = new String[tableTypeClauses.size()]; Enumeration e = tableTypeClauses.keys(); int i = 0; while (e.hasMoreElements()) { types[i++] = (String)e.nextElement(); } sortStringArray(types); Field f[] = new Field[1]; Vector v = new Vector(); f[0] = new Field("TABLE_TYPE", Oid.VARCHAR); for (i = 0; i < types.length; i++) { byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(types[i]); v.addElement(tuple); } return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v);
public java.sql.ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException { return getImportedExportedKeys(catalog, schema, table, null, null, null); }
public int getMaxColumnsInIndex() throws SQLException { return getMaxIndexKeys(); }
if (schemaPattern != null && !"".equals(schemaPattern)) sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern); sql += " AND p.proname LIKE " + escapeQuotes(procedureNamePattern); sql += " WHERE p.proname LIKE " + escapeQuotes(procedureNamePattern); if (procedureNamePattern != null) sql += " WHERE p.proname LIKE " + escapeQuotes(procedureNamePattern); return createMetaDataStatement().executeQuery(sql);