Обсуждение: BUG #13273: A query that returns wrongly labeled result instead of syntax error

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

BUG #13273: A query that returns wrongly labeled result instead of syntax error

От
v-brody@seznam.cz
Дата:
The following bug has been logged on the website:

Bug reference:      13273
Logged by:          Missing comma in SELECT list results in wrong label without error
Email address:      v-brody@seznam.cz
PostgreSQL version: 9.4.1
Operating system:   CentOS Linux
Description:

Following query (notice the missing comma between top-level "x" and "y")
returns 1 (which is "x" value) under label "y" without any warning.

select
    "x" "y"
from
(
    select
        "a" as "x", "b" as "y"
    from
    (
        select 1 as "a", 2 as "b"
    ) "subquery1"
) "subquery2";

Expected behavior: syntax error

Environment:
PostgreSQL 9.4.1 on Linux version 2.6.32-504.16.2.el6.x86_64

Re: BUG #13273: A query that returns wrongly labeled result instead of syntax error

От
Thomas Munro
Дата:
On Tue, May 12, 2015 at 10:46 AM,  <v-brody@seznam.cz> wrote:
> The following bug has been logged on the website:
>
> Bug reference:      13273
> Logged by:          Missing comma in SELECT list results in wrong label without error
> Email address:      v-brody@seznam.cz
> PostgreSQL version: 9.4.1
> Operating system:   CentOS Linux
> Description:
>
> Following query (notice the missing comma between top-level "x" and "y")
> returns 1 (which is "x" value) under label "y" without any warning.
>
> select
>     "x" "y"
> from
> (
>     select
>         "a" as "x", "b" as "y"
>     from
>     (
>         select 1 as "a", 2 as "b"
>     ) "subquery1"
> ) "subquery2";
>
> Expected behavior: syntax error

That is valid syntax, the AS keyword is optional (in PostgreSQL as
well as in standard SQL):

http://www.postgresql.org/docs/9.4/static/sql-select.html

postgres=# select 42 as y;
 y
----
 42
(1 row)

postgres=# select 42 y;
 y
----
 42
(1 row)

--
Thomas Munro
http://www.enterprisedb.com

Re: BUG #13273: A query that returns wrongly labeled result instead of syntax error

От
Václav Brodec
Дата:
Thomas Munro writes:
> On Tue, May 12, 2015 at 10:46 AM,  <v-brody@seznam.cz> wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference:      13273
>> Logged by:          Missing comma in SELECT list results in wrong label without error
>> Email address:      v-brody@seznam.cz
>> PostgreSQL version: 9.4.1
>> Operating system:   CentOS Linux
>> Description:
>>
>> Following query (notice the missing comma between top-level "x" and "y")
>> returns 1 (which is "x" value) under label "y" without any warning.
>>
>> select
>>      "x" "y"
>> from
>> (
>>      select
>>          "a" as "x", "b" as "y"
>>      from
>>      (
>>          select 1 as "a", 2 as "b"
>>      ) "subquery1"
>> ) "subquery2";
>>
>> Expected behavior: syntax error
>
> That is valid syntax, the AS keyword is optional (in PostgreSQL as
> well as in standard SQL):
>
> http://www.postgresql.org/docs/9.4/static/sql-select.html
>
> postgres=# select 42 as y;
>   y
> ----
>   42
> (1 row)
>
> postgres=# select 42 y;
>   y
> ----
>   42
> (1 row)
>

I'm really sorry, I realized that immediately after submitting.

Although I think that demanding explicit AS in this case (when
overshadowing some name) might be useful. :-)

Thank you for your time,

Václav Brodec