From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: zengman@halodbtech.com
Subject: BUG #18632: Whether you need to consider modifying the array's handling of delimiters?
Date: Wed, 25 Sep 2024 07:57:22 +0000
Message-ID: <18632-15cedd7d4154ea2a@postgresql.org> (raw)
The following bug has been logged on the website:
Bug reference: 18632
Logged by: Man Zeng
Email address: zengman@halodbtech.com
PostgreSQL version: 14.10
Operating system: centos-8
Description:
Hi, I found a problem with array separator handling.
The current handling of delimiters is not quite as expected (not very
flexible).
The test SQL and results are shown below.
[postgres@halo-centos-8-release ~]$ psql
psql (14.10)
Type "help" for help.
postgres=# CREATE OR REPLACE FUNCTION arrayfunc()
postgres-# RETURNS _varchar
postgres-# AS $$
postgres$# SELECT '{''a,3'',''b'',''c''}'::_varchar;
postgres$# $$ LANGUAGE SQL;
CREATE FUNCTION
postgres=# -- array cstring
postgres=# SELECT arrayfunc();
arrayfunc
-----------------
{'a,3','b','c'}
(1 row)
postgres=# -- length is 4
postgres=# SELECT array_length(arrayfunc(), 1);
array_length
--------------
4
(1 row)
postgres=# -- first element
postgres=# SELECT (arrayfunc())[1];
arrayfunc
-----------
'a
(1 row)
postgres=# -- second element
postgres=# SELECT (arrayfunc())[2];
arrayfunc
-----------
3'
(1 row)
postgres=# -- other
postgres=# SELECT (arrayfunc())[3];
arrayfunc
-----------
'b'
(1 row)
postgres=# SELECT (arrayfunc())[4];
arrayfunc
-----------
'c'
(1 row)
postgres=# -- The following SQL tests are as expected
postgres=# CREATE OR REPLACE FUNCTION arrayfunc2()
postgres-# RETURNS _varchar
postgres-# AS $$
postgres$# SELECT '{''a-3'',''b'',''c''}'::_varchar;
postgres$# $$ LANGUAGE SQL;
CREATE FUNCTION
postgres=# -- array cstring
postgres=# SELECT arrayfunc2();
arrayfunc2
-----------------
{'a-3','b','c'}
(1 row)
postgres=# -- length is 3
postgres=# SELECT array_length(arrayfunc2(), 1);
array_length
--------------
3
(1 row)
postgres=# -- first element
postgres=# SELECT (arrayfunc2())[1];
arrayfunc2
------------
'a-3'
(1 row)
So should we consider modifying "array_in" to enhance the handling of
separators to be more consistent with people's expectations?
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, zengman@halodbtech.com
Subject: Re: BUG #18632: Whether you need to consider modifying the array's handling of delimiters?
In-Reply-To: <18632-15cedd7d4154ea2a@postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox