summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2009-01-14 21:12:09 +0000
committerPeter Eisentraut <peter_e@gmx.net>2009-01-14 21:12:09 +0000
commit8ae6b4c49f06d581395d36f649ddec2a82bea009 (patch)
treef0c1b583bebef21dd1ec632a1c5b2bcfb97830e8
parent8b583ba2d7a02efa6cb0d77c4317ca89832c027e (diff)
Make the columns is_insertable_into and is_updatable behave uniformly
correctly. They are supposed to examine which kinds of rules are present, which they did in some of the info schema views but not in others.
-rw-r--r--src/backend/catalog/information_schema.sql8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql
index 5194d824892..5bb46eedf8a 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -4,7 +4,7 @@
*
* Copyright (c) 2003-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.48 2009/01/01 17:23:37 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.49 2009/01/14 21:12:09 petere Exp $
*/
/*
@@ -655,6 +655,9 @@ CREATE VIEW columns AS
CAST(null AS character_data) AS generation_expression,
CAST(CASE WHEN c.relkind = 'r'
+ OR (c.relkind = 'v'
+ AND EXISTS (SELECT 1 FROM pg_rewrite WHERE ev_class = c.oid AND ev_type = '2' AND is_instead)
+ AND EXISTS (SELECT 1 FROM pg_rewrite WHERE ev_class = c.oid AND ev_type = '4' AND is_instead))
THEN 'YES' ELSE 'NO' END AS character_data) AS is_updatable
FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum),
@@ -1882,7 +1885,10 @@ CREATE VIEW tables AS
CAST(null AS sql_identifier) AS user_defined_type_name,
CAST(CASE WHEN c.relkind = 'r'
+ OR (c.relkind = 'v'
+ AND EXISTS (SELECT 1 FROM pg_rewrite WHERE ev_class = c.oid AND ev_type = '3' AND is_instead))
THEN 'YES' ELSE 'NO' END AS character_data) AS is_insertable_into,
+
CAST('NO' AS character_data) AS is_typed,
CAST(
CASE WHEN nc.oid = pg_my_temp_schema() THEN 'PRESERVE' -- FIXME