Re: array_in sub function ReadArrayDimensions error message - Mailing list pgsql-hackers

From Tom Lane
Subject Re: array_in sub function ReadArrayDimensions error message
Date
Msg-id 974615.1720449740@sss.pgh.pa.us
Whole thread Raw
In response to array_in sub function ReadArrayDimensions error message  (jian he <jian.universality@gmail.com>)
Responses Re: array_in sub function ReadArrayDimensions error message
List pgsql-hackers
jian he <jian.universality@gmail.com> writes:
> while reviewing the json query doc,
> I found out the following error message was not quite right.

> select '[1,2]'::int[];
> ERROR:  malformed array literal: "[1,2]"
> LINE 1: select '[1,2]'::int[];
>                ^
> DETAIL:  Missing "]" after array dimensions.

> should it be:
> "Missing delimiter ":" while specifying array dimensions."

That's presuming quite a lot about the nature of the error.
All the code knows is that what follows the "1" should be
either ":" or "]", and when it sees "," instead it throws
this error.  I agree the existing message isn't great, but
trying to be more specific could confuse people even more
if the more-specific message doesn't apply either.

One possibility could be

         if (*p != ']')
             ereturn(escontext, false,
                     (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                      errmsg("malformed array literal: \"%s\"", origStr),
+                     (strchr(p, ']') != NULL) ?
+                     errdetail("Array dimensions have invalid syntax.") :
                      errdetail("Missing \"%s\" after array dimensions.",
                                "]")));

that is, only say "Missing "]"" if there's no ']' anywhere, and
otherwise just say the dimensions are wrong.  This could be fooled
by a ']' that's part of some string in the data, but even then the
errdetail isn't wrong.

Or we could just say "Array dimensions have invalid syntax."
unconditionally.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: 回复: An implementation of multi-key sort
Next
From: Tomas Vondra
Date:
Subject: Re: 回复: An implementation of multi-key sort