]> granicus.if.org Git - postgresql/commitdiff
Fix wrong error reports in 'number of array dimensions exceeds the
authorItagaki Takahiro <itagaki.takahiro@gmail.com>
Tue, 1 Feb 2011 06:21:32 +0000 (15:21 +0900)
committerItagaki Takahiro <itagaki.takahiro@gmail.com>
Tue, 1 Feb 2011 06:25:48 +0000 (15:25 +0900)
maximum allowed' messages, that have reported one-less dimensions.

Alexey Klyukin

src/backend/executor/execQual.c
src/backend/utils/adt/arrayfuncs.c
src/pl/plpgsql/src/pl_exec.c

index 5dae37d5d60ebecad6bf8ff9455ccbaed76a4740..3895b65078095a4976818bc637ef0e5fa5eb1587 100644 (file)
@@ -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,
index f06c4e565710db06ba803d8734c9f7f52ba2a400..b36af2c0f09b55646db3da61671737edf8b7f101 100644 (file)
@@ -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)
index 87a9f9de0e2e3db47dfd5a04d55a11d1731225f3..104765be18ff25dd60726661527663df467ddb29 100644 (file)
@@ -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);