Skip to content

Commit 0c707aa

Browse files
committed
Fix wrong error reports in 'number of array dimensions exceeds the
maximum allowed' messages, that have reported one-less dimensions. Alexey Klyukin
1 parent 03282bf commit 0c707aa

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

src/backend/executor/execQual.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
296296
ereport(ERROR,
297297
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
298298
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
299-
i, MAXDIM)));
299+
i + 1, MAXDIM)));
300300

301301
upper.indx[i++] = DatumGetInt32(ExecEvalExpr(eltstate,
302302
econtext,
@@ -324,7 +324,7 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
324324
ereport(ERROR,
325325
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
326326
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
327-
i, MAXDIM)));
327+
j + 1, MAXDIM)));
328328

329329
lower.indx[j++] = DatumGetInt32(ExecEvalExpr(eltstate,
330330
econtext,

src/backend/utils/adt/arrayfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ array_in(PG_FUNCTION_ARGS)
202202
ereport(ERROR,
203203
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
204204
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
205-
ndim, MAXDIM)));
205+
ndim + 1, MAXDIM)));
206206

207207
for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++);
208208
if (q == p) /* no digits? */
@@ -481,7 +481,7 @@ ArrayCount(const char *str, int *dim, char typdelim)
481481
ereport(ERROR,
482482
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
483483
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
484-
nest_level, MAXDIM)));
484+
nest_level + 1, MAXDIM)));
485485
temp[nest_level] = 0;
486486
nest_level++;
487487
if (ndim < nest_level)

src/pl/plpgsql/src/pl_exec.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3786,7 +3786,7 @@ exec_assign_value(PLpgSQL_execstate *estate,
37863786
ereport(ERROR,
37873787
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
37883788
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
3789-
nsubscripts, MAXDIM)));
3789+
nsubscripts + 1, MAXDIM)));
37903790
subscripts[nsubscripts++] = arrayelem->subscript;
37913791
target = estate->datums[arrayelem->arrayparentno];
37923792
} while (target->dtype == PLPGSQL_DTYPE_ARRAYELEM);

0 commit comments

Comments
 (0)