On 10/23/19 10:42 AM, Ravi Krishna wrote:
We noticed this bug in Redshift. It then occurred to me that this may
very well be a PG bug since Redshift is based on PG.
Reproduced it in Version 11.5
create table bugtest (fld1 char(1)) ;
insert into bugtest values('a');
insert into bugtest values('b');
insert into bugtest values('c');
insert into bugtest values('d');
insert into bugtest values('e');
select count(*) from bugtest where fld1 in ('a','b','c',
'd','e'); -> produces 5 as output.
So far so good.
Now check this:
select count(*) from bugtest where fld1 in ('a','b','c'
'd','e');
Note the missing comma after 'c'.
PG takes it a syntactically right SQL and gives 3 as output.
In SQLServer it errors out SQL Error [102] [S0001]: Incorrect syntax near 'd'.
Can't believe this bug was never found before. We ended up wasting lot of time to figure this out.
Confirmed in 9.6.
postgres@haggis:~$ psql
psql (9.6.15)
Type "help" for help.
postgres=# create table bugtest (fld1 char(1)) ;
CREATE TABLE
postgres=#
postgres=# insert into bugtest values('a');
INSERT 0 1
postgres=# insert into bugtest values('b');
INSERT 0 1
postgres=# insert into bugtest values('c');
INSERT 0 1
postgres=# insert into bugtest values('d');
INSERT 0 1
postgres=# insert into bugtest values('e');
INSERT 0 1
postgres=# select count(*) from bugtest where fld1 in ('a','b','c',
postgres(# 'd','e');
count
-------
5
(1 row)
postgres=# select count(*) from bugtest where fld1 in ('a','b','c'
postgres(# 'd','e');
count
-------
3
(1 row)
--
Angular momentum makes the world go 'round.