diff options
author | Itagaki Takahiro <itagaki.takahiro@gmail.com> | 2011-02-01 15:21:32 +0900 |
---|---|---|
committer | Itagaki Takahiro <itagaki.takahiro@gmail.com> | 2011-02-01 15:25:48 +0900 |
commit | 2da967380facb5cd0476c2692fa72588980a8a20 (patch) | |
tree | 474b5ccd8f88bcf211817edd26e64df607db8ba0 | |
parent | c1da1f45a1033fecd888c56568db5ca9b1c050d2 (diff) | |
download | postgresql-2da967380facb5cd0476c2692fa72588980a8a20.tar.gz postgresql-2da967380facb5cd0476c2692fa72588980a8a20.zip |
Fix wrong error reports in 'number of array dimensions exceeds the
maximum allowed' messages, that have reported one-less dimensions.
Alexey Klyukin
-rw-r--r-- | src/backend/executor/execQual.c | 4 | ||||
-rw-r--r-- | src/backend/utils/adt/arrayfuncs.c | 4 | ||||
-rw-r--r-- | src/pl/plpgsql/src/pl_exec.c | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 5dae37d5d60..3895b650780 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -293,7 +293,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, @@ -321,7 +321,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 f06c4e56571..b36af2c0f09 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -201,7 +201,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? */ @@ -453,7 +453,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) diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 87a9f9de0e2..104765be18f 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3750,7 +3750,7 @@ exec_assign_value(PLpgSQL_execstate *estate, ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - nsubscripts, MAXDIM))); + nsubscripts + 1, MAXDIM))); subscripts[nsubscripts++] = arrayelem->subscript; target = estate->datums[arrayelem->arrayparentno]; } while (target->dtype == PLPGSQL_DTYPE_ARRAYELEM); |