Thread: UNDER and INHERITS

UNDER and INHERITS

From
"Robert B. Easter"
Date:
Rather than going on and on about the subject in little emails, I've put
together some information about UNDER and INHERITS, as I see them, on a
webpage at:

http://www.comptechnews.com/~reaster/pgoo.html

People might consider what it says in deciding the fate of INHERITS and of how
to implement SQL's UNDER.  I'm of the feeling that UNDER should be implemented
according to official standard SQL-1999.  INHERITS should be left as the
PostgreSQL multiple inheritance language extension, rather than implementing
nonstandard draft proposals of UNDER, which would amount to replacing one
PostgreSQL language extension for multiple inheritance for just another
PostgreSQL language extension for the same thing, just under a different name.
It would only disrupt any userbase of INHERITS and introduce all the
problems the designers of SQL sought to avoid.  INHERITS, the way it stands,
is a good, simple inheritance mechanism.  It does not transfer attribute (as
far as I know) constraints like UNIQUE and PRIMARY KEY, nor does it allow an
index to be shared on those because such things create issues in multiple
inheritance.  ALTER TABLE ADD can be used to reestablish constraints on
inherited attributes though, but without an ability share an index like
supertable and subtable is intended (I think) to do.  The official single
inheritance UNDER, is designed to support inheritance of constraints and the
sharing of indices from the maximal supertable down into its subtables.  The
maximal supertable is required to have some UNIQUE NOT NULL attribute for this
purpose (SQL-1999 Foundation, Section 11.3, Syntax Rule 7.g).  I feel that maybe
standard single-inheritance UNDER and the current PostgreSQL extension,
INHERITS, can be used together to complement each other.  INHERITS provides a
simple multiple inherit ability.  UNDER provides a feature-rich single
inheritance container where subtables are extensions the maximal supertable.
One change I think is not unreasonable, is that INHERITS allow parent tables to
be dropped.  I'd like to know the reason why its not allowed now.

-- 
Robert B. Easter
reaster@comptechnews.com


Re: [HACKERS-OO] UNDER and INHERITS

From
Chris Bitmead
Date:
"Robert B. Easter" wrote:

>  The official single
> inheritance UNDER, is designed to support inheritance of constraints 
> and the sharing of indices from the maximal supertable down into its 
> subtables.  The
> maximal supertable is required to have some UNIQUE NOT NULL attribute 
> for this purpose (SQL-1999 Foundation, Section 11.3, Syntax Rule 7.g).  
> I feel that maybe standard single-inheritance UNDER and the current 
> PostgreSQL extension, INHERITS, can be used together to complement each  
> other.  INHERITS provides a simple multiple inherit ability.  UNDER 
> provides a feature-rich single inheritance container where subtables 
> are extensions the maximal supertable. One change I think is not 
> unreasonable, is that INHERITS allow parent tables to
> be dropped.  I'd like to know the reason why its not allowed now.

The reason dropping parent tables, and inherited indexes and constraints
don't work is that no-one has bothered to implement them. 

In so far as creating an index on only one table might be useful (as is
the case in postgres now), the extension "create index on only table"
would seem appropriate. No sense on making blanket rules that under must
inherit them and inherits can't.