aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/index/indexam.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/index/indexam.c')
-rw-r--r--src/backend/access/index/indexam.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index f7e4c65d99f..a3f77169a79 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -773,9 +773,9 @@ index_getprocid(Relation irel,
nproc = irel->rd_indam->amsupport;
- Assert(procnum >= 0 && procnum <= (uint16) nproc);
+ Assert(procnum > 0 && procnum <= (uint16) nproc);
- procindex = ((nproc + 1) * (attnum - 1)) + procnum;
+ procindex = (nproc * (attnum - 1)) + (procnum - 1);
loc = irel->rd_support;
@@ -809,9 +809,9 @@ index_getprocinfo(Relation irel,
nproc = irel->rd_indam->amsupport;
optsproc = irel->rd_indam->amoptsprocnum;
- Assert(procnum >= 0 && procnum <= (uint16) nproc);
+ Assert(procnum > 0 && procnum <= (uint16) nproc);
- procindex = ((nproc + 1) * (attnum - 1)) + procnum;
+ procindex = (nproc * (attnum - 1)) + (procnum - 1);
locinfo = irel->rd_supportinfo;
@@ -937,10 +937,14 @@ index_opclass_options(Relation indrel, AttrNumber attnum, Datum attoptions,
bool validate)
{
int amoptsprocnum = indrel->rd_indam->amoptsprocnum;
- Oid procid = index_getprocid(indrel, attnum, amoptsprocnum);
+ Oid procid = InvalidOid;
FmgrInfo *procinfo;
local_relopts relopts;
+ /* fetch options support procedure if specified */
+ if (amoptsprocnum != 0)
+ procid =index_getprocid(indrel, attnum, amoptsprocnum);
+
if (!OidIsValid(procid))
{
Oid opclass;