Thread: BUG #4247: (Possible) SQL miscontruct not flagged

BUG #4247: (Possible) SQL miscontruct not flagged

From
"J6M"
Date:
The following bug has been logged online:

Bug reference:      4247
Logged by:          J6M
Email address:      j6m@adm.estp.fr
PostgreSQL version: 8.1.13
Operating system:   Linux x86-64
Description:        (Possible) SQL miscontruct not flagged
Details:

Hi,

This European afternoon, I was trying to count how many distinct values of a
row in a table exists and put this result in another table.

Instead of writing :

select distinct(ean13),(select count(*)  from fiart where ean13=a.ean13) as
n into zz from fiart as a ;

I wrote :

select distinct(ean13),(select count(*) into zz from fiart where
ean13=a.ean13) as n from fiart as a ;

I am not an expert in the most intricate shades of the SQL language. Should
the SQL interpreter not flag the query as a misconstruct statement and fire
an ERROR (or at least a WARNING) message ? (I'd guess it should).

Re: BUG #4247: (Possible) SQL miscontruct not flagged

From
Tom Lane
Date:
"J6M" <j6m@adm.estp.fr> writes:
> PostgreSQL version: 8.1.13

> I wrote :

> select distinct(ean13),(select count(*) into zz from fiart where
> ean13=a.ean13) as n from fiart as a ;

> I am not an expert in the most intricate shades of the SQL language. Should
> the SQL interpreter not flag the query as a misconstruct statement and fire
> an ERROR (or at least a WARNING) message ? (I'd guess it should).

8.2 and up do complain about this:

regression=# create table fiart (ean13 int);
CREATE TABLE
regression=# select distinct(ean13),(select count(*) into zz from fiart where ean13=a.ean13) as n from fiart as a ;
ERROR:  bad query in sub-select

            regards, tom lane