Improve error messages for malformed array input strings.
Make the error messages issued by array_in() uniformly follow the style
ERROR: malformed array literal: "actual input string"
DETAIL: specific complaint here
and rewrite many of the specific complaints to be clearer.
The immediate motivation for doing this is a complaint from Josh Berkus
that json_to_record() produced an unintelligible error message when
dealing with an array item, because it tries to feed the JSON-format
array value to array_in(). Really it ought to be smart enough to
perform JSON-to-Postgres array conversion, but that's a future feature
not a bug fix. In the meantime, this change is something we agreed
we could back-patch into 9.4, and it should help de-confuse things a bit.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/475aedd1ef0c0f9fc9d675dd2286380d14804975
Modified Files
--------------
src/backend/utils/adt/arrayfuncs.c | 76 +++++++++++++++++++++----------
src/pl/plperl/expected/plperl_array.out | 3 +-
src/test/regress/expected/arrays.out | 6 +++
3 files changed, 60 insertions(+), 25 deletions(-)