Re: Cleaning up array_in()
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Tom Lane <tgl@sss.pgh.pa.us>, Nikhil Benesch <nikhil.benesch@gmail.com>,
Nathan Bossart <nathandbossart@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2023-09-13T08:55:23Z
Lists: pgsql-hackers
Attachments
- v8-0003-Re-indent-ArrayCount.patch (application/x-patch) patch v8-0003
- v8-0005-Determine-array-dimensions-and-parse-the-elements.patch (application/x-patch) patch v8-0005
- v8-0004-Extract-loop-to-read-array-dimensions-to-subrouti.patch (application/x-patch) patch v8-0004
- v8-0001-Simplify-and-speed-up-ReadArrayStr.patch (application/x-patch) patch v8-0001
- v8-0002-Rewrite-ArrayCount-to-make-dimensionality-checks-.patch (application/x-patch) patch v8-0002
- v8-0006-refactor-ReadDimensionInt.patch (application/x-patch) patch v8-0006
- v8-0007-refactor-ReadArrayStr.patch (application/x-patch) patch v8-0007
On Wed, Sep 13, 2023 at 2:00 PM Alexander Lakhin <exclusion@gmail.com> wrote:
>
>
> Now I see only a few wrinkles.
> 1) A minor asymmetry in providing details appeared:
> select E'{"a"a}'::text[];
> ERROR: malformed array literal: "{"a"a}"
> LINE 1: select E'{"a"a}'::text[];
> ^
> DETAIL: Unexpected array element.
>
> select E'{a"a"}'::text[];
> ERROR: malformed array literal: "{a"a"}"
> LINE 1: select E'{a"a"}'::text[];
> ^
> (no DETAIL)
>
> Old behavior:
> select E'{a"a"}'::text[];
> ERROR: malformed array literal: "{a"a"}"
> LINE 1: select E'{a"a"}'::text[];
> ^
> DETAIL: Unexpected array element.
>
> select E'{"a"a}'::text[];
> ERROR: malformed array literal: "{"a"a}"
> LINE 1: select E'{"a"a}'::text[];
> ^
> DETAIL: Unexpected array element.
fixed and added these two query to the test.
> 2) CPPFLAGS="-DARRAYDEBUG" ./configure ... breaks "make check", maybe change elog(NOTICE) to elog(DEBUG1)?
> 2a) a message logged there lacks some delimiter before "lBound info":
> NOTICE: array_in- ndim 1 ( 3 -1 -1 -1 -1 -1lBound info 1 1 1 1 1 1) for {red,green,blue}
> what about changing the format to "ndim 1 ( 3 -1 -1 -1 -1 -1; lBound info: 1 1 1 1 1 1)"?
fixed. Use elog(DEBUG1) now.
> 3) It seems that new comments need polishing, in particular:
> /* initialize dim, lBound. useful for ReadArrayDimensions ReadArrayStr */
> ->?
> /* Initialize dim, lBound for ReadArrayDimensions, ReadArrayStr */
>
> Otherwise, we determine the dimensions from the in curly-braces
> ->?
> Otherwise, we determine the dimensions from the curly braces.
>
> Best regards,
> Alexander
comments updates. please check the attached.
Commits
-
Don't specify number of dimensions in cases where we don't know it.
- 8d5573b92e66 17.0 landed
-
Improve readability and error detection of array_in().
- 83472de606db 17.0 landed
-
Add trailing commas to enum definitions
- 611806cd726f 17.0 cited