mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Fix inconsistencies for queries on pg_class in type_sanity.sql
Three queries did not consider partitioned indexes and tables, and
surrounding comments have not been updated in a while.
Like 4b9fbd6be4
, this is only cosmetic currently as no such relkinds
exist at this stage of the regression tests, but running these queries
on existing clusters could lead to incorrect results.
Author: Jian He, Michael Paquier
Discussion: https://postgr.es/m/CACJufxGsB1ciahkNDccyxhw-Pfp_-_y+Wx+1BOdRyVVxKojAbg@mail.gmail.com
This commit is contained in:
parent
b7f315c9d7
commit
a9f19c1349
@ -507,28 +507,30 @@ WHERE relkind NOT IN ('r', 'i', 'S', 't', 'v', 'm', 'c', 'f', 'p', 'I') OR
|
|||||||
-----+---------
|
-----+---------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
-- All tables and indexes should have an access method.
|
-- All tables, indexes, partitioned indexes and matviews should have an
|
||||||
|
-- access method.
|
||||||
SELECT c1.oid, c1.relname
|
SELECT c1.oid, c1.relname
|
||||||
FROM pg_class as c1
|
FROM pg_class as c1
|
||||||
WHERE c1.relkind NOT IN ('S', 'v', 'f', 'c') and
|
WHERE c1.relkind NOT IN ('S', 'v', 'f', 'c', 'p') and
|
||||||
c1.relam = 0;
|
c1.relam = 0;
|
||||||
oid | relname
|
oid | relname
|
||||||
-----+---------
|
-----+---------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
-- Conversely, sequences, views, types shouldn't have them
|
-- Conversely, sequences, views, foreign tables, types and partitioned
|
||||||
|
-- tables shouldn't have them.
|
||||||
SELECT c1.oid, c1.relname
|
SELECT c1.oid, c1.relname
|
||||||
FROM pg_class as c1
|
FROM pg_class as c1
|
||||||
WHERE c1.relkind IN ('S', 'v', 'f', 'c') and
|
WHERE c1.relkind IN ('S', 'v', 'f', 'c', 'p') and
|
||||||
c1.relam != 0;
|
c1.relam != 0;
|
||||||
oid | relname
|
oid | relname
|
||||||
-----+---------
|
-----+---------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
-- Indexes should have AMs of type 'i'
|
-- Indexes and partitioned indexes should have AMs of type 'i'.
|
||||||
SELECT pc.oid, pc.relname, pa.amname, pa.amtype
|
SELECT pc.oid, pc.relname, pa.amname, pa.amtype
|
||||||
FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid)
|
FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid)
|
||||||
WHERE pc.relkind IN ('i') and
|
WHERE pc.relkind IN ('i', 'I') and
|
||||||
pa.amtype != 'i';
|
pa.amtype != 'i';
|
||||||
oid | relname | amname | amtype
|
oid | relname | amname | amtype
|
||||||
-----+---------+--------+--------
|
-----+---------+--------+--------
|
||||||
|
@ -364,22 +364,24 @@ WHERE relkind NOT IN ('r', 'i', 'S', 't', 'v', 'm', 'c', 'f', 'p', 'I') OR
|
|||||||
relpersistence NOT IN ('p', 'u', 't') OR
|
relpersistence NOT IN ('p', 'u', 't') OR
|
||||||
relreplident NOT IN ('d', 'n', 'f', 'i');
|
relreplident NOT IN ('d', 'n', 'f', 'i');
|
||||||
|
|
||||||
-- All tables and indexes should have an access method.
|
-- All tables, indexes, partitioned indexes and matviews should have an
|
||||||
|
-- access method.
|
||||||
SELECT c1.oid, c1.relname
|
SELECT c1.oid, c1.relname
|
||||||
FROM pg_class as c1
|
FROM pg_class as c1
|
||||||
WHERE c1.relkind NOT IN ('S', 'v', 'f', 'c') and
|
WHERE c1.relkind NOT IN ('S', 'v', 'f', 'c', 'p') and
|
||||||
c1.relam = 0;
|
c1.relam = 0;
|
||||||
|
|
||||||
-- Conversely, sequences, views, types shouldn't have them
|
-- Conversely, sequences, views, foreign tables, types and partitioned
|
||||||
|
-- tables shouldn't have them.
|
||||||
SELECT c1.oid, c1.relname
|
SELECT c1.oid, c1.relname
|
||||||
FROM pg_class as c1
|
FROM pg_class as c1
|
||||||
WHERE c1.relkind IN ('S', 'v', 'f', 'c') and
|
WHERE c1.relkind IN ('S', 'v', 'f', 'c', 'p') and
|
||||||
c1.relam != 0;
|
c1.relam != 0;
|
||||||
|
|
||||||
-- Indexes should have AMs of type 'i'
|
-- Indexes and partitioned indexes should have AMs of type 'i'.
|
||||||
SELECT pc.oid, pc.relname, pa.amname, pa.amtype
|
SELECT pc.oid, pc.relname, pa.amname, pa.amtype
|
||||||
FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid)
|
FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid)
|
||||||
WHERE pc.relkind IN ('i') and
|
WHERE pc.relkind IN ('i', 'I') and
|
||||||
pa.amtype != 'i';
|
pa.amtype != 'i';
|
||||||
|
|
||||||
-- Tables, matviews etc should have AMs of type 't'
|
-- Tables, matviews etc should have AMs of type 't'
|
||||||
|
Loading…
Reference in New Issue
Block a user