diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2023-11-17 11:29:42 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2023-11-17 11:29:46 -0500 |
commit | 8d5573b92e66075c20f327d93d46a24095739a58 (patch) | |
tree | dc8c81e72f8fe0e766d12d7bf09c38bbca2f4b84 /src | |
parent | 284cbaea7c4b89ce8685a148baeaf1d7896a900e (diff) | |
download | postgresql-8d5573b92e66075c20f327d93d46a24095739a58.tar.gz postgresql-8d5573b92e66075c20f327d93d46a24095739a58.zip |
Don't specify number of dimensions in cases where we don't know it.
A few places in array_in() and plperl would report a misleading value
(always MAXDIM+1) for the number of dimensions in the input, because
we'd error out as soon as that was clearly too large rather than
scanning the entire input. There doesn't seem to be much value in
offering the true number, at least not enough to justify the extra
complication involved in trying to get it. So just remove that
parenthetical remark. We already have other places that do it
like that, anyway.
Per suggestions from Alexander Lakhin and Heikki Linnakangas.
Discussion: https://postgr.es/m/2794005.1683042087@sss.pgh.pa.us
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/arrayfuncs.c | 8 | ||||
-rw-r--r-- | src/pl/plperl/expected/plperl_array.out | 2 | ||||
-rw-r--r-- | src/pl/plperl/plperl.c | 4 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index d71967de01f..631012a0f28 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -429,8 +429,8 @@ ReadArrayDimensions(char **srcptr, int *ndim_p, int *dim, int *lBound, if (ndim >= MAXDIM) ereturn(escontext, false, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - ndim + 1, MAXDIM))); + errmsg("number of array dimensions exceeds the maximum allowed (%d)", + MAXDIM))); q = p; if (!ReadDimensionInt(&p, &i, origStr, escontext)) @@ -641,8 +641,8 @@ ReadArrayStr(char **srcptr, if (nest_level >= MAXDIM) ereturn(escontext, false, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - nest_level + 1, MAXDIM))); + errmsg("number of array dimensions exceeds the maximum allowed (%d)", + MAXDIM))); nelems[nest_level] = 0; nest_level++; diff --git a/src/pl/plperl/expected/plperl_array.out b/src/pl/plperl/expected/plperl_array.out index bd04a062fb9..260a55ea7e9 100644 --- a/src/pl/plperl/expected/plperl_array.out +++ b/src/pl/plperl/expected/plperl_array.out @@ -61,7 +61,7 @@ select plperl_sum_array('{{{{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}}, {{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}}, {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}}}' ); -ERROR: number of array dimensions (7) exceeds the maximum allowed (6) +ERROR: number of array dimensions exceeds the maximum allowed (6) LINE 1: select plperl_sum_array('{{{{{{{1,2},{3,4}},{{5,6},{7,8}}},{... ^ select plperl_sum_array('{{{1,2,3}, {4,5,6,7}}, {{7,8,9}, {10, 11, 12}}}'); diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 863864253f9..d68ad7be345 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -1201,8 +1201,8 @@ array_to_datum_internal(AV *av, ArrayBuildState **astatep, if (cur_depth + 1 > MAXDIM) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", - cur_depth + 1, MAXDIM))); + errmsg("number of array dimensions exceeds the maximum allowed (%d)", + MAXDIM))); /* OK, add a dimension */ dims[*ndims] = av_len(nav) + 1; (*ndims)++; |