Thread

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

    PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2004-11-11T19:55:30Z

    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. 
    
    
    
    
    
  2. Re: BUG #1313: problems with array syntax parsing in SQL

    Joe Conway <mail@joeconway.com> — 2004-11-12T16:42:01Z

    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