From 55f3d1029676ad53621716fd15faed5848c9f4cd Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 5 Nov 2018 12:02:27 -0500 Subject: [PATCH] Remove unreferenced pg_opfamily entry. The entry with OID 4035, for GIST jsonb_ops, is unused; apparently it was added in preparation for index support that never materialized. Remove it, and add a regression test case to detect future mistakes of the same kind. Discussion: https://postgr.es/m/17188.1541379745@sss.pgh.pa.us --- src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_opfamily.dat | 2 -- src/test/regress/expected/opr_sanity.out | 10 ++++++++++ src/test/regress/sql/opr_sanity.sql | 8 ++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 17f8e3005a..14fc4ddda8 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 201811012 +#define CATALOG_VERSION_NO 201811051 #endif diff --git a/src/include/catalog/pg_opfamily.dat b/src/include/catalog/pg_opfamily.dat index 20b2224c54..21473acf34 100644 --- a/src/include/catalog/pg_opfamily.dat +++ b/src/include/catalog/pg_opfamily.dat @@ -172,8 +172,6 @@ opfmethod => 'btree', opfname => 'jsonb_ops' }, { oid => '4034', opfmethod => 'hash', opfname => 'jsonb_ops' }, -{ oid => '4035', - opfmethod => 'gist', opfname => 'jsonb_ops' }, { oid => '4036', opfmethod => 'gin', opfname => 'jsonb_ops' }, { oid => '4037', diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out index 69ea821a0c..c073a5ac3f 100644 --- a/src/test/regress/expected/opr_sanity.out +++ b/src/test/regress/expected/opr_sanity.out @@ -1686,6 +1686,16 @@ WHERE p1.opfmethod = 0 OR p1.opfnamespace = 0; ----- (0 rows) +-- Look for opfamilies having no opclasses. While most validation of +-- opfamilies is now handled by AM-specific amvalidate functions, that's +-- driven from pg_opclass entries below, so an empty opfamily would not +-- get noticed. +SELECT oid, opfname FROM pg_opfamily f +WHERE NOT EXISTS (SELECT 1 FROM pg_opclass WHERE opcfamily = f.oid); + oid | opfname +-----+--------- +(0 rows) + -- **************** pg_opclass **************** -- Look for illegal values in pg_opclass fields SELECT p1.oid diff --git a/src/test/regress/sql/opr_sanity.sql b/src/test/regress/sql/opr_sanity.sql index b155d90b11..91c68f4204 100644 --- a/src/test/regress/sql/opr_sanity.sql +++ b/src/test/regress/sql/opr_sanity.sql @@ -1122,6 +1122,14 @@ SELECT p1.oid FROM pg_opfamily as p1 WHERE p1.opfmethod = 0 OR p1.opfnamespace = 0; +-- Look for opfamilies having no opclasses. While most validation of +-- opfamilies is now handled by AM-specific amvalidate functions, that's +-- driven from pg_opclass entries below, so an empty opfamily would not +-- get noticed. + +SELECT oid, opfname FROM pg_opfamily f +WHERE NOT EXISTS (SELECT 1 FROM pg_opclass WHERE opcfamily = f.oid); + -- **************** pg_opclass ****************