OSDN Git Service

Add a sanity check to make sure that all system catalogs that have OIDs
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 10 Aug 2002 15:54:04 +0000 (15:54 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 10 Aug 2002 15:54:04 +0000 (15:54 +0000)
also have a unique index on OID.

src/test/regress/expected/sanity_check.out
src/test/regress/sql/sanity_check.sql

index 25e7b09..36837f1 100644 (file)
@@ -65,3 +65,19 @@ SELECT relname, relhasindex
  tenk2               | t
 (53 rows)
 
+--
+-- another sanity check: every system catalog that has OIDs should have
+-- a unique index on OID.  This ensures that the OIDs will be unique,
+-- even after the OID counter wraps around.
+-- We exclude non-system tables from the check by looking at nspname.
+--
+SELECT relname, nspname
+FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = relnamespace
+WHERE relhasoids
+    AND ((nspname ~ '^pg_') IS NOT FALSE)
+    AND NOT EXISTS (SELECT 1 FROM pg_index i WHERE indrelid = c.oid
+                    AND indkey[0] = -2 AND indkey[1] = 0 AND indisunique);
+ relname | nspname 
+---------+---------
+(0 rows)
+
index 696a4f4..50b1a26 100644 (file)
@@ -1,5 +1,5 @@
-
 VACUUM;
+
 --
 -- sanity check, if we don't have indices the test will take years to
 -- complete.  But skip TOAST relations since they will have varying
@@ -10,3 +10,15 @@ SELECT relname, relhasindex
    WHERE relhasindex AND relkind != 't'
    ORDER BY relname;
 
+--
+-- another sanity check: every system catalog that has OIDs should have
+-- a unique index on OID.  This ensures that the OIDs will be unique,
+-- even after the OID counter wraps around.
+-- We exclude non-system tables from the check by looking at nspname.
+--
+SELECT relname, nspname
+FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = relnamespace
+WHERE relhasoids
+    AND ((nspname ~ '^pg_') IS NOT FALSE)
+    AND NOT EXISTS (SELECT 1 FROM pg_index i WHERE indrelid = c.oid
+                    AND indkey[0] = -2 AND indkey[1] = 0 AND indisunique);