From 2903f1404df37e11ecc303dbc164826c4717194b Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Sat, 2 Oct 2021 17:12:59 -0700 Subject: [PATCH] Enable deduplication in system catalog indexes. The "equality implies image equality" opclass infrastructure disallowed deduplication in system catalog indexes and TOAST indexes before now. That seemed like the right approach back when the infrastructure was added by commit 612a1ab7, since ALTER INDEX cannot set deduplicate_items to 'off' (due to an old implementation restriction). But that decision now seems arbitrary at best. Remove special case handling implementing this policy. No catversion bump, since existing catalog indexes will still work. Author: Peter Geoghegan Discussion: https://postgr.es/m/CAH2-Wz=rYQHFaJ3WYBdK=xgwxKzaiGMSSrh-ZCREa-pS-7Zjew@mail.gmail.com --- src/backend/access/nbtree/nbtutils.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index d524310723..39f2e75186 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -2698,18 +2698,6 @@ _bt_allequalimage(Relation rel, bool debugmessage) IndexRelationGetNumberOfKeyAttributes(rel)) return false; - /* - * There is no special reason why deduplication cannot work with system - * relations (i.e. with system catalog indexes and TOAST indexes). We - * deem deduplication unsafe for these indexes all the same, since the - * alternative is to force users to always use deduplication, without - * being able to opt out. (ALTER INDEX is not supported with system - * indexes, so users would have no way to set the deduplicate_items - * storage parameter to 'off'.) - */ - if (IsSystemRelation(rel)) - return false; - for (int i = 0; i < IndexRelationGetNumberOfKeyAttributes(rel); i++) { Oid opfamily = rel->rd_opfamily[i];