? src/interfaces/jdbc/org/postgresql/Driver.java Index: src/interfaces/jdbc/org/postgresql//jdbc1/AbstractJdbc1DatabaseMetaData.java =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java,v retrieving revision 1.9 diff -c -r1.9 AbstractJdbc1DatabaseMetaData.java *** src/interfaces/jdbc/org/postgresql//jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/10/25 02:54:37 1.9 --- src/interfaces/jdbc/org/postgresql//jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/11/02 22:26:58 *************** *** 314,323 **** * as case sensitive and as a result store them in mixed case? * A JDBC-Compliant driver will always return false. * - *
Predicament - what do they mean by "SQL identifiers" - if it - * means the names of the tables and columns, then the answers - * given below are correct - otherwise I don't know. - * * @return true if so * @exception SQLException if a database access error occurs */ --- 314,319 ---- *************** *** 1725,1734 **** " LEFT JOIN pg_catalog.pg_namespace pn ON (c.relnamespace=pn.oid AND pn.nspname='pg_catalog') "+ " WHERE p.pronamespace=n.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern.toLowerCase())+"' "; } if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern.toLowerCase())+"' "; } sql += " ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME "; } else if (connection.haveMinimumServerVersion("7.1")) { --- 1721,1730 ---- " LEFT JOIN pg_catalog.pg_namespace pn ON (c.relnamespace=pn.oid AND pn.nspname='pg_catalog') "+ " WHERE p.pronamespace=n.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern)+"' "; } if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern)+"' "; } sql += " ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME "; } else if (connection.haveMinimumServerVersion("7.1")) { *************** *** 1737,1750 **** " LEFT JOIN pg_description d ON (p.oid=d.objoid) "+ " LEFT JOIN pg_class c ON (d.classoid=c.oid AND c.relname='pg_proc') "; if (procedureNamePattern != null) { ! sql += " WHERE p.proname LIKE '"+escapeQuotes(procedureNamePattern.toLowerCase())+"' "; } sql += " ORDER BY PROCEDURE_NAME "; } else { sql = "SELECT NULL AS PROCEDURE_CAT, NULL AS PROCEDURE_SCHEM, p.proname AS PROCEDURE_NAME, NULL, NULL, NULL, NULL AS REMARKS, "+java.sql.DatabaseMetaData.procedureReturnsResult+" AS PROCEDURE_TYPE "+ " FROM pg_proc p "; if (procedureNamePattern != null) { ! sql += " WHERE p.proname LIKE '"+escapeQuotes(procedureNamePattern.toLowerCase())+"' "; } sql += " ORDER BY PROCEDURE_NAME "; } --- 1733,1746 ---- " LEFT JOIN pg_description d ON (p.oid=d.objoid) "+ " LEFT JOIN pg_class c ON (d.classoid=c.oid AND c.relname='pg_proc') "; if (procedureNamePattern != null) { ! sql += " WHERE p.proname LIKE '"+escapeQuotes(procedureNamePattern)+"' "; } sql += " ORDER BY PROCEDURE_NAME "; } else { sql = "SELECT NULL AS PROCEDURE_CAT, NULL AS PROCEDURE_SCHEM, p.proname AS PROCEDURE_NAME, NULL, NULL, NULL, NULL AS REMARKS, "+java.sql.DatabaseMetaData.procedureReturnsResult+" AS PROCEDURE_TYPE "+ " FROM pg_proc p "; if (procedureNamePattern != null) { ! sql += " WHERE p.proname LIKE '"+escapeQuotes(procedureNamePattern)+"' "; } sql += " ORDER BY PROCEDURE_NAME "; } *************** *** 1822,1831 **** " FROM pg_catalog.pg_proc p,pg_catalog.pg_namespace n, pg_catalog.pg_type t "+ " WHERE p.pronamespace=n.oid AND p.prorettype=t.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern.toLowerCase())+"' "; } if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern.toLowerCase())+"' "; } sql += " ORDER BY n.nspname, p.proname "; } else { --- 1818,1827 ---- " FROM pg_catalog.pg_proc p,pg_catalog.pg_namespace n, pg_catalog.pg_type t "+ " WHERE p.pronamespace=n.oid AND p.prorettype=t.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern)+"' "; } if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern)+"' "; } sql += " ORDER BY n.nspname, p.proname "; } else { *************** *** 1833,1839 **** " FROM pg_proc p,pg_type t "+ " WHERE p.prorettype=t.oid "; if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern.toLowerCase())+"' "; } sql += " ORDER BY p.proname "; } --- 1829,1835 ---- " FROM pg_proc p,pg_type t "+ " WHERE p.prorettype=t.oid "; if (procedureNamePattern != null) { ! sql += " AND p.proname LIKE '"+escapeQuotes(procedureNamePattern)+"' "; } sql += " ORDER BY p.proname "; } *************** *** 1997,2006 **** " LEFT JOIN pg_catalog.pg_namespace dn ON (dn.oid=dc.relnamespace AND dn.nspname='pg_catalog') "+ " WHERE c.relnamespace = n.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! select += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern.toLowerCase())+"' "; } if (tableNamePattern != null) { ! select += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern.toLowerCase())+"' "; } orderby = " ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME "; } else { --- 1993,2002 ---- " LEFT JOIN pg_catalog.pg_namespace dn ON (dn.oid=dc.relnamespace AND dn.nspname='pg_catalog') "+ " WHERE c.relnamespace = n.oid "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! select += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern)+"' "; } if (tableNamePattern != null) { ! select += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern)+"' "; } orderby = " ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME "; } else { *************** *** 2290,2296 **** " LEFT JOIN pg_catalog.pg_namespace dn ON (dc.relnamespace=dn.oid AND dn.nspname='pg_catalog') "+ " WHERE a.attnum > 0 AND NOT a.attisdropped "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern.toLowerCase())+"' "; } } else if (connection.haveMinimumServerVersion("7.1")) { sql = "SELECT NULL::text AS nspname,c.relname,a.attname,a.atttypid,a.attnotnull,a.atttypmod,a.attlen,a.attnum,def.adsrc,dsc.description "+ --- 2286,2292 ---- " LEFT JOIN pg_catalog.pg_namespace dn ON (dc.relnamespace=dn.oid AND dn.nspname='pg_catalog') "+ " WHERE a.attnum > 0 AND NOT a.attisdropped "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern)+"' "; } } else if (connection.haveMinimumServerVersion("7.1")) { sql = "SELECT NULL::text AS nspname,c.relname,a.attname,a.atttypid,a.attnotnull,a.atttypmod,a.attlen,a.attnum,def.adsrc,dsc.description "+ *************** *** 2308,2317 **** } if (tableNamePattern != null && !"".equals(tableNamePattern)) { ! sql += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern.toLowerCase())+"' "; } if (columnNamePattern != null && !"".equals(columnNamePattern)) { ! sql += " AND a.attname LIKE '"+escapeQuotes(columnNamePattern.toLowerCase())+"' "; } sql += " ORDER BY nspname,relname,attname "; --- 2304,2313 ---- } if (tableNamePattern != null && !"".equals(tableNamePattern)) { ! sql += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern)+"' "; } if (columnNamePattern != null && !"".equals(columnNamePattern)) { ! sql += " AND a.attname LIKE '"+escapeQuotes(columnNamePattern)+"' "; } sql += " ORDER BY nspname,relname,attname "; *************** *** 2410,2417 **** if (columnNamePattern == null) columnNamePattern = "%"; - else - columnNamePattern = columnNamePattern.toLowerCase(); f[0] = new Field(connection, "TABLE_CAT", iVarcharOid, getMaxNameLength()); f[1] = new Field(connection, "TABLE_SCHEM", iVarcharOid, getMaxNameLength()); --- 2406,2411 ---- *************** *** 2432,2438 **** " AND c.relkind = 'r' "+ " AND a.attnum > 0 AND NOT a.attisdropped "; if (schema != null && !"".equals(schema)) { ! sql += " AND n.nspname = '"+escapeQuotes(schema.toLowerCase())+"' "; } } else { sql = "SELECT NULL::text AS nspname,c.relname,u.usename,c.relacl,a.attname "+ --- 2426,2432 ---- " AND c.relkind = 'r' "+ " AND a.attnum > 0 AND NOT a.attisdropped "; if (schema != null && !"".equals(schema)) { ! sql += " AND n.nspname = '"+escapeQuotes(schema)+"' "; } } else { sql = "SELECT NULL::text AS nspname,c.relname,u.usename,c.relacl,a.attname "+ *************** *** 2443,2451 **** " AND c.relkind = 'r' "; } ! sql += " AND c.relname = '"+escapeQuotes(table.toLowerCase())+"' "; if (columnNamePattern != null && !"".equals(columnNamePattern)) { ! sql += " AND a.attname LIKE '"+escapeQuotes(columnNamePattern.toLowerCase())+"' "; } sql += " ORDER BY attname "; --- 2437,2445 ---- " AND c.relkind = 'r' "; } ! sql += " AND c.relname = '"+escapeQuotes(table)+"' "; if (columnNamePattern != null && !"".equals(columnNamePattern)) { ! sql += " AND a.attname LIKE '"+escapeQuotes(columnNamePattern)+"' "; } sql += " ORDER BY attname "; *************** *** 2538,2544 **** " AND u.usesysid = c.relowner "+ " AND c.relkind = 'r' "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern.toLowerCase())+"' "; } } else { sql = "SELECT NULL::text AS nspname,c.relname,u.usename,c.relacl "+ --- 2532,2538 ---- " AND u.usesysid = c.relowner "+ " AND c.relkind = 'r' "; if (schemaPattern != null && !"".equals(schemaPattern)) { ! sql += " AND n.nspname LIKE '"+escapeQuotes(schemaPattern)+"' "; } } else { sql = "SELECT NULL::text AS nspname,c.relname,u.usename,c.relacl "+ *************** *** 2548,2554 **** } if (tableNamePattern != null && !"".equals(tableNamePattern)) { ! sql += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern.toLowerCase())+"' "; } sql += " ORDER BY nspname, relname "; --- 2542,2548 ---- } if (tableNamePattern != null && !"".equals(tableNamePattern)) { ! sql += " AND c.relname LIKE '"+escapeQuotes(tableNamePattern)+"' "; } sql += " ORDER BY nspname, relname "; *************** *** 2752,2758 **** from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_attribute a, pg_catalog.pg_index i "; where = " AND ct.relnamespace = n.oid "; if (schema != null && !"".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema.toLowerCase())+"' "; } } else { from = " FROM pg_class ct, pg_class ci, pg_attribute a, pg_index i "; --- 2746,2752 ---- from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_attribute a, pg_catalog.pg_index i "; where = " AND ct.relnamespace = n.oid "; if (schema != null && !"".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema)+"' "; } } else { from = " FROM pg_class ct, pg_class ci, pg_attribute a, pg_index i "; *************** *** 2761,2767 **** from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid "+ " AND a.attrelid=ci.oid AND i.indisprimary "+ ! " AND ct.relname = '"+escapeQuotes(table.toLowerCase())+"' "+ where+ " ORDER BY a.attnum "; --- 2755,2761 ---- from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid "+ " AND a.attrelid=ci.oid AND i.indisprimary "+ ! " AND ct.relname = '"+escapeQuotes(table)+"' "+ where+ " ORDER BY a.attnum "; *************** *** 2882,2888 **** from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_attribute a, pg_catalog.pg_index i "; where = " AND ct.relnamespace = n.oid "; if (schema != null && !"".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema.toLowerCase())+"' "; } } else { select = "SELECT NULL AS TABLE_CAT, NULL AS TABLE_SCHEM, "; --- 2876,2882 ---- from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_attribute a, pg_catalog.pg_index i "; where = " AND ct.relnamespace = n.oid "; if (schema != null && !"".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema)+"' "; } } else { select = "SELECT NULL AS TABLE_CAT, NULL AS TABLE_SCHEM, "; *************** *** 2896,2902 **** from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid "+ " AND a.attrelid=ci.oid AND i.indisprimary "+ ! " AND ct.relname = '"+escapeQuotes(table.toLowerCase())+"' "+ where+ " ORDER BY table_name, pk_name, key_seq"; return connection.createStatement().executeQuery(sql); --- 2890,2896 ---- from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid "+ " AND a.attrelid=ci.oid AND i.indisprimary "+ ! " AND ct.relname = '"+escapeQuotes(table)+"' "+ where+ " ORDER BY table_name, pk_name, key_seq"; return connection.createStatement().executeQuery(sql); *************** *** 3008,3017 **** from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_namespace n2, pg_catalog.pg_trigger t, pg_catalog.pg_trigger t1, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_class ic, pg_catalog.pg_proc p1, pg_catalog.pg_proc p2, pg_catalog.pg_index i, pg_catalog.pg_attribute a "; where = " AND c.relnamespace = n.oid AND c2.relnamespace=n2.oid "; if (primarySchema != null && !"".equals(primarySchema)) { ! where += " AND n.nspname = '"+escapeQuotes(primarySchema.toLowerCase())+"' "; } if (foreignSchema != null && !"".equals(foreignSchema)) { ! where += " AND n2.nspname = '"+escapeQuotes(foreignSchema.toLowerCase())+"' "; } } else { select = "SELECT DISTINCT NULL::text as pnspname, NULL::text as fnspname, "; --- 3002,3011 ---- from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_namespace n2, pg_catalog.pg_trigger t, pg_catalog.pg_trigger t1, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_class ic, pg_catalog.pg_proc p1, pg_catalog.pg_proc p2, pg_catalog.pg_index i, pg_catalog.pg_attribute a "; where = " AND c.relnamespace = n.oid AND c2.relnamespace=n2.oid "; if (primarySchema != null && !"".equals(primarySchema)) { ! where += " AND n.nspname = '"+escapeQuotes(primarySchema)+"' "; } if (foreignSchema != null && !"".equals(foreignSchema)) { ! where += " AND n2.nspname = '"+escapeQuotes(foreignSchema)+"' "; } } else { select = "SELECT DISTINCT NULL::text as pnspname, NULL::text as fnspname, "; *************** *** 3052,3061 **** + where; if (primaryTable != null) { ! sql += "AND c.relname='" + escapeQuotes(primaryTable.toLowerCase()) + "' "; } if (foreignTable != null) { ! sql += "AND c2.relname='" + escapeQuotes(foreignTable.toLowerCase()) + "' "; } sql += "ORDER BY "; --- 3046,3055 ---- + where; if (primaryTable != null) { ! sql += "AND c.relname='" + escapeQuotes(primaryTable) + "' "; } if (foreignTable != null) { ! sql += "AND c2.relname='" + escapeQuotes(foreignTable) + "' "; } sql += "ORDER BY "; *************** *** 3548,3554 **** from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_index i, pg_catalog.pg_attribute a, pg_catalog.pg_am am "; where = " AND n.oid = ct.relnamespace "; if (schema != null && ! "".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema.toLowerCase())+"' "; } } else { select = "SELECT NULL AS TABLE_CAT, NULL AS TABLE_SCHEM, "; --- 3542,3548 ---- from = " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_index i, pg_catalog.pg_attribute a, pg_catalog.pg_am am "; where = " AND n.oid = ct.relnamespace "; if (schema != null && ! "".equals(schema)) { ! where += " AND n.nspname = '"+escapeQuotes(schema)+"' "; } } else { select = "SELECT NULL AS TABLE_CAT, NULL AS TABLE_SCHEM, "; *************** *** 3573,3579 **** from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid AND a.attrelid=ci.oid AND ci.relam=am.oid "+ where+ ! " AND ct.relname = '"+escapeQuotes(tableName.toLowerCase())+"' "; if (unique) { sql += " AND i.indisunique "; --- 3567,3573 ---- from+ " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid AND a.attrelid=ci.oid AND ci.relam=am.oid "+ where+ ! " AND ct.relname = '"+escapeQuotes(tableName)+"' "; if (unique) { sql += " AND i.indisunique ";