summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/gist/gistutil.c4
-rw-r--r--src/backend/access/gist/gistvalidate.c4
-rw-r--r--src/backend/access/hash/hash.c4
-rw-r--r--src/backend/access/index/amapi.c8
-rw-r--r--src/backend/access/nbtree/nbtree.c4
-rw-r--r--src/backend/catalog/index.c1
-rw-r--r--src/backend/commands/indexcmds.c2
-rw-r--r--src/backend/commands/tablecmds.c2
-rw-r--r--src/backend/executor/execReplication.c2
-rw-r--r--src/backend/replication/logical/relation.c6
-rw-r--r--src/include/access/amapi.h8
-rw-r--r--src/include/access/gist.h2
-rw-r--r--src/include/access/hash.h4
-rw-r--r--src/include/access/nbtree.h4
-rw-r--r--src/include/catalog/catversion.h2
-rw-r--r--src/include/catalog/pg_amproc.dat24
16 files changed, 40 insertions, 41 deletions
diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c
index dbc4ac639a2..a6b701943d3 100644
--- a/src/backend/access/gist/gistutil.c
+++ b/src/backend/access/gist/gistutil.c
@@ -1095,13 +1095,13 @@ 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;
/* Check whether the function is provided. */
- funcid = get_opfamily_proc(opfamily, opcintype, opcintype, GIST_STRATNUM_PROC);
+ funcid = get_opfamily_proc(opfamily, ANYOID, ANYOID, GIST_STRATNUM_PROC);
if (!OidIsValid(funcid))
return InvalidStrategy;
diff --git a/src/backend/access/gist/gistvalidate.c b/src/backend/access/gist/gistvalidate.c
index ffefa12d97a..2a49e6d20f0 100644
--- a/src/backend/access/gist/gistvalidate.c
+++ b/src/backend/access/gist/gistvalidate.c
@@ -140,7 +140,9 @@ gistvalidate(Oid opclassoid)
break;
case GIST_STRATNUM_PROC:
ok = check_amproc_signature(procform->amproc, INT2OID, true,
- 1, 1, INT4OID);
+ 1, 1, INT4OID) &&
+ procform->amproclefttype == ANYOID &&
+ procform->amprocrighttype == ANYOID;
break;
default:
ereport(INFO,
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index 02ec1126a4c..b24aae415ea 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 dc244ae24c7..411d5ac0b5f 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 9d8754be7e5..ce7d115667e 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -10113,7 +10113,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
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index ff1253db0e9..1d609f1af47 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -57,6 +57,6 @@
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 202502112
+#define CATALOG_VERSION_NO 202502211
#endif
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index 508f48d345c..19100482ba4 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -506,8 +506,8 @@
amprocrighttype => 'box', amprocnum => '7', amproc => 'gist_box_same' },
{ amprocfamily => 'gist/box_ops', amproclefttype => 'box',
amprocrighttype => 'box', amprocnum => '8', amproc => 'gist_box_distance' },
-{ amprocfamily => 'gist/box_ops', amproclefttype => 'box',
- amprocrighttype => 'box', amprocnum => '12',
+{ amprocfamily => 'gist/box_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
amprocrighttype => 'polygon', amprocnum => '1',
@@ -528,8 +528,8 @@
{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
amprocrighttype => 'polygon', amprocnum => '8',
amproc => 'gist_poly_distance' },
-{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
- amprocrighttype => 'polygon', amprocnum => '12',
+{ amprocfamily => 'gist/poly_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
amprocrighttype => 'circle', amprocnum => '1',
@@ -549,8 +549,8 @@
{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
amprocrighttype => 'circle', amprocnum => '8',
amproc => 'gist_circle_distance' },
-{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
- amprocrighttype => 'circle', amprocnum => '12',
+{ amprocfamily => 'gist/circle_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector',
amprocrighttype => 'tsvector', amprocnum => '1',
@@ -606,8 +606,8 @@
{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange',
amprocrighttype => 'anyrange', amprocnum => '7',
amproc => 'range_gist_same' },
-{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange',
- amprocrighttype => 'anyrange', amprocnum => '12',
+{ amprocfamily => 'gist/range_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
amprocrighttype => 'inet', amprocnum => '1',
@@ -625,8 +625,8 @@
amprocrighttype => 'inet', amprocnum => '7', amproc => 'inet_gist_same' },
{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
amprocrighttype => 'inet', amprocnum => '9', amproc => 'inet_gist_fetch' },
-{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
- amprocrighttype => 'inet', amprocnum => '12',
+{ amprocfamily => 'gist/network_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
amprocrighttype => 'anymultirange', amprocnum => '1',
@@ -646,8 +646,8 @@
{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
amprocrighttype => 'anymultirange', amprocnum => '7',
amproc => 'range_gist_same' },
-{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
- amprocrighttype => 'anymultirange', amprocnum => '12',
+{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'any',
+ amprocrighttype => 'any', amprocnum => '12',
amproc => 'gist_stratnum_common' },
# gin