From 6f5be36bb6b25776b54fccf01387c405baafa557 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 7 Feb 2025 16:06:18 +0100 Subject: [PATCH v19.4 2/2] Drop opcintype from index AM strategy translation API --- src/backend/access/gist/gistutil.c | 2 +- src/backend/access/hash/hash.c | 4 ++-- src/backend/access/index/amapi.c | 8 ++++---- src/backend/access/nbtree/nbtree.c | 4 ++-- src/backend/catalog/index.c | 1 - src/backend/commands/indexcmds.c | 2 +- src/backend/commands/tablecmds.c | 2 +- src/backend/executor/execReplication.c | 2 +- src/backend/replication/logical/relation.c | 6 ++---- src/include/access/amapi.h | 8 ++++---- src/include/access/gist.h | 2 +- src/include/access/hash.h | 4 ++-- src/include/access/nbtree.h | 4 ++-- 13 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index fef5876d7d8..a6b701943d3 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -1095,7 +1095,7 @@ gist_stratnum_common(PG_FUNCTION_ARGS) * Returns InvalidStrategy if the function is not defined. */ StrategyNumber -gisttranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype) +gisttranslatecmptype(CompareType cmptype, Oid opfamily) { Oid funcid; Datum result; diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c index 63b568e7f24..8b0d321cf21 100644 --- a/src/backend/access/hash/hash.c +++ b/src/backend/access/hash/hash.c @@ -927,7 +927,7 @@ hashbucketcleanup(Relation rel, Bucket cur_bucket, Buffer bucket_buf, } CompareType -hashtranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype) +hashtranslatestrategy(StrategyNumber strategy, Oid opfamily) { if (strategy == HTEqualStrategyNumber) return COMPARE_EQ; @@ -935,7 +935,7 @@ hashtranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype) } StrategyNumber -hashtranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype) +hashtranslatecmptype(CompareType cmptype, Oid opfamily) { if (cmptype == COMPARE_EQ) return HTEqualStrategyNumber; diff --git a/src/backend/access/index/amapi.c b/src/backend/access/index/amapi.c index 5f53f49ec32..d6b8dad4d52 100644 --- a/src/backend/access/index/amapi.c +++ b/src/backend/access/index/amapi.c @@ -115,14 +115,14 @@ GetIndexAmRoutineByAmId(Oid amoid, bool noerror) * true, just return COMPARE_INVALID. */ CompareType -IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, Oid opcintype, bool missing_ok) +IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, bool missing_ok) { CompareType result; IndexAmRoutine *amroutine; amroutine = GetIndexAmRoutineByAmId(amoid, false); if (amroutine->amtranslatestrategy) - result = amroutine->amtranslatestrategy(strategy, opfamily, opcintype); + result = amroutine->amtranslatestrategy(strategy, opfamily); else result = COMPARE_INVALID; @@ -140,14 +140,14 @@ IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, Oid o * to the given cmptype. If true, just return InvalidStrategy. */ StrategyNumber -IndexAmTranslateCompareType(CompareType cmptype, Oid amoid, Oid opfamily, Oid opcintype, bool missing_ok) +IndexAmTranslateCompareType(CompareType cmptype, Oid amoid, Oid opfamily, bool missing_ok) { StrategyNumber result; IndexAmRoutine *amroutine; amroutine = GetIndexAmRoutineByAmId(amoid, false); if (amroutine->amtranslatecmptype) - result = amroutine->amtranslatecmptype(cmptype, opfamily, opcintype); + result = amroutine->amtranslatecmptype(cmptype, opfamily); else result = InvalidStrategy; diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 971405e89af..22ca35530d2 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -1513,7 +1513,7 @@ btgettreeheight(Relation rel) } CompareType -bttranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype) +bttranslatestrategy(StrategyNumber strategy, Oid opfamily) { switch (strategy) { @@ -1533,7 +1533,7 @@ bttranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype) } StrategyNumber -bttranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype) +bttranslatecmptype(CompareType cmptype, Oid opfamily) { switch (cmptype) { diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index cdabf780244..f37b990c81d 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -2692,7 +2692,6 @@ BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii) IndexAmTranslateCompareType(COMPARE_EQ, index->rd_rel->relam, index->rd_opfamily[i], - index->rd_opcintype[i], false); ii->ii_UniqueOps[i] = get_opfamily_member(index->rd_opfamily[i], diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index f8d3ea820e1..c92f5620ec1 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -2468,7 +2468,7 @@ GetOperatorFromCompareType(Oid opclass, Oid rhstype, CompareType cmptype, /* * Ask the index AM to translate to its internal stratnum */ - *strat = IndexAmTranslateCompareType(cmptype, amid, opfamily, opcintype, true); + *strat = IndexAmTranslateCompareType(cmptype, amid, opfamily, true); if (*strat == InvalidStrategy) ereport(ERROR, errcode(ERRCODE_UNDEFINED_OBJECT), diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 5823fce9340..1aa7e6ecd9e 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -10112,7 +10112,7 @@ ATAddForeignKeyConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, */ for_overlaps = with_period && i == numpks - 1; cmptype = for_overlaps ? COMPARE_OVERLAP : COMPARE_EQ; - eqstrategy = IndexAmTranslateCompareType(cmptype, amid, opfamily, opcintype, true); + eqstrategy = IndexAmTranslateCompareType(cmptype, amid, opfamily, true); if (eqstrategy == InvalidStrategy) ereport(ERROR, errcode(ERRCODE_UNDEFINED_OBJECT), diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index 5f7613cc831..5cef54f00ed 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -91,7 +91,7 @@ build_replindex_scan_key(ScanKey skey, Relation rel, Relation idxrel, */ optype = get_opclass_input_type(opclass->values[index_attoff]); opfamily = get_opclass_family(opclass->values[index_attoff]); - eq_strategy = IndexAmTranslateCompareType(COMPARE_EQ, idxrel->rd_rel->relam, opfamily, optype, false); + eq_strategy = IndexAmTranslateCompareType(COMPARE_EQ, idxrel->rd_rel->relam, opfamily, false); operator = get_opfamily_member(opfamily, optype, optype, eq_strategy); diff --git a/src/backend/replication/logical/relation.c b/src/backend/replication/logical/relation.c index e9ad90d64a5..46d15b824e3 100644 --- a/src/backend/replication/logical/relation.c +++ b/src/backend/replication/logical/relation.c @@ -837,11 +837,9 @@ IsIndexUsableForReplicaIdentityFull(Relation idxrel, AttrMap *attrmap) for (int i = 0; i < idxrel->rd_index->indnkeyatts; i++) { Oid opfamily; - Oid opcintype; - if (!get_opclass_opfamily_and_input_type(indclass->values[i], &opfamily, &opcintype)) - return false; - if (IndexAmTranslateCompareType(COMPARE_EQ, idxrel->rd_rel->relam, opfamily, opcintype, true) == InvalidStrategy) + opfamily = get_opclass_family(indclass->values[i]); + if (IndexAmTranslateCompareType(COMPARE_EQ, idxrel->rd_rel->relam, opfamily, true) == InvalidStrategy) return false; } diff --git a/src/include/access/amapi.h b/src/include/access/amapi.h index 6723de75a4d..fbe6b225ec9 100644 --- a/src/include/access/amapi.h +++ b/src/include/access/amapi.h @@ -102,10 +102,10 @@ typedef struct OpFamilyMember */ /* translate AM-specific strategies to general operator types */ -typedef CompareType (*amtranslate_strategy_function) (StrategyNumber strategy, Oid opfamily, Oid opcintype); +typedef CompareType (*amtranslate_strategy_function) (StrategyNumber strategy, Oid opfamily); /* translate general operator types to AM-specific strategies */ -typedef StrategyNumber (*amtranslate_cmptype_function) (CompareType cmptype, Oid opfamily, Oid opcintype); +typedef StrategyNumber (*amtranslate_cmptype_function) (CompareType cmptype, Oid opfamily); /* build new index */ typedef IndexBuildResult *(*ambuild_function) (Relation heapRelation, @@ -319,7 +319,7 @@ typedef struct IndexAmRoutine /* Functions in access/index/amapi.c */ extern IndexAmRoutine *GetIndexAmRoutine(Oid amhandler); extern IndexAmRoutine *GetIndexAmRoutineByAmId(Oid amoid, bool noerror); -extern CompareType IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, Oid opcintype, bool missing_ok); -extern StrategyNumber IndexAmTranslateCompareType(CompareType cmptype, Oid amoid, Oid opfamily, Oid opcintype, bool missing_ok); +extern CompareType IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, bool missing_ok); +extern StrategyNumber IndexAmTranslateCompareType(CompareType cmptype, Oid amoid, Oid opfamily, bool missing_ok); #endif /* AMAPI_H */ diff --git a/src/include/access/gist.h b/src/include/access/gist.h index db62a9ac0b4..db78e60eeab 100644 --- a/src/include/access/gist.h +++ b/src/include/access/gist.h @@ -248,6 +248,6 @@ typedef struct do { (e).key = (k); (e).rel = (r); (e).page = (pg); \ (e).offset = (o); (e).leafkey = (l); } while (0) -extern StrategyNumber gisttranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype); +extern StrategyNumber gisttranslatecmptype(CompareType cmptype, Oid opfamily); #endif /* GIST_H */ diff --git a/src/include/access/hash.h b/src/include/access/hash.h index e91f2b00ad9..073ad29b19b 100644 --- a/src/include/access/hash.h +++ b/src/include/access/hash.h @@ -387,8 +387,8 @@ extern void hashadjustmembers(Oid opfamilyoid, List *operators, List *functions); -extern CompareType hashtranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype); -extern StrategyNumber hashtranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype); +extern CompareType hashtranslatestrategy(StrategyNumber strategy, Oid opfamily); +extern StrategyNumber hashtranslatecmptype(CompareType cmptype, Oid opfamily); /* private routines */ diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h index 000c7289b80..e4fdeca3402 100644 --- a/src/include/access/nbtree.h +++ b/src/include/access/nbtree.h @@ -1183,8 +1183,8 @@ extern IndexBulkDeleteResult *btvacuumcleanup(IndexVacuumInfo *info, extern bool btcanreturn(Relation index, int attno); extern int btgettreeheight(Relation rel); -extern CompareType bttranslatestrategy(StrategyNumber strategy, Oid opfamily, Oid opcintype); -extern StrategyNumber bttranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype); +extern CompareType bttranslatestrategy(StrategyNumber strategy, Oid opfamily); +extern StrategyNumber bttranslatecmptype(CompareType cmptype, Oid opfamily); /* * prototypes for internal functions in nbtree.c -- 2.48.1