Skip to content

Commit 262e821

Browse files
committed
Update information_schema queries and system views for new relkind.
The original table partitioning patch overlooked this. Discussion: http://postgr.es/m/CAG1_KcDJiZB=L6yOUO_bVufj2q2851_xdkfhw0JdcD_2VtKssw@mail.gmail.com Keith Fiske and Amit Langote, adjusted by me.
1 parent 9a34123 commit 262e821

File tree

3 files changed

+24
-24
lines changed

3 files changed

+24
-24
lines changed

src/backend/catalog/information_schema.sql

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ CREATE VIEW check_constraints AS
453453
AND a.attnum > 0
454454
AND NOT a.attisdropped
455455
AND a.attnotnull
456-
AND r.relkind = 'r'
456+
AND r.relkind IN ('r', 'P')
457457
AND pg_has_role(r.relowner, 'USAGE');
458458

459459
GRANT SELECT ON check_constraints TO PUBLIC;
@@ -525,7 +525,7 @@ CREATE VIEW column_domain_usage AS
525525
AND a.attrelid = c.oid
526526
AND a.atttypid = t.oid
527527
AND t.typtype = 'd'
528-
AND c.relkind IN ('r', 'v', 'f')
528+
AND c.relkind IN ('r', 'v', 'f', 'P')
529529
AND a.attnum > 0
530530
AND NOT a.attisdropped
531531
AND pg_has_role(t.typowner, 'USAGE');
@@ -564,7 +564,7 @@ CREATE VIEW column_privileges AS
564564
pr_c.relowner
565565
FROM (SELECT oid, relname, relnamespace, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).*
566566
FROM pg_class
567-
WHERE relkind IN ('r', 'v', 'f')
567+
WHERE relkind IN ('r', 'v', 'f', 'P')
568568
) pr_c (oid, relname, relnamespace, relowner, grantor, grantee, prtype, grantable),
569569
pg_attribute a
570570
WHERE a.attrelid = pr_c.oid
@@ -586,7 +586,7 @@ CREATE VIEW column_privileges AS
586586
) pr_a (attrelid, attname, grantor, grantee, prtype, grantable),
587587
pg_class c
588588
WHERE pr_a.attrelid = c.oid
589-
AND relkind IN ('r', 'v', 'f')
589+
AND relkind IN ('r', 'v', 'f', 'P')
590590
) x,
591591
pg_namespace nc,
592592
pg_authid u_grantor,
@@ -629,7 +629,7 @@ CREATE VIEW column_udt_usage AS
629629
WHERE a.attrelid = c.oid
630630
AND a.atttypid = t.oid
631631
AND nc.oid = c.relnamespace
632-
AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f')
632+
AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f', 'P')
633633
AND pg_has_role(coalesce(bt.typowner, t.typowner), 'USAGE');
634634

635635
GRANT SELECT ON column_udt_usage TO PUBLIC;
@@ -738,7 +738,7 @@ CREATE VIEW columns AS
738738
CAST('NEVER' AS character_data) AS is_generated,
739739
CAST(null AS character_data) AS generation_expression,
740740

