| From: | Ian Barwick <barwick(at)gmail(dot)com> |
|---|---|
| To: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: why table.name is translated to (name.*)::name? |
| Date: | 2010-03-30 14:03:33 |
| Message-ID: | 1d581afe1003300703o50ed2e67m41a6ecce62ec4854@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
2010/3/30 Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>:
> 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=#
FYI this has caused me (and presumably a few other people) a bit of
head-scratching, e.g.:
http://archives.postgresql.org/pgsql-general/2010-03/msg00362.php
I imagine it has some potential as a 'gotcha', as "name" is hardly an
uncommon column name, but it's not an issue which can easily
researched...
Ian Barwick
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2010-03-30 14:16:43 | Re: why table.name is translated to (name.*)::name? |
| Previous Message | Tom Lane | 2010-03-30 14:01:50 | Re: UUIDs generated using ossp-uuid on windows not unique |