Re: User defined types

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Reza Shanbehbazari Mirzaei <mirzaei(at)stud(dot)ntnu(dot)no>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: User defined types
Date: 2004-11-25 18:29:42
Message-ID: 1114.1101407382@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Reza Shanbehbazari Mirzaei <mirzaei(at)stud(dot)ntnu(dot)no> writes:
> I have a user define type called VALID_TIME. It is declared as follows:

> CREATE TYPE VALID_TIME AS (t_s TIMESTAMP, t_e TIMESTAMP);

> Once I have used this in a table declaration, is it possible to extract
> parts of it, for example to only read t_s or t_e? If so, how do I do this?

8.0 supports using composite types as table columns, but prior versions
don't really. In 8.0 you'd do something like

create table myt (vt valid_time);

select (vt).t_s from myt;
or
select (myt.vt).t_s from myt;

The parentheses are essential --- without them, you'd have for instance

select vt.t_s from myt;

which looks like a reference to field t_s of table vt, not what you
want.

You can hack around the problem in earlier versions by creating helper
functions, eg

select get_t_s(vt) from myt;

but it's ugly enough to make one wonder why bother with a composite type.

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Andrew M 2004-11-25 18:43:29 HowTo change encoding type....
Previous Message Michael Fuhr 2004-11-24 19:53:27 Re: Explicitly rolling back transaction from within a C-Language function