Обсуждение: 8.4 versus 8.2 against nonexistent column "name" ...

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

8.4 versus 8.2 against nonexistent column "name" ...

От
James Robinson
Дата:
Can anyone shine a light on why 8.4 behaves surprisingly when being  
queried for a bogus column "name", but only using qualified table/ 
column references.

Here's a sample script:

-----
create table foo
(id int,x int
);

insert into foo(id, x)
values(1, 23),(2, 43),(4, 45);

-- Fails on both -- no column named 'name'
select name from foo;

-- Fails on 8.2, still no 'name' column, but 8.4 succeeds returning  
whole rows.
select f.name from foo f;
----

On 8.2.11, both selects fail:

CREATE TABLE
INSERT 0 3
ERROR:  column "name" does not exist
LINE 1: select name from foo;              ^
ERROR:  column f.name does not exist
LINE 1: select f.name from foo f;              ^


On 8.4.2, the first select fails, but the second succeeds, returning  
whole rows wrapped up like tuples:

CREATE TABLE
INSERT 0 3
ERROR:  column "name" does not exist
LINE 1: select name from foo;              ^ name
--------
(1,23)
(2,43)
(4,45)
(3 rows)

A quick skim through the 8.3. and 8.4. release notes found nothing  
interesting related to 'name'.

Thanks!
----
James Robinson
Socialserve.com



Re: 8.4 versus 8.2 against nonexistent column "name" ...

От
Osvaldo Kussama
Дата:
2010/3/17 James Robinson <jlrobins@socialserve.com>:
> Can anyone shine a light on why 8.4 behaves surprisingly when being queried
> for a bogus column "name", but only using qualified table/column references.
>
> Here's a sample script:
>
> -----
> create table foo
> (
>        id int,
>        x int
> );
>
> insert into foo(id, x)
> values
>        (1, 23),
>        (2, 43),
>        (4, 45);
>
> -- Fails on both -- no column named 'name'
> select name from foo;
>
> -- Fails on 8.2, still no 'name' column, but 8.4 succeeds returning whole
> rows.
> select f.name from foo f;
> ----
>
> On 8.2.11, both selects fail:
>
> CREATE TABLE
> INSERT 0 3
> ERROR:  column "name" does not exist
> LINE 1: select name from foo;
>              ^
> ERROR:  column f.name does not exist
> LINE 1: select f.name from foo f;
>              ^
>
>
> On 8.4.2, the first select fails, but the second succeeds, returning whole
> rows wrapped up like tuples:
>
> CREATE TABLE
> INSERT 0 3
> ERROR:  column "name" does not exist
> LINE 1: select name from foo;
>              ^
>  name
> --------
> (1,23)
> (2,43)
> (4,45)
> (3 rows)
>
> A quick skim through the 8.3. and 8.4. release notes found nothing
> interesting related to 'name'.
>


See this thread:
http://archives.postgresql.org/pgsql-general/2010-02/msg01035.php

Osvaldo