WIP: extensible enums

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-08-23T09:35:09Z
Lists: pgsql-hackers

Attachments

Attached is a WIP patch that allows enums to be extended with additional 
labels arbitrarily. As previously discussed, it works by adding an 
explicit sort order column to pg_enum. It keeps track of whether the 
labels are correctly sorted by oid value, and if so uses that for 
comparison, so the possible performance impact on existing uses, and on 
almost all cases where a label is added at the end of the list, should 
be negligible.

Open items include

    * some additional error checking required
    * missing documentation
    * pg_upgrade considerations


To add a label at the end of the list, do:

  ALTER TYPE myenum ADD 'newlabel';

To add a label somewhere else, do:

  ALTER TYPE myenum ADD 'newlabel' BEFORE 'existinglabel';

or

  ALTER TYPE myenum ADD 'newlabel' AFTER 'existinglabel';


I'm not wedded to the syntax. Let the bikeshedding begin.

cheers

andrew