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:23:55 +0900 | 
| commit | 9a012852897fec73ed1459486d6e8426c674d9ad (patch) | |
| tree | 1177bd7350b6e1bf561823552ed1f4b2421d07b8 | |
| parent | 6bfa6b0867c370d72cbaeba18d6d3a5d80eae0e7 (diff) | |
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 bfcce0fd716..e05d6bd79f0 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -294,7 +294,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, @@ -322,7 +322,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 d6ff2a15ec1..df7190dbfc8 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -202,7 +202,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? */ @@ -481,7 +481,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 16277ceaa0f..9d4f59ff6a2 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3763,7 +3763,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); | 
