v19.4-0002-Drop-opcintype-from-index-AM-strategy-translat.patch

text/plain

Filename: v19.4-0002-Drop-opcintype-from-index-AM-strategy-translat.patch
Type: text/plain
Part: 1
Message: Re: Index AM API cleanup

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v19-0002
Subject: Drop opcintype from index AM strategy translation API
File+
src/backend/access/gist/gistutil.c 1 1
src/backend/access/hash/hash.c 2 2
src/backend/access/index/amapi.c 4 4
src/backend/access/nbtree/nbtree.c 2 2
src/backend/catalog/index.c 0 1
src/backend/commands/indexcmds.c 1 1
src/backend/commands/tablecmds.c 1 1
src/backend/executor/execReplication.c 1 1
src/backend/replication/logical/relation.c 2 4
src/include/access/amapi.h 4 4
src/include/access/gist.h 1 1
src/include/access/hash.h 2 2
src/include/access/nbtree.h 2 2
From 6f5be36bb6b25776b54fccf01387c405baafa557 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
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