Index: org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java,v retrieving revision 1.14 diff -r1.14 AbstractJdbc3DatabaseMetaData.java 153,154c153,154 < * @param catalog a catalog name; "" retrieves those without a catalog; < * null means drop catalog name from the selection criteria --- > * @param catalog a catalog name; For org.postgresql, this is ignored, and > * should be set to null 166c166,191 < throw org.postgresql.Driver.notImplemented(this.getClass(), "getSuperTables(String,String,String,String)"); --- > String select; > String orderby; > if (connection.haveMinimumServerVersion("8.0")) > { > select = "SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, t.relname AS TABLE_NAME, " + > " st.relname AS SUPERTABLE_NAME " + > " FROM pg_catalog.pg_inherits AS i " + > " JOIN pg_catalog.pg_class AS t ON i.inhrelid = t.oid " + > " JOIN pg_catalog.pg_namespace AS n ON t.relnamespace = n.oid " + > " JOIN pg_catalog.pg_class AS st ON i.inhparent = st.oid"; > if (schemaPattern != null && !"".equals(schemaPattern)) > { > select += " AND n.nspname LIKE '" + escapeQuotes(schemaPattern) + "' "; > } > if (tableNamePattern != null) > { > select += " AND t.relname LIKE '" + escapeQuotes(tableNamePattern) + "' "; > } > orderby = " ORDER BY TABLE_SCHEM,TABLE_NAME "; > } > else > { > throw org.postgresql.Driver.notImplemented(this.getClass(), "getSuperTables(String,String,String,String)"); > } > String sql = select + orderby; > return createMetaDataStatement().executeQuery(sql); Index: org/postgresql/test/jdbc3/DatabaseMetaDataTest.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/test/jdbc3/DatabaseMetaDataTest.java,v retrieving revision 1.2 diff -r1.2 DatabaseMetaDataTest.java 12a13 > import org.postgresql.util.PSQLException; 28a30 > Statement stmt = _conn.createStatement(); 30d31 < Statement stmt = _conn.createStatement(); 33a35,36 > stmt.execute("CREATE TABLE supertab ()"); > stmt.execute("CREATE TABLE subtab () INHERITS (supertab)"); 37a41,43 > Statement stmt = _conn.createStatement(); > stmt.execute("DROP TABLE subtab"); > stmt.execute("DROP TABLE supertab"); 39d44 < Statement stmt = _conn.createStatement(); 60a66,95 > public void testGetSuperTables() throws Exception > { > DatabaseMetaData dbmd = _conn.getMetaData(); > if (TestUtil.haveMinimumServerVersion(_conn, "8.0")) > { > ResultSet rs; > rs = dbmd.getSuperTables(null, null, null); > assertTrue(rs.next()); > assertEquals(null, rs.getString("TABLE_CAT")); > assertEquals("public", rs.getString("TABLE_SCHEM")); > assertEquals("subtab", rs.getString("TABLE_NAME")); > assertEquals("supertab", rs.getString("SUPERTABLE_NAME")); > assertFalse(rs.next()); > rs = dbmd.getSuperTables(null, "%lic", "sub%"); > assertTrue(rs.next()); > rs = dbmd.getSuperTables(null, null, "sup%"); > assertFalse(rs.next()); > } > else > { > try > { > dbmd.getSuperTables(null, null, null); > fail(); > } > catch (PSQLException e) > { > } > } > }