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