Обсуждение: BUG #1313: problems with array syntax parsing in SQL statements

Поиск
Список
Период
Сортировка

BUG #1313: problems with array syntax parsing in SQL statements

От
"PostgreSQL Bugs List"
Дата:
The following bug has been logged online:

Bug reference:      1313
Logged by:          Pascal Pochet

Email address:      postgresql@p3-consulting.net

PostgreSQL version: 7.4.5

Operating system:   Mac OS X

Description:        problems with array syntax parsing  in SQL statements

Details:

In INSERT statements the string '{}' is correctly parsed as an empty array
when '{ }' is not, as if the space was signifiant, and generates a syntax
error.

Also
'{"A", "B"}' will be correctly parsed when
'{"A", "B" }' (note the space before the closing brace ) will generate the
following entry '{"A","B "} : the space(s) between the latest double quote
and the closing brace is/are added to the latest item of the array.

Re: BUG #1313: problems with array syntax parsing in SQL

От
Joe Conway
Дата:
PostgreSQL Bugs List wrote:
> In INSERT statements the string '{}' is correctly parsed as an empty array
> when '{ }' is not, as if the space was signifiant, and generates a syntax
> error.
>
> Also
> '{"A", "B"}' will be correctly parsed when
> '{"A", "B" }' (note the space before the closing brace ) will generate the
> following entry '{"A","B "} : the space(s) between the latest double quote
> and the closing brace is/are added to the latest item of the array.


Fixed in cvs:

regression=# select version();
                              version
----------------------------------------------------------------------------
  PostgreSQL 8.0.0beta4 on x86_64-unknown-linux-gnu, compiled by GCC gcc
  (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
(1 row)

regression=# create table test(f1 text[]);
CREATE TABLE
regression=# insert into test values ('{"A", "B" }');
INSERT 155428 1
regression=# select * from test;
   f1
-------
  {A,B}
(1 row)

regression=# insert into test values ('{ }');
INSERT 155429 1
regression=# select * from test;
   f1
-------
  {A,B}
  {}
(2 rows)

Joe