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