Commit 9ea6d0fc authored by Peter Eisentraut's avatar Peter Eisentraut

Information schema fixes:

Use pg_get_constraintdef instead of pg_constraint.consrc
Use UNION ALL instread of UNION
Make use of regclass type for getting OID of system catalogs
Add schema qualifications where necessary
Fix typos
parent f2f71070
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* *
* Copyright 2003, PostgreSQL Global Development Group * Copyright 2003, PostgreSQL Global Development Group
* *
* $Id: information_schema.sql,v 1.13 2003/10/16 23:46:17 petere Exp $ * $Id: information_schema.sql,v 1.14 2003/10/18 12:53:35 petere Exp $
*/ */
/* /*
...@@ -102,7 +102,8 @@ CREATE VIEW check_constraints AS ...@@ -102,7 +102,8 @@ CREATE VIEW check_constraints AS
SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog, SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog,
CAST(rs.nspname AS sql_identifier) AS constraint_schema, CAST(rs.nspname AS sql_identifier) AS constraint_schema,
CAST(con.conname AS sql_identifier) AS constraint_name, CAST(con.conname AS sql_identifier) AS constraint_name,
CAST(con.consrc AS character_data) AS check_clause CAST(substring(pg_get_constraintdef(con.oid) from 7) AS character_data)
AS check_clause
FROM pg_namespace rs, FROM pg_namespace rs,
pg_constraint con pg_constraint con
LEFT OUTER JOIN pg_class c ON (c.oid = con.conrelid) LEFT OUTER JOIN pg_class c ON (c.oid = con.conrelid)
...@@ -172,12 +173,12 @@ CREATE VIEW column_privileges AS ...@@ -172,12 +173,12 @@ CREATE VIEW column_privileges AS
pg_user u_grantor, pg_user u_grantor,
( (
SELECT usesysid, 0, usename FROM pg_user SELECT usesysid, 0, usename FROM pg_user
UNION UNION ALL
SELECT 0, grosysid, groname FROM pg_group SELECT 0, grosysid, groname FROM pg_group
UNION UNION ALL
SELECT 0, 0, 'PUBLIC' SELECT 0, 0, 'PUBLIC'
) AS grantee (usesysid, grosysid, name), ) AS grantee (usesysid, grosysid, name),
(SELECT 'SELECT' UNION SELECT 'INSERT' UNION SELECT 'UPDATE' UNION SELECT 'REFERENCES') AS pr (type) (SELECT 'SELECT' UNION ALL SELECT 'INSERT' UNION ALL SELECT 'UPDATE' UNION ALL SELECT 'REFERENCES') AS pr (type)
WHERE a.attrelid = c.oid WHERE a.attrelid = c.oid
AND c.relnamespace = nc.oid AND c.relnamespace = nc.oid
...@@ -403,10 +404,10 @@ CREATE VIEW constraint_column_usage AS ...@@ -403,10 +404,10 @@ CREATE VIEW constraint_column_usage AS
FROM pg_namespace nr, pg_class r, pg_attribute a, pg_depend d, pg_namespace nc, pg_constraint c FROM pg_namespace nr, pg_class r, pg_attribute a, pg_depend d, pg_namespace nc, pg_constraint c
WHERE nr.oid = r.relnamespace WHERE nr.oid = r.relnamespace
AND r.oid = a.attrelid AND r.oid = a.attrelid
AND d.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') AND d.refclassid = 'pg_catalog.pg_class'::regclass
AND d.refobjid = r.oid AND d.refobjid = r.oid
AND d.refobjsubid = a.attnum AND d.refobjsubid = a.attnum
AND d.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_constraint') AND d.classid = 'pg_catalog.pg_constraint'::regclass
AND d.objid = c.oid AND d.objid = c.oid
AND c.connamespace = nc.oid AND c.connamespace = nc.oid
AND c.contype = 'c' AND c.contype = 'c'
...@@ -414,18 +415,18 @@ CREATE VIEW constraint_column_usage AS ...@@ -414,18 +415,18 @@ CREATE VIEW constraint_column_usage AS
AND a.attnum > 0 AND a.attnum > 0
AND NOT a.attisdropped AND NOT a.attisdropped
UNION UNION ALL
/* unique/primary key/foreign key constraints */ /* unique/primary key/foreign key constraints */
SELECT nr.nspname, r.relname, r.relowner, a.attname, nc.nspname, c.conname SELECT nr.nspname, r.relname, r.relowner, a.attname, nc.nspname, c.conname
FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc, pg_constraint c, FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc, pg_constraint c,
(select 1 union select 2 union select 3 union select 4 union select 5 union (select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all
select 6 union select 7 union select 8 union select 9 union select 10 union select 6 union all select 7 union all select 8 union all select 9 union all select 10 union all
select 11 union select 12 union select 13 union select 14 union select 15 union select 11 union all select 12 union all select 13 union all select 14 union all select 15 union all
select 16 union select 17 union select 18 union select 19 union select 20 union select 16 union all select 17 union all select 18 union all select 19 union all select 20 union all
select 21 union select 22 union select 23 union select 24 union select 25 union select 21 union all select 22 union all select 23 union all select 24 union all select 25 union all
select 26 union select 27 union select 28 union select 29 union select 30 union select 26 union all select 27 union all select 28 union all select 29 union all select 30 union all
select 31 union select 32) AS pos(n) select 31 union all select 32) AS pos(n)
WHERE nr.oid = r.relnamespace WHERE nr.oid = r.relnamespace
AND r.oid = a.attrelid AND r.oid = a.attrelid
AND r.oid = c.conrelid AND r.oid = c.conrelid
...@@ -660,13 +661,13 @@ CREATE VIEW key_column_usage AS ...@@ -660,13 +661,13 @@ CREATE VIEW key_column_usage AS
FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc, pg_constraint c, FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc, pg_constraint c,
pg_user u, pg_user u,
(select 1 union select 2 union select 3 union select 4 union select 5 union (select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all
select 6 union select 7 union select 8 union select 9 union select 10 union select 6 union all select 7 union all select 8 union all select 9 union all select 10 union all
select 11 union select 12 union select 13 union select 14 union select 15 union select 11 union all select 12 union all select 13 union all select 14 union all select 15 union all
select 16 union select 17 union select 18 union select 19 union select 20 union select 16 union all select 17 union all select 18 union all select 19 union all select 20 union all
select 21 union select 22 union select 23 union select 24 union select 25 union select 21 union all select 22 union all select 23 union all select 24 union all select 25 union all
select 26 union select 27 union select 28 union select 29 union select 30 union select 26 union all select 27 union all select 28 union all select 29 union all select 30 union all
select 31 union select 32) AS pos(n) select 31 union all select 32) AS pos(n)
WHERE nr.oid = r.relnamespace WHERE nr.oid = r.relnamespace
AND r.oid = a.attrelid AND r.oid = a.attrelid
...@@ -726,13 +727,13 @@ CREATE VIEW parameters AS ...@@ -726,13 +727,13 @@ CREATE VIEW parameters AS
CAST(n + 1 AS sql_identifier) AS dtd_identifier CAST(n + 1 AS sql_identifier) AS dtd_identifier
FROM pg_namespace n, pg_proc p, pg_type t, pg_namespace nt, pg_user u, FROM pg_namespace n, pg_proc p, pg_type t, pg_namespace nt, pg_user u,
(select 0 union select 1 union select 2 union select 3 union select 4 union (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all
select 5 union select 6 union select 7 union select 8 union select 9 union select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all
select 10 union select 11 union select 12 union select 13 union select 14 union select 10 union all select 11 union all select 12 union all select 13 union all select 14 union all
select 15 union select 16 union select 17 union select 18 union select 19 union select 15 union all select 16 union all select 17 union all select 18 union all select 19 union all
select 20 union select 21 union select 22 union select 23 union select 24 union select 20 union all select 21 union all select 22 union all select 23 union all select 24 union all
select 25 union select 26 union select 27 union select 28 union select 29 union select 25 union all select 26 union all select 27 union all select 28 union all select 29 union all
select 30 union select 31) AS pos(n) select 30 union all select 31) AS pos(n)
WHERE n.oid = p.pronamespace AND p.pronargs > pos.n WHERE n.oid = p.pronamespace AND p.pronargs > pos.n
AND p.proargtypes[n] = t.oid AND t.typnamespace = nt.oid AND p.proargtypes[n] = t.oid AND t.typnamespace = nt.oid
...@@ -751,13 +752,13 @@ CREATE FUNCTION _pg_keyissubset(smallint[], smallint[]) RETURNS boolean ...@@ -751,13 +752,13 @@ CREATE FUNCTION _pg_keyissubset(smallint[], smallint[]) RETURNS boolean
LANGUAGE sql LANGUAGE sql
IMMUTABLE IMMUTABLE
RETURNS NULL ON NULL INPUT RETURNS NULL ON NULL INPUT
AS 'select $1[1] is null or ($1[1] = any ($2) and coalesce(_pg_keyissubset($1[2:array_upper($1,1)], $2), true))'; AS 'select $1[1] is null or ($1[1] = any ($2) and coalesce(information_schema._pg_keyissubset($1[2:array_upper($1,1)], $2), true))';
CREATE FUNCTION _pg_keysequal(smallint[], smallint[]) RETURNS boolean CREATE FUNCTION _pg_keysequal(smallint[], smallint[]) RETURNS boolean
LANGUAGE sql LANGUAGE sql
IMMUTABLE IMMUTABLE
RETURNS NULL ON NULL INPUT RETURNS NULL ON NULL INPUT
AS 'select _pg_keyissubset($1, $2) and _pg_keyissubset($2, $1)'; AS 'select information_schema._pg_keyissubset($1, $2) and information_schema._pg_keyissubset($2, $1)';
CREATE VIEW referential_constraints AS CREATE VIEW referential_constraints AS
SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog, SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog,
...@@ -830,7 +831,7 @@ CREATE VIEW role_column_grants AS ...@@ -830,7 +831,7 @@ CREATE VIEW role_column_grants AS
pg_namespace nc, pg_namespace nc,
pg_user u_grantor, pg_user u_grantor,
pg_group g_grantee, pg_group g_grantee,
(SELECT 'SELECT' UNION SELECT 'INSERT' UNION SELECT 'UPDATE' UNION SELECT 'REFERENCES') AS pr (type) (SELECT 'SELECT' UNION ALL SELECT 'INSERT' UNION ALL SELECT 'UPDATE' UNION ALL SELECT 'REFERENCES') AS pr (type)
WHERE a.attrelid = c.oid WHERE a.attrelid = c.oid
AND c.relnamespace = nc.oid AND c.relnamespace = nc.oid
...@@ -899,8 +900,8 @@ CREATE VIEW role_table_grants AS ...@@ -899,8 +900,8 @@ CREATE VIEW role_table_grants AS
pg_namespace nc, pg_namespace nc,
pg_user u_grantor, pg_user u_grantor,
pg_group g_grantee, pg_group g_grantee,
(SELECT 'SELECT' UNION SELECT 'DELETE' UNION SELECT 'INSERT' UNION SELECT 'UPDATE' (SELECT 'SELECT' UNION ALL SELECT 'DELETE' UNION ALL SELECT 'INSERT' UNION ALL SELECT 'UPDATE'
UNION SELECT 'REFERENCES' UNION SELECT 'RULE' UNION SELECT 'TRIGGER') AS pr (type) UNION ALL SELECT 'REFERENCES' UNION ALL SELECT 'RULE' UNION ALL SELECT 'TRIGGER') AS pr (type)
WHERE c.relnamespace = nc.oid WHERE c.relnamespace = nc.oid
AND c.relkind IN ('r', 'v') AND c.relkind IN ('r', 'v')
...@@ -958,9 +959,9 @@ CREATE VIEW routine_privileges AS ...@@ -958,9 +959,9 @@ CREATE VIEW routine_privileges AS
pg_user u_grantor, pg_user u_grantor,
( (
SELECT usesysid, 0, usename FROM pg_user SELECT usesysid, 0, usename FROM pg_user
UNION UNION ALL
SELECT 0, grosysid, groname FROM pg_group SELECT 0, grosysid, groname FROM pg_group
UNION UNION ALL
SELECT 0, 0, 'PUBLIC' SELECT 0, 0, 'PUBLIC'
) AS grantee (usesysid, grosysid, name) ) AS grantee (usesysid, grosysid, name)
...@@ -1118,7 +1119,7 @@ INSERT INTO sql_implementation_info VALUES ('23', 'CURSOR COMMIT BEHAVIOR', 1 ...@@ -1118,7 +1119,7 @@ INSERT INTO sql_implementation_info VALUES ('23', 'CURSOR COMMIT BEHAVIOR', 1
INSERT INTO sql_implementation_info VALUES ('2', 'DATA SOURCE NAME', NULL, '', NULL); INSERT INTO sql_implementation_info VALUES ('2', 'DATA SOURCE NAME', NULL, '', NULL);
INSERT INTO sql_implementation_info VALUES ('17', 'DBMS NAME', NULL, (select trim(trailing ' ' from substring(version() from '^[^0-9]*'))), NULL); INSERT INTO sql_implementation_info VALUES ('17', 'DBMS NAME', NULL, (select trim(trailing ' ' from substring(version() from '^[^0-9]*'))), NULL);
INSERT INTO sql_implementation_info VALUES ('18', 'DBMS VERSION', NULL, '???', NULL); -- filled by initdb INSERT INTO sql_implementation_info VALUES ('18', 'DBMS VERSION', NULL, '???', NULL); -- filled by initdb
INSERT INTO sql_implementation_info VALUES ('26', 'DEFAULT TRANSACTION ISOLATION', 2, NULL, 'READ COMMITED; user-settable'); INSERT INTO sql_implementation_info VALUES ('26', 'DEFAULT TRANSACTION ISOLATION', 2, NULL, 'READ COMMITTED; user-settable');
INSERT INTO sql_implementation_info VALUES ('28', 'IDENTIFIER CASE', 3, NULL, 'stored in mixed case - case sensitive'); INSERT INTO sql_implementation_info VALUES ('28', 'IDENTIFIER CASE', 3, NULL, 'stored in mixed case - case sensitive');
INSERT INTO sql_implementation_info VALUES ('85', 'NULL COLLATION', 0, NULL, 'nulls higher than non-nulls'); INSERT INTO sql_implementation_info VALUES ('85', 'NULL COLLATION', 0, NULL, 'nulls higher than non-nulls');
INSERT INTO sql_implementation_info VALUES ('13', 'SERVER NAME', NULL, '', NULL); INSERT INTO sql_implementation_info VALUES ('13', 'SERVER NAME', NULL, '', NULL);
...@@ -1194,7 +1195,7 @@ INSERT INTO sql_sizing VALUES (34, 'MAXIMUM CATALOG NAME LENGTH', 63, NULL); ...@@ -1194,7 +1195,7 @@ INSERT INTO sql_sizing VALUES (34, 'MAXIMUM CATALOG NAME LENGTH', 63, NULL);
INSERT INTO sql_sizing VALUES (30, 'MAXIMUM COLUMN NAME LENGTH', 63, NULL); INSERT INTO sql_sizing VALUES (30, 'MAXIMUM COLUMN NAME LENGTH', 63, NULL);
INSERT INTO sql_sizing VALUES (97, 'MAXIMUM COLUMNS IN GROUP BY', 0, NULL); INSERT INTO sql_sizing VALUES (97, 'MAXIMUM COLUMNS IN GROUP BY', 0, NULL);
INSERT INTO sql_sizing VALUES (99, 'MAXIMUM COLUMNS IN ORDER BY', 0, NULL); INSERT INTO sql_sizing VALUES (99, 'MAXIMUM COLUMNS IN ORDER BY', 0, NULL);
INSERT INTO sql_sizing VALUES (100, 'MAXIMUM COLUMNS IN SELECT', 0, NULL); INSERT INTO sql_sizing VALUES (100, 'MAXIMUM COLUMNS IN SELECT', 1664, NULL); -- match MaxTupleAttributeNumber
INSERT INTO sql_sizing VALUES (101, 'MAXIMUM COLUMNS IN TABLE', 1600, NULL); -- match MaxHeapAttributeNumber INSERT INTO sql_sizing VALUES (101, 'MAXIMUM COLUMNS IN TABLE', 1600, NULL); -- match MaxHeapAttributeNumber
INSERT INTO sql_sizing VALUES (1, 'MAXIMUM CONCURRENT ACTIVITIES', 0, NULL); INSERT INTO sql_sizing VALUES (1, 'MAXIMUM CONCURRENT ACTIVITIES', 0, NULL);
INSERT INTO sql_sizing VALUES (31, 'MAXIMUM CURSOR NAME LENGTH', 63, NULL); INSERT INTO sql_sizing VALUES (31, 'MAXIMUM CURSOR NAME LENGTH', 63, NULL);
...@@ -1304,13 +1305,13 @@ CREATE VIEW table_privileges AS ...@@ -1304,13 +1305,13 @@ CREATE VIEW table_privileges AS
pg_user u_grantor, pg_user u_grantor,
( (
SELECT usesysid, 0, usename FROM pg_user SELECT usesysid, 0, usename FROM pg_user
UNION UNION ALL
SELECT 0, grosysid, groname FROM pg_group SELECT 0, grosysid, groname FROM pg_group
UNION UNION ALL
SELECT 0, 0, 'PUBLIC' SELECT 0, 0, 'PUBLIC'
) AS grantee (usesysid, grosysid, name), ) AS grantee (usesysid, grosysid, name),
(SELECT 'SELECT' UNION SELECT 'DELETE' UNION SELECT 'INSERT' UNION SELECT 'UPDATE' (SELECT 'SELECT' UNION ALL SELECT 'DELETE' UNION ALL SELECT 'INSERT' UNION ALL SELECT 'UPDATE'
UNION SELECT 'REFERENCES' UNION SELECT 'RULE' UNION SELECT 'TRIGGER') AS pr (type) UNION ALL SELECT 'REFERENCES' UNION ALL SELECT 'RULE' UNION ALL SELECT 'TRIGGER') AS pr (type)
WHERE c.relnamespace = nc.oid WHERE c.relnamespace = nc.oid
AND c.relkind IN ('r', 'v') AND c.relkind IN ('r', 'v')
...@@ -1413,7 +1414,7 @@ CREATE VIEW triggers AS ...@@ -1413,7 +1414,7 @@ CREATE VIEW triggers AS
CAST(null AS sql_identifier) AS condition_reference_new_table CAST(null AS sql_identifier) AS condition_reference_new_table
FROM pg_namespace n, pg_class c, pg_trigger t, pg_user u, FROM pg_namespace n, pg_class c, pg_trigger t, pg_user u,
(SELECT 4, 'INSERT' UNION SELECT 8, 'DELETE' UNION SELECT 16, 'UPDATE') AS em (num, text) (SELECT 4, 'INSERT' UNION ALL SELECT 8, 'DELETE' UNION ALL SELECT 16, 'UPDATE') AS em (num, text)
WHERE n.oid = c.relnamespace WHERE n.oid = c.relnamespace
AND c.oid = t.tgrelid AND c.oid = t.tgrelid
...@@ -1477,13 +1478,13 @@ CREATE VIEW view_column_usage AS ...@@ -1477,13 +1478,13 @@ CREATE VIEW view_column_usage AS
WHERE nv.oid = v.relnamespace WHERE nv.oid = v.relnamespace
AND v.relkind = 'v' AND v.relkind = 'v'
AND v.oid = dv.refobjid AND v.oid = dv.refobjid
AND dv.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') AND dv.refclassid = 'pg_catalog.pg_class'::regclass
AND dv.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_rewrite') AND dv.classid = 'pg_catalog.pg_rewrite'::regclass
AND dv.deptype = 'i' AND dv.deptype = 'i'
AND dv.objid = dt.objid AND dv.objid = dt.objid
AND dv.refobjid <> dt.refobjid AND dv.refobjid <> dt.refobjid
AND dt.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_rewrite') AND dt.classid = 'pg_catalog.pg_rewrite'::regclass
AND dt.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') AND dt.refclassid = 'pg_catalog.pg_class'::regclass
AND dt.refobjid = t.oid AND dt.refobjid = t.oid
AND t.relnamespace = nt.oid AND t.relnamespace = nt.oid
AND t.relkind IN ('r', 'v') AND t.relkind IN ('r', 'v')
...@@ -1515,13 +1516,13 @@ CREATE VIEW view_table_usage AS ...@@ -1515,13 +1516,13 @@ CREATE VIEW view_table_usage AS
WHERE nv.oid = v.relnamespace WHERE nv.oid = v.relnamespace
AND v.relkind = 'v' AND v.relkind = 'v'
AND v.oid = dv.refobjid AND v.oid = dv.refobjid
AND dv.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') AND dv.refclassid = 'pg_catalog.pg_class'::regclass
AND dv.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_rewrite') AND dv.classid = 'pg_catalog.pg_rewrite'::regclass
AND dv.deptype = 'i' AND dv.deptype = 'i'
AND dv.objid = dt.objid AND dv.objid = dt.objid
AND dv.refobjid <> dt.refobjid AND dv.refobjid <> dt.refobjid
AND dt.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_rewrite') AND dt.classid = 'pg_catalog.pg_rewrite'::regclass
AND dt.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') AND dt.refclassid = 'pg_catalog.pg_class'::regclass
AND dt.refobjid = t.oid AND dt.refobjid = t.oid
AND t.relnamespace = nt.oid AND t.relnamespace = nt.oid
AND t.relkind IN ('r', 'v') AND t.relkind IN ('r', 'v')
...@@ -1582,11 +1583,11 @@ CREATE VIEW data_type_privileges AS ...@@ -1582,11 +1583,11 @@ CREATE VIEW data_type_privileges AS
FROM FROM
( (
SELECT table_schema, table_name, 'TABLE'::text, dtd_identifier FROM columns SELECT table_schema, table_name, 'TABLE'::text, dtd_identifier FROM columns
UNION UNION ALL
SELECT domain_schema, domain_name, 'DOMAIN'::text, dtd_identifier FROM domains SELECT domain_schema, domain_name, 'DOMAIN'::text, dtd_identifier FROM domains
UNION UNION ALL
SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM parameters SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM parameters
UNION UNION ALL
SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM routines SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM routines
) AS x (objschema, objname, objtype, objdtdid); ) AS x (objschema, objname, objtype, objdtdid);
...@@ -1645,28 +1646,28 @@ CREATE VIEW element_types AS ...@@ -1645,28 +1646,28 @@ CREATE VIEW element_types AS
AND c.relkind IN ('r', 'v') AND c.relkind IN ('r', 'v')
AND attnum > 0 AND NOT attisdropped AND attnum > 0 AND NOT attisdropped
UNION UNION ALL
/* domains */ /* domains */
SELECT t.typnamespace, t.typname, 'DOMAIN'::text, 1, t.typbasetype SELECT t.typnamespace, t.typname, 'DOMAIN'::text, 1, t.typbasetype
FROM pg_type t FROM pg_type t
WHERE t.typtype = 'd' WHERE t.typtype = 'd'
UNION UNION ALL
/* parameters */ /* parameters */
SELECT p.pronamespace, p.proname, 'ROUTINE'::text, pos.n + 1, p.proargtypes[n] SELECT p.pronamespace, p.proname, 'ROUTINE'::text, pos.n + 1, p.proargtypes[n]
FROM pg_proc p, FROM pg_proc p,
(select 0 union select 1 union select 2 union select 3 union select 4 union (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all
select 5 union select 6 union select 7 union select 8 union select 9 union select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all
select 10 union select 11 union select 12 union select 13 union select 14 union select 10 union all select 11 union all select 12 union all select 13 union all select 14 union all
select 15 union select 16 union select 17 union select 18 union select 19 union select 15 union all select 16 union all select 17 union all select 18 union all select 19 union all
select 20 union select 21 union select 22 union select 23 union select 24 union select 20 union all select 21 union all select 22 union all select 23 union all select 24 union all
select 25 union select 26 union select 27 union select 28 union select 29 union select 25 union all select 26 union all select 27 union all select 28 union all select 29 union all
select 30 union select 31) AS pos(n) select 30 union all select 31) AS pos(n)
WHERE p.pronargs > pos.n WHERE p.pronargs > pos.n
UNION UNION ALL
/* result types */ /* result types */
SELECT p.pronamespace, p.proname, 'ROUTINE'::text, 0, p.prorettype SELECT p.pronamespace, p.proname, 'ROUTINE'::text, 0, p.prorettype
...@@ -1680,7 +1681,7 @@ CREATE VIEW element_types AS ...@@ -1680,7 +1681,7 @@ CREATE VIEW element_types AS
AND at.typelem = bt.oid AND at.typelem = bt.oid
AND nbt.oid = bt.typnamespace AND nbt.oid = bt.typnamespace
AND (n.nspname, x.objname, x.objtype, x.objtypeid) IN AND (n.nspname, x.objname, x.objtype, x.objdtdid) IN
( SELECT object_schema, object_name, object_type, dtd_identifier ( SELECT object_schema, object_name, object_type, dtd_identifier
FROM data_type_privileges ); FROM data_type_privileges );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment