From: Itagaki Takahiro Date: Tue, 1 Feb 2011 06:48:08 +0000 (+0900) Subject: Fix wrong error reports in 'number of array dimensions exceeds the X-Git-Tag: REL8_3_15~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f37a76a1c137df627800272dd73b8ee4fff0cce;p=postgresql Fix wrong error reports in 'number of array dimensions exceeds the maximum allowed' messages, that have reported one-less dimensions. Alexey Klyukin --- diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 58bcdddb16..1c792387de 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -278,7 +278,7 @@ ExecEvalArrayRef(ArrayRefExprState *astate, ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - i, MAXDIM))); + i + 1, MAXDIM))); upper.indx[i++] = DatumGetInt32(ExecEvalExpr(eltstate, econtext, @@ -306,7 +306,7 @@ ExecEvalArrayRef(ArrayRefExprState *astate, ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - i, MAXDIM))); + j + 1, MAXDIM))); lower.indx[j++] = DatumGetInt32(ExecEvalExpr(eltstate, econtext, diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index d67b167aee..81f8e35a67 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -196,7 +196,7 @@ array_in(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - ndim, MAXDIM))); + ndim + 1, MAXDIM))); for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++); if (q == p) /* no digits? */ @@ -448,7 +448,7 @@ ArrayCount(const char *str, int *dim, char typdelim) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - nest_level, MAXDIM))); + nest_level + 1, MAXDIM))); temp[nest_level] = 0; nest_level++; if (ndim < nest_level)