why table.name is translated to (name.*)::name? - Mailing list pgsql-hackers

From Pavel Stehule
Subject why table.name is translated to (name.*)::name?
Date
Msg-id 162867791003300641h71e033d5n67d341c0aacf6ef7@mail.gmail.com
Whole thread Raw
Responses Re: why table.name is translated to (name.*)::name?
List pgsql-hackers
Hello,

I was noticed on little bit strange feature of PostgreSQL 8.4 and 9.0

we can use a non existing column "name". What does mean?


postgres=# create table h(a int, b int);
CREATE TABLE
Time: 2,604 ms
postgres=# insert into h values(199,22);
INSERT 0 1
Time: 0,970 ms
postgres=# explain verbose select h.name from h;                        QUERY PLAN
-------------------------------------------------------------Seq Scan on public.h  (cost=0.00..42.10 rows=2140
width=32) Output: (h.*)::name
 
(2 rows)

Time: 0,727 ms
postgres=# select h.name from h;  name
----------(199,22)
(1 row)

Time: 0,589 ms
postgres=#

Regards
Pavel Stehule


pgsql-hackers by date:

Previous
From: Anindya Jyoti Roy
Date:
Subject: Re: GSoC
Next
From: Alvaro Herrera
Date:
Subject: Re: Questions about 9.0 release note