summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2025-02-07 10:17:25 +0000
committerPeter Eisentraut2025-02-07 10:23:34 +0000
commitb92c03342dcd69d259262b06b5c290e27249cb11 (patch)
treefee9eafe74ffd6d0ce64bc42c3f5d59db41e0556
parentbfe21b760e039163b91279f58fd09a0298572775 (diff)
Allow non-btree speculative insertion indexes
Previously, only btrees were supported as the arbiter index for speculative insertion because there was no way to get the equality strategy number for other index methods. We have this now (commit c09e5a6a016), so we can support this. At the moment, only btree supports unique indexes, so this does not change anything in practice, but it would allow another index method that has amcanunique to be supported. Co-authored-by: Mark Dilger <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/[email protected]
-rw-r--r--src/backend/catalog/index.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 7377912b41e..cdabf780244 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -2677,9 +2677,6 @@ BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii)
*/
Assert(ii->ii_Unique);
- if (index->rd_rel->relam != BTREE_AM_OID)
- elog(ERROR, "unexpected non-btree speculative unique index");
-
ii->ii_UniqueOps = (Oid *) palloc(sizeof(Oid) * indnkeyatts);
ii->ii_UniqueProcs = (Oid *) palloc(sizeof(Oid) * indnkeyatts);
ii->ii_UniqueStrats = (uint16 *) palloc(sizeof(uint16) * indnkeyatts);
@@ -2691,7 +2688,12 @@ BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii)
/* We need the func OIDs and strategy numbers too */
for (i = 0; i < indnkeyatts; i++)
{
- ii->ii_UniqueStrats[i] = BTEqualStrategyNumber;
+ ii->ii_UniqueStrats[i] =
+ 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],
index->rd_opcintype[i],