Thread: strange behavior, hoping for an explanation
Hi; I have found recently that tables in certain contexts seem to have a name pseudocolumn. I was wondering if there is any documentation as to what this is and what it signifies. postgres=# CREATE table TEST2 (a text, b text); CREATE TABLE postgres=# INSERT INTO test2 values ('aaaa', 'bbbb'); INSERT 0 1 postgres=# select t.name FROM test2 t; name ------------- (aaaa,bbbb) (1 row) However: postgres=# select name FROM test2 t; ERROR: column "name" does not exist LINE 1: select name FROM test2 t; This isn't making any sense to me. Are there certain circumstances where a tuple is cast to something like varchar(63)? Does this pose pitfals for any columns named 'name' in other contexts? Best Wishes, Chris Travers
Chris Travers <chris.travers@gmail.com> writes: > I have found recently that tables in certain contexts seem to have a > name pseudocolumn. I was wondering if there is any documentation as > to what this is and what it signifies. I/O conversion cast from composite type to string. You might find this 9.1 patch informative: http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=543d22fc7423747afd59fe7214f2ddf6259efc62 There's also relevant discussion in the mailing lists shortly before that. regards, tom lane
See documentation, chapter Viii.E.2.2.2 2011/11/11, Chris Travers <chris.travers@gmail.com>: > Hi; > > I have found recently that tables in certain contexts seem to have a > name pseudocolumn. I was wondering if there is any documentation as > to what this is and what it signifies. > > postgres=# CREATE table TEST2 (a text, b text); > CREATE TABLE > postgres=# INSERT INTO test2 values ('aaaa', 'bbbb'); > INSERT 0 1 > postgres=# select t.name FROM test2 t; > name > ------------- > (aaaa,bbbb) > (1 row) > > However: > > > postgres=# select name FROM test2 t; > ERROR: column "name" does not exist > LINE 1: select name FROM test2 t; > > This isn't making any sense to me. Are there certain circumstances > where a tuple is cast to something like varchar(63)? Does this pose > pitfals for any columns named 'name' in other contexts? > > Best Wishes, > Chris Travers > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general > -- ------------ pasman
Chris Travers wrote: > I have found recently that tables in certain contexts seem to have a > name pseudocolumn. I was wondering if there is any documentation as > to what this is and what it signifies. > > postgres=# CREATE table TEST2 (a text, b text); > CREATE TABLE > postgres=# INSERT INTO test2 values ('aaaa', 'bbbb'); > INSERT 0 1 > postgres=# select t.name FROM test2 t; > name > ------------- > (aaaa,bbbb) > (1 row) > > However: > > > postgres=# select name FROM test2 t; > ERROR: column "name" does not exist > LINE 1: select name FROM test2 t; > > This isn't making any sense to me. Are there certain circumstances > where a tuple is cast to something like varchar(63)? Does this pose > pitfals for any columns named 'name' in other contexts? I tried to your sample in 9.1.1 and 9.2devel, and both gave me ERROR: column t.name does not exist as expected. Yours, Laurenz Albe