Re: [BUGS] General Bug Report: empty SELECT WHEREs return error

Fomichev Michael <fomichev@null.ru>

From: Fomichev Michael <fomichev@null.ru>
To: Austin Schutz <tex@habit.com>
Cc: pgsql-bugs@postgreSQL.org
Date: 1999-06-23T19:54:45Z
Lists: pgsql-bugs

On Wed, 23 Jun 1999, Unprivileged user wrote:

> Your name               : Austin Schutz
> Your email address      : tex@habit.com
> 
> Category                : runtime: back-end: SQL
> Severity                : serious
> 
> Summary: empty SELECT WHEREs return error
> 
> System Configuration
> --------------------
>   Operating System   : SunOS 5.6
> 
>   PostgreSQL version : 6.0
> 
>   Compiler used      : gcc 2.8.1
> 
> Problem Description:
> --------------------
> select * from foo where bar = "baz"
> produces "ERROR:  attribute 'hna' not found"
> if there is no row with bar == "baz".
> Rather than errorring an empty set should be returned.
> This is important for cross-db-portable applications
> which need to know whether a legitimate query returns
> no rows vs. a 'bad' query.
> 	It would be possible to test the error response for
> being the specific 'attribute not found' error, but this is
> extremely un-portable behavior (code would only work on
> postgres) and further would mask cases where column bar
> doesn't exist and the 'attribute not found' error is
> correct.
> 
> --------------------------------------------------------------------------
> 
> Test Case:
> ----------
> create table foo (bar char(1));
> select * from foo where ( bar = "baz" );
> ERROR:  attribute 'baz' not found
> 
You should use a single quotes:
create table foo (bar char(1));
select * from foo where bar='baz';
bar
---
(0 rows)


@------------------+-----------------------------------------------@
| Fomichev Michail | The Government of Kamchatka region.           |
|<fomichev@null.ru>| The Labour and Social Development Department. |
`------------------+-----------------------------------------------'