From 8727029969dd5103058eae62d36c23ccd1a7f8d3 Mon Sep 17 00:00:00 2001
From: Dave Cramer <davec@fastcrypt.com>
Date: Fri, 12 Dec 2003 18:27:51 +0000
Subject: [PATCH] patch to fix returning he information schema as a system
 object by Kris Jurka

---
 .../jdbc1/AbstractJdbc1DatabaseMetaData.java  | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
index 90c1d007111..d7161936904 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
@@ -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);
-- 
GitLab