From 5e4282772a569363da350548b2ce2e214e92ba40 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 3 Oct 2023 17:40:15 +0200 Subject: [PATCH] Remove RelationGetIndexRawAttOptions() There was only one caller left, for which this function was overkill. Also, having it in relcache.c was inappropriate, since it doesn't work with the relcache at all. Discussion: https://www.postgresql.org/message-id/flat/f84640e3-00d3-5abd-3f41-e6a19d33c40b@eisentraut.org --- src/backend/commands/indexcmds.c | 8 +++++--- src/backend/utils/cache/relcache.c | 29 ----------------------------- src/include/utils/relcache.h | 1 - 3 files changed, 5 insertions(+), 33 deletions(-) diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index a53861cecf..c160d8a301 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -301,12 +301,14 @@ CheckIndexCompatible(Oid oldId, /* Any change in opclass options break compatibility. */ if (ret) { - Datum *oldOpclassOptions = RelationGetIndexRawAttOptions(irel); + Datum *oldOpclassOptions = palloc_array(Datum, old_natts); + + for (i = 0; i < old_natts; i++) + oldOpclassOptions[i] = get_attoptions(oldId, i + 1); ret = CompareOpclassOptions(oldOpclassOptions, opclassOptions, old_natts); - if (oldOpclassOptions) - pfree(oldOpclassOptions); + pfree(oldOpclassOptions); } /* Any change in exclusion operator selections breaks compatibility. */ diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 7234cb3da6..a49ab465b3 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -5821,35 +5821,6 @@ RelationBuildPublicationDesc(Relation relation, PublicationDesc *pubdesc) MemoryContextSwitchTo(oldcxt); } -/* - * RelationGetIndexRawAttOptions -- get AM/opclass-specific options for the index - */ -Datum * -RelationGetIndexRawAttOptions(Relation indexrel) -{ - Oid indexrelid = RelationGetRelid(indexrel); - int16 natts = RelationGetNumberOfAttributes(indexrel); - Datum *options = NULL; - int16 attnum; - - for (attnum = 1; attnum <= natts; attnum++) - { - if (indexrel->rd_indam->amoptsprocnum == 0) - continue; - - if (!OidIsValid(index_getprocid(indexrel, attnum, - indexrel->rd_indam->amoptsprocnum))) - continue; - - if (!options) - options = palloc0(sizeof(Datum) * natts); - - options[attnum - 1] = get_attoptions(indexrelid, attnum); - } - - return options; -} - static bytea ** CopyIndexAttOptions(bytea **srcopts, int natts) { diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index 38524641f4..b0955c0e62 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -51,7 +51,6 @@ extern Oid RelationGetReplicaIndex(Relation relation); extern List *RelationGetIndexExpressions(Relation relation); extern List *RelationGetDummyIndexExpressions(Relation relation); extern List *RelationGetIndexPredicate(Relation relation); -extern Datum *RelationGetIndexRawAttOptions(Relation indexrel); extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy); /*