REFERENCES misbehaves with inheritance - Mailing list pgsql-bugs

From Steve White
Subject REFERENCES misbehaves with inheritance
Date
Msg-id 20100131140720.GA10565@cashmere.aip.de
Whole thread Raw
Responses Re: REFERENCES misbehaves with inheritance
List pgsql-bugs
Hi,

I'm aware that this is a manifestation of the problem mentioned in the
Caveats subsection of the Inheritance section.  I want to emphasize it,
and maybe rattle your cage a bit.

I find the Postgres notion of inheritance very compelling. Conceptually
it does what I want, when I create tables of related, but different kinds
of things.

Unfortunately these little ommissions really foul up implementations
using inheritance.

For instance:  a field that REFERENCES a field in an inherited table is
unaware that records have been added to the inherited table, by way of
records being added to inheriting tables.

This is awful.  One is forced to make choices between various evils.

EXAMPLE:
============================================================================

CREATE TABLE a (
  a_id   SERIAL PRIMARY KEY
);

CREATE TABLE a1 (
) INHERITS( a );

CREATE TABLE a2 (
) INHERITS( a );

CREATE TABLE b (
  b_id   SERIAL PRIMARY KEY,
  a_id   INTEGER,
  FOREIGN KEY (a_id) REFERENCES a(a_id)
);
-- ---------------------------------------

INSERT INTO a1 VALUES( DEFAULT );

-- The following results in a foreign key violation, saying
-- no row with a_id=1 is present in table "a":
INSERT INTO b VALUES( DEFAULT, CURRVAL('a_a_id_seq') );

-- However this indicates that table "a" has a row with a_id=1:
SELECT * FROM a;

============================================================================

Cheers!

--
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
| Steve White                                             +49(331)7499-202
| e-Science / AstroGrid-D                                   Zi. 35  Bg. 20
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
| Astrophysikalisches Institut Potsdam (AIP)
| An der Sternwarte 16, D-14482 Potsdam
|
| Vorstand: Prof. Dr. Matthias Steinmetz, Peter A. Stolz
|
| Stiftung privaten Rechts, Stiftungsverzeichnis Brandenburg: III/7-71-026
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

pgsql-bugs by date:

Previous
From: Steve White
Date:
Subject: Re: BUG #5272: PL/Python SELECT: return composite fields as dict, not str
Next
From: "Fujii Masao"
Date:
Subject: BUG #5304: psql using conninfo fails in connecting to the server