741-
CAST(CASE WHEN c.relkind = 'r' OR
741+
CAST(CASE WHEN c.relkind IN ('r', 'P') OR
742742
(c.relkind IN ('v', 'f') AND
743743
pg_column_is_updatable(c.oid, a.attnum, false))
744744
THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_updatable
@@ -753,7 +753,7 @@ CREATE VIEW columns AS
753753

754754
WHERE (NOT pg_is_other_temp_schema(nc.oid))
755755

756-
AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f')
756+
AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f', 'P')
757757

758758
AND (pg_has_role(c.relowner, 'USAGE')
759759
OR has_column_privilege(c.oid, a.attnum,
@@ -789,7 +789,7 @@ CREATE VIEW constraint_column_usage AS
789789
AND d.objid = c.oid
790790
AND c.connamespace = nc.oid
791791
AND c.contype = 'c'
792-
AND r.relkind = 'r'
792+
AND r.relkind IN ('r', 'P')
793793
AND NOT a.attisdropped
794794

795795
UNION ALL
@@ -805,7 +805,7 @@ CREATE VIEW constraint_column_usage AS
805805
ELSE r.oid = c.conrelid AND a.attnum = ANY (c.conkey) END)
806806
AND NOT a.attisdropped
807807
AND c.contype IN ('p', 'u', 'f')
808-
AND r.relkind = 'r'
808+
AND r.relkind IN ('r', 'P')
809809

810810
) AS x (tblschema, tblname, tblowner, colname, cstrschema, cstrname)
811811

@@ -841,7 +841,7 @@ CREATE VIEW constraint_table_usage AS
841841
WHERE c.connamespace = nc.oid AND r.relnamespace = nr.oid
842842
AND ( (c.contype = 'f' AND c.confrelid = r.oid)
843843
OR (c.contype IN ('p', 'u') AND c.conrelid = r.oid) )
844-
AND r.relkind = 'r'
844+
AND r.relkind IN ('r', 'P')
845845
AND pg_has_role(r.relowner, 'USAGE');
846846

847847
GRANT SELECT ON constraint_table_usage TO PUBLIC;
@@ -1058,7 +1058,7 @@ CREATE VIEW key_column_usage AS
10581058
AND r.oid = c.conrelid
10591059
AND nc.oid = c.connamespace
10601060
AND c.contype IN ('p', 'u', 'f')
1061-
AND r.relkind = 'r'
1061+
AND r.relkind IN ('r', 'P')
10621062
AND (NOT pg_is_other_temp_schema(nr.oid)) ) AS ss
10631063
WHERE ss.roid = a.attrelid
10641064
AND a.attnum = (ss.x).x
@@ -1774,7 +1774,7 @@ CREATE VIEW table_constraints AS
17741774
WHERE nc.oid = c.connamespace AND nr.oid = r.relnamespace
17751775
AND c.conrelid = r.oid
17761776
AND c.contype NOT IN ('t', 'x') -- ignore nonstandard constraints
1777-
AND r.relkind = 'r'
1777+
AND r.relkind IN ('r', 'P')
17781778
AND (NOT pg_is_other_temp_schema(nr.oid))
17791779
AND (pg_has_role(r.relowner, 'USAGE')
17801780
-- SELECT privilege omitted, per SQL standard
@@ -1804,7 +1804,7 @@ CREATE VIEW table_constraints AS
18041804
AND a.attnotnull
18051805
AND a.attnum > 0
18061806
AND NOT a.attisdropped
1807-
AND r.relkind = 'r'
1807+
AND r.relkind IN ('r', 'P')
18081808
AND (NOT pg_is_other_temp_schema(nr.oid))
18091809
AND (pg_has_role(r.relowner, 'USAGE')
18101810
-- SELECT privilege omitted, per SQL standard
@@ -1854,7 +1854,7 @@ CREATE VIEW table_privileges AS
18541854
) AS grantee (oid, rolname)
18551855

18561856
WHERE c.relnamespace = nc.oid
1857-
AND c.relkind IN ('r', 'v')
1857+
AND c.relkind IN ('r', 'v', 'P')
18581858
AND c.grantee = grantee.oid
18591859
AND c.grantor = u_grantor.oid
18601860
AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
@@ -1898,7 +1898,7 @@ CREATE VIEW tables AS
18981898

18991899
CAST(
19001900
CASE WHEN nc.oid = pg_my_temp_schema() THEN 'LOCAL TEMPORARY'
1901-
WHEN c.relkind = 'r' THEN 'BASE TABLE'
1901+
WHEN c.relkind IN ('r', 'P') THEN 'BASE TABLE'
19021902
WHEN c.relkind = 'v' THEN 'VIEW'
19031903
WHEN c.relkind = 'f' THEN 'FOREIGN TABLE'
19041904
ELSE null END
@@ -1911,7 +1911,7 @@ CREATE VIEW tables AS
19111911
CAST(nt.nspname AS sql_identifier) AS user_defined_type_schema,
19121912
CAST(t.typname AS sql_identifier) AS user_defined_type_name,
19131913

1914-
CAST(CASE WHEN c.relkind = 'r' OR
1914+
CAST(CASE WHEN c.relkind IN ('r', 'P') OR
19151915
(c.relkind IN ('v', 'f') AND
19161916
-- 1 << CMD_INSERT
19171917
pg_relation_is_updatable(c.oid, false) & 8 = 8)
@@ -1923,7 +1923,7 @@ CREATE VIEW tables AS
19231923
FROM pg_namespace nc JOIN pg_class c ON (nc.oid = c.relnamespace)
19241924
LEFT JOIN (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid)) ON (c.reloftype = t.oid)
19251925

1926-
WHERE c.relkind IN ('r', 'v', 'f')
1926+
WHERE c.relkind IN ('r', 'v', 'f', 'P')
19271927
AND (NOT pg_is_other_temp_schema(nc.oid))
19281928
AND (pg_has_role(c.relowner, 'USAGE')
19291929
OR has_table_privilege(c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER')
@@ -2442,7 +2442,7 @@ CREATE VIEW view_column_usage AS
24422442
AND dt.refclassid = 'pg_catalog.pg_class'::regclass
24432443
AND dt.refobjid = t.oid
24442444
AND t.relnamespace = nt.oid
2445-
AND t.relkind IN ('r', 'v', 'f')
2445+
AND t.relkind IN ('r', 'v', 'f', 'P')
24462446
AND t.oid = a.attrelid
24472447
AND dt.refobjsubid = a.attnum
24482448
AND pg_has_role(t.relowner, 'USAGE');
@@ -2520,7 +2520,7 @@ CREATE VIEW view_table_usage AS
25202520
AND dt.refclassid = 'pg_catalog.pg_class'::regclass
25212521
AND dt.refobjid = t.oid
25222522
AND t.relnamespace = nt.oid
2523-
AND t.relkind IN ('r', 'v', 'f')
2523+
AND t.relkind IN ('r', 'v', 'f', 'P')
25242524
AND pg_has_role(t.relowner, 'USAGE');
25252525

25262526
GRANT SELECT ON view_table_usage TO PUBLIC;
@@ -2673,7 +2673,7 @@ CREATE VIEW element_types AS
26732673
a.attnum, a.atttypid, a.attcollation
26742674
FROM pg_class c, pg_attribute a
26752675
WHERE c.oid = a.attrelid
2676-
AND c.relkind IN ('r', 'v', 'f', 'c')
2676+
AND c.relkind IN ('r', 'v', 'f', 'c', 'P')
26772677
AND attnum > 0 AND NOT attisdropped
26782678

26792679
UNION ALL

src/backend/catalog/system_views.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ CREATE VIEW pg_tables AS
136136
C.relrowsecurity AS rowsecurity
137137
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
138138
LEFT JOIN pg_tablespace T ON (T.oid = C.reltablespace)
139-
WHERE C.relkind = 'r';
139+
WHERE C.relkind IN ('r', 'P');
140140

141141
CREATE VIEW pg_matviews AS
142142
SELECT
@@ -280,7 +280,7 @@ CREATE VIEW pg_prepared_statements AS
280280
CREATE VIEW pg_seclabels AS
281281
SELECT
282282
l.objoid, l.classoid, l.objsubid,
283-
CASE WHEN rel.relkind = 'r' THEN 'table'::text
283+
CASE WHEN rel.relkind IN ('r', 'P') THEN 'table'::text
284284
WHEN rel.relkind = 'v' THEN 'view'::text
285285
WHEN rel.relkind = 'm' THEN 'materialized view'::text
286286
WHEN rel.relkind = 'S' THEN 'sequence'::text

src/test/regress/expected/rules.out

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,7 +1463,7 @@ pg_seclabels| SELECT l.objoid,
14631463
l.classoid,
14641464
l.objsubid,
14651465
CASE
1466-
WHEN (rel.relkind = 'r'::"char") THEN 'table'::text
1466+
WHEN (rel.relkind = ANY (ARRAY['r'::"char", 'P'::"char"])) THEN 'table'::text
14671467
WHEN (rel.relkind = 'v'::"char") THEN 'view'::text
14681468
WHEN (rel.relkind = 'm'::"char") THEN 'materialized view'::text
14691469
WHEN (rel.relkind = 'S'::"char") THEN 'sequence'::text
@@ -2139,7 +2139,7 @@ pg_tables| SELECT n.nspname AS schemaname,
21392139
FROM ((pg_class c
21402140
LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace)))
21412141
LEFT JOIN pg_tablespace t ON ((t.oid = c.reltablespace)))
2142-
WHERE (c.relkind = 'r'::"char");
2142+
WHERE (c.relkind = ANY (ARRAY['r'::"char", 'P'::"char"]));
21432143
pg_timezone_abbrevs| SELECT pg_timezone_abbrevs.abbrev,
21442144
pg_timezone_abbrevs.utc_offset,
21452145
pg_timezone_abbrevs.is_dst

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy