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/ ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match