patch to fix returning he information schema as a system object by Kris Jurka
authorDave Cramer <davec@fastcrypt.com>
Fri, 12 Dec 2003 18:27:51 +0000 (18:27 +0000)
committerDave Cramer <davec@fastcrypt.com>
Fri, 12 Dec 2003 18:27:51 +0000 (18:27 +0000)
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java

index 90c1d0071117c8b6ccea9ab1b272b696e048c7c6..d7161936904a24bac7b9aab63d7a1a21bc1836d4 100644 (file)
@@ -1971,15 +1971,15 @@ public abstract class AbstractJdbc1DatabaseMetaData
        if (connection.haveMinimumServerVersion("7.3")) {
            useSchemas = "SCHEMAS";
            select = "SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, c.relname AS TABLE_NAME, "+
-           " CASE n.nspname LIKE 'pg\\\\_%' "+
-           " WHEN true THEN CASE n.nspname "+
-           "   WHEN 'pg_catalog' THEN CASE c.relkind "+
+           " CASE n.nspname LIKE 'pg\\\\_%' OR n.nspname = 'information_schema' "+
+           " WHEN true THEN CASE "+
+           "   WHEN n.nspname = 'pg_catalog' OR n.nspname = 'information_schema' THEN CASE c.relkind "+
            "       WHEN 'r' THEN 'SYSTEM TABLE' "+
            "       WHEN 'v' THEN 'SYSTEM VIEW' "+
            "       WHEN 'i' THEN 'SYSTEM INDEX' "+
            "       ELSE NULL "+
            "       END "+
-           "   WHEN 'pg_toast' THEN CASE c.relkind "+
+           "   WHEN n.nspname = 'pg_toast' THEN CASE c.relkind "+
            "       WHEN 'r' THEN 'SYSTEM TOAST TABLE' "+
            "       WHEN 'i' THEN 'SYSTEM TOAST INDEX' "+
            "       ELSE NULL "+
@@ -2089,15 +2089,15 @@ public abstract class AbstractJdbc1DatabaseMetaData
        tableTypeClauses = new Hashtable();
        Hashtable ht = new Hashtable();
        tableTypeClauses.put("TABLE",ht);
-       ht.put("SCHEMAS","c.relkind = 'r' AND n.nspname NOT LIKE 'pg\\\\_%'");
+       ht.put("SCHEMAS","c.relkind = 'r' AND n.nspname NOT LIKE 'pg\\\\_%' AND n.nspname <> 'information_schema'");
        ht.put("NOSCHEMAS","c.relkind = 'r' AND c.relname NOT LIKE 'pg\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("VIEW",ht);
-       ht.put("SCHEMAS","c.relkind = 'v' AND n.nspname <> 'pg_catalog'");
+       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 NOT LIKE 'pg\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("INDEX",ht);
-       ht.put("SCHEMAS","c.relkind = 'i' AND n.nspname NOT LIKE 'pg\\\\_%'");
+       ht.put("SCHEMAS","c.relkind = 'i' AND n.nspname NOT LIKE 'pg\\\\_%' AND n.nspname <> 'information_schema'");
        ht.put("NOSCHEMAS","c.relkind = 'i' AND c.relname NOT LIKE 'pg\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("SEQUENCE",ht);
@@ -2105,7 +2105,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
        ht.put("NOSCHEMAS","c.relkind = 'S'");
        ht = new Hashtable();
        tableTypeClauses.put("SYSTEM TABLE",ht);
-       ht.put("SCHEMAS","c.relkind = 'r' AND n.nspname = 'pg_catalog'");
+       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 LIKE 'pg\\\\_%' AND c.relname NOT LIKE 'pg\\\\_toast\\\\_%' AND c.relname NOT LIKE 'pg\\\\_temp\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("SYSTEM TOAST TABLE",ht);
@@ -2117,11 +2117,11 @@ public abstract class AbstractJdbc1DatabaseMetaData
        ht.put("NOSCHEMAS","c.relkind = 'i' AND c.relname LIKE 'pg\\\\_toast\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("SYSTEM VIEW",ht);
-       ht.put("SCHEMAS","c.relkind = 'v' AND n.nspname = 'pg_catalog' ");
+       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 LIKE 'pg\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("SYSTEM INDEX",ht);
-       ht.put("SCHEMAS","c.relkind = 'i' AND n.nspname = 'pg_catalog'");
+       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 LIKE 'pg\\\\_%' AND c.relname NOT LIKE 'pg\\\\_toast\\\\_%' AND c.relname NOT LIKE 'pg\\\\_temp\\\\_%'");
        ht = new Hashtable();
        tableTypeClauses.put("TEMPORARY TABLE",ht);