Re: inherited type

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Miguel Angel Tribaldos Hervas <mitriher(at)teleco(dot)upv(dot)es>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: inherited type
Date: 2005-04-01 15:42:16
Message-ID: 20050401154216.GA59714@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Apr 01, 2005 at 12:42:19PM +0200, Miguel Angel Tribaldos Hervas wrote:
>
> I am working with inheritance in postgresql 7.4. If I create a table named A,
> and another named B that inherits from A, if I perform a query such a
> "SELECT * FROM A" (without ONLY clause),
> how can I get the type (identifier from pg_type) of the returned records??

You can look at the tableoid system column to get the oid from
pg_class:

CREATE TABLE parent (pid integer);
CREATE TABLE child (cid integer) INHERITS (parent);

INSERT INTO parent (pid) VALUES (1);
INSERT INTO child (pid, cid) VALUES (2, 3);

SELECT tableoid, tableoid::regclass, * FROM parent;
tableoid | tableoid | pid
----------+----------+-----
39455 | parent | 1
39457 | child | 2
(2 rows)

If necessary, you could join tableoid against pg_type.typrelid
or pg_class.oid:

SELECT t.typname, p.*
FROM parent AS p
JOIN pg_type AS t ON t.typrelid = p.tableoid;
typname | pid
---------+-----
parent | 1
child | 2
(2 rows)

SELECT c.relname, p.*
FROM parent AS p
JOIN pg_class AS c ON c.oid = p.tableoid;
relname | pid
---------+-----
parent | 1
child | 2
(2 rows)

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

In response to

  • inherited type at 2005-04-01 10:42:19 from Miguel Angel Tribaldos Hervas

Browse pgsql-general by date

  From Date Subject
Next Message Scott Marlowe 2005-04-01 15:43:38 Re: importance of bgwriter_percent
Previous Message Tom Lane 2005-04-01 15:30:04 Re: inherited type