aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
parent8b583ba2d7a02efa6cb0d77c4317ca89832c027e (diff)
downloadpostgresql-8ae6b4c49f06d581395d36f649ddec2a82bea009.tar.gz
postgresql-8ae6b4c49f06d581395d36f649ddec2a82bea009.zip
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.
Diffstat (limited to 'src')
-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