Search Postgresql Archives

Re: SELECT table_type FROM table;

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"A.M." <agentm@xxxxxxxxxxxxxxxxxxxxx> writes:
> agentm=# select testo from testo;
>    testo
> -----------
>  (1,hello)
>  (2,text)
> (2 rows)

> Obviously, this is intentional behavior but where is it documented?

Well, it's mentioned in passing in section 32.4.2 "SQL Functions on
Composite Types",
http://www.postgresql.org/docs/8.1/static/xfunc-sql.html#AEN31648
where it says "The table row can alternatively be referenced using just
the table name".  Personally I prefer the syntax "table.*"; the syntax
without * is a holdover from PostQUEL IIRC.

> agentm=# select *::nice from testo;
> ERROR:  syntax error at or near "::" at character 9

The syntactically right thing would be 

regression=# select testo::nice from testo;
ERROR:  cannot cast type testo to nice
or
regression=# select (testo.*)::nice from testo;
ERROR:  cannot cast type testo to nice

We don't have any automatic support for casts from one composite type to
another, but you can add your own:

regression=# create function nice(testo) returns nice language sql as $$
regression$# select $1.* $$ strict immutable;
CREATE FUNCTION
regression=# create cast(testo as nice) with function nice(testo);
CREATE CAST
regression=# select (testo.*)::nice from testo;
   testo
-----------
 (1,hello)
 (2,text)
(2 rows)


			regards, tom lane


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux