Обсуждение: Port Bug Report: missing commas in IN( ) ignored; bracketing entries ignored
Port Bug Report: missing commas in IN( ) ignored; bracketing entries ignored
От
Unprivileged user
Дата:
============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : Diab Jerius
Your email address : djerius@cfa.harvard.edu
Category : runtime: front-end
Severity : non-critical
Summary: missing commas in IN( ) ignored; bracketing entries ignored
System Configuration
--------------------
Operating System : Solaris 2.6
PostgreSQL version : 6.4.2
Compiler used : Sunpro cc
Hardware:
---------
Versions of other tools:
------------------------
gmake 3.71
flex 2.5.4
--------------------------------------------------------------------------
Problem Description:
--------------------
In psql, if a list of entries in an IN ( ) statement is
split across several lines, missing commas are not flagged as errors,
but the entries immediately before and after the missing comma
are ignored
--------------------------------------------------------------------------
Test Case:
----------
The following sql shows the problem. Note the missing comma between
the 'c' and 'd' lines in the IN( ) clause. The query
should return no rows.
drop table test;
create table test ( s text );
insert into test values ( 'a' );
insert into test values ( 'b' );
insert into test values ( 'c' );
insert into test values ( 'd' );
insert into test values ( 'e' );
select
s
from
test
where
s not in (
'a',
'b',
'c'
'd',
'e'
)
order by s
;
--------------------------------------------------------------------------
Solution:
---------
--------------------------------------------------------------------------
Re: [PORTS] Port Bug Report: missing commas in IN( ) ignored; bracketing entries ignored
От
Bruce Momjian
Дата:
> Problem Description: > -------------------- > In psql, if a list of entries in an IN ( ) statement is > split across several lines, missing commas are not flagged as errors, > but the entries immediately before and after the missing comma > are ignored > > -------------------------------------------------------------------------- > > Test Case: > ---------- > The following sql shows the problem. Note the missing comma between > the 'c' and 'd' lines in the IN( ) clause. The query > should return no rows. > > drop table test; > > create table test ( s text ); > > insert into test values ( 'a' ); > insert into test values ( 'b' ); > insert into test values ( 'c' ); > insert into test values ( 'd' ); > insert into test values ( 'e' ); > > > > select > s > from > test > where > s not in ( > 'a', > 'b', > 'c' > 'd', > 'e' > ) > order by s > ; That is the strangest parser problem I have seen in quite some time. Does anyone want to guess on a cause? -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Re: [PORTS] Port Bug Report: missing commas in IN( ) ignored; bracketing entries ignored
От
Thomas Lockhart
Дата:
> > In psql, if a list of entries in an IN ( ) statement is
> > split across several lines, missing commas are not
> > flagged as errors, but the entries immediately before
> > and after the missing comma are ignored
> Does anyone want to guess on a cause?
*raises hand* I know! I know!!
You are seeing the allowed, accepted, and required string
concatenation feature of SQL92:
postgres=> select
postgres-> 'hi'
postgres-> ' there';
?column?
--------
hi there
(1 row)
:)
- Tom
--
Thomas Lockhart lockhart@alumni.caltech.edu
South Pasadena, California
Re: [PORTS] Port Bug Report: missing commas in IN( ) ignored; bracketing entries ignored
От
Bruce Momjian
Дата:
> > > In psql, if a list of entries in an IN ( ) statement is > > > split across several lines, missing commas are not > > > flagged as errors, but the entries immediately before > > > and after the missing comma are ignored > > Does anyone want to guess on a cause? > > *raises hand* I know! I know!! > > You are seeing the allowed, accepted, and required string > concatenation feature of SQL92: > > postgres=> select > postgres-> 'hi' > postgres-> ' there'; > ?column? > -------- > hi there > (1 row) Wow, that is interesting, and would have been quite hard to find the cause. Thanks. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026