Обсуждение: BUG #4247: (Possible) SQL miscontruct not flagged

Поиск
Список
Период
Сортировка

BUG #4247: (Possible) SQL miscontruct not flagged

От
"J6M"
Дата:
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

От
Tom Lane
Дата:
"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