Thread

  1. UNDER and INHERITS

    Robert B. Easter <reaster@comptechnews.com> — 2000-05-26T12:20:03Z

    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
    
    
  2. Re: [HACKERS-OO] UNDER and INHERITS

    Chris Bitmead <chris@bitmead.com> — 2000-05-27T02:18:02Z

    "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.