Thread: BUG #6306: sql parser: weird behaviour when selecting tablename.'name' from a table

The following bug has been logged online:

Bug reference:      6306
Logged by:
Email address:      karacho@kommespaeter.de
PostgreSQL version: 8.4
Operating system:   Windows XP
Description:        sql parser: weird behaviour when selecting
tablename.'name' from a table
Details:

Selecting (nonexistant) column 'name' or 'varchar' results in an error.
Selecting qualified nonexistant columns 'name' or 'varchar', you get the
record as record. The view definition shows * casted to name or varchar.

db=# create temp table tmp_table (a int, b text);
CREATE TABLE
db=# create view v_tmp as select name from tmp_table;
FEHLER:  Spalte »name« existiert nicht
ZEILE 1: create view v_tmp as select name from tmp_table;
                                     ^
db=# create view v_tmp as select tmp_table.name, tmp_table.varchar from
tmp_table;
HINWEIS:  Sicht »v_tmp« wird eine temporäre Sicht
CREATE VIEW
db=# \d v_tmp
         Sicht »pg_temp_1.v_tmp«
 Spalte  |        Typ        | Attribute
---------+-------------------+-----------
 name    | name              |
 varchar | character varying |
Sichtdefinition:
 SELECT tmp_table.*::name AS name, tmp_table.*::character varying AS
"varchar"
   FROM tmp_table;

Re: BUG #6306: sql parser: weird behaviour when selecting tablename.'name' from a table

From
Heikki Linnakangas
Date:
On 24.11.2011 11:44, karacho@kommespaeter.de wrote:
> PostgreSQL version: 8.4
> ...
> Selecting (nonexistant) column 'name' or 'varchar' results in an error.
> Selecting qualified nonexistant columns 'name' or 'varchar', you get the
> record as record. The view definition shows * casted to name or varchar.
>
> db=# create temp table tmp_table (a int, b text);
> CREATE TABLE
> db=# create view v_tmp as select name from tmp_table;
> FEHLER:  Spalte »name« existiert nicht
> ZEILE 1: create view v_tmp as select name from tmp_table;
>                                       ^
> db=# create view v_tmp as select tmp_table.name, tmp_table.varchar from
> tmp_table;

See: http://archives.postgresql.org/pgsql-sql/2011-08/msg00028.php

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com