[This email didn't show up on the list when I sent it last monday, so
here it is again].

Hi,

I found the following bug in sunday's snapshot (I am running Linux
2.1.85 and gcc 2.8.0):

I created a table with one column and inserted one row:

jeroenv=> create table test ( a int4 );
CREATE
jeroenv=> insert into test values ( 1 );
INSERT 321708 1

Some checks:

jeroenv=> select a from test where (a=1);
a
-
1
(1 row)

jeroenv=> select a from test where (a=1) and true;
a
-
1
(1 row)

Now, instead of column 'a' I return the constant 1:

jeroenv=> select 1 from test where (a=1);
?column?
--------
       1
(1 row)

jeroenv=> select 1 from test where (a=1) and true;
?column?
--------
(0 rows)

No rows is not what I would expect.

However, with 'or' instead of 'and' returning a const value the query
works OK:

jeroenv=> select 1 from test where (a=1) or true;
?column?
--------
       1
(1 row)

jeroenv=> select 1 from test where (a=1) or false;
?column?
--------
       1
(1 row)


Cheers,

Jeroen van Vianen

Wed, 18 Feb 1998 09:57:21 +0100
Jeroen van Vianen <jeroenv@design.nl>
Bug in evaluation of AND
Jeroen van Vianen wrote:
> 
> I found the following bug in sunday's snapshot (I am running Linux
> 2.1.85 and gcc 2.8.0):

Presents in 6.2.1 too...

Caused by bad execution plan:

Result  (cost=0.00 size=0 width=0)
  ->  Seq Scan on aaa  (cost=0.00 size=0 width=0)
      ^^^^^^^^^^^^^^^
Target list of SeqScan is empty => ExecProject returns NULL...
Optimizer should put Constant into Result' childplan target list
if it's empty. Easy to fix. Anyone ?

Vadim

> 
> I created a table with one column and inserted one row:
> 
> jeroenv=> create table test ( a int4 );
> CREATE
> jeroenv=> insert into test values ( 1 );
> INSERT 321708 1
> 
> Some checks:
> 
> jeroenv=> select a from test where (a=1);
> a
> -
> 1
> (1 row)
> 
> jeroenv=> select a from test where (a=1) and true;
> a
> -
> 1
> (1 row)
> 
> Now, instead of column 'a' I return the constant 1:
> 
> jeroenv=> select 1 from test where (a=1);
> ?column?
> --------
>        1
> (1 row)
> 
> jeroenv=> select 1 from test where (a=1) and true;
> ?column?
> --------
> (0 rows)
> 
> No rows is not what I would expect.

Wed, 18 Feb 1998 17:53:11 +0700
"Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
Re: [HACKERS] Bug in evaluation of AND