Re: enums

From: Rod Taylor <pg(at)rbt(dot)ca>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Michael Fuhr <mike(at)fuhr(dot)org>, "Jim C(dot) Nasby" <jnasby(at)pervasive(dot)com>
Subject: Re: enums
Date: 2005-10-28 03:07:19
Message-ID: 1130468839.846.55.camel@home
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> The other issue is ease of use.
>
> We used lookup tables in bugzilla when it was converted to work with
> Postgres. But many users will find having to do that annoying, to say
> the least. I think there's a very good case for providing true enums.

Then why did you use lookup tables instead of a varchar and a
constraint? Probably performance.

A much more general purpose but just as good solution would be the
ability to create a hidden surrogate key for a structure.

CREATE TABLE status (code varchar(20) PRIMARY KEY) WITH SURROGATE;
CREATE TABLE account (name varchar(60), status varchar(20) references
status);

Behind the scenes (transparent to the user) this gets converted to:

CREATE TABLE status (id SERIAL UNIQUE, code varchar(20) PRIMARY KEY)
WITH SURROGATE;
CREATE TABLE account (name varchar(60), status integer references
status(id));

SELECT * FROM account; would be rewritten as
SELECT * FROM (SELECT name, code FROM account JOIN status USING (id)) AS
account;

Enum might be good for a short list of items but something like the
above should be good for any common value that we manually create
surrogate keys for today but without the clutter or the application
needing to know.

If PostgreSQL had an updatable view implementation it would be pretty
simple to implement.

--

In response to

  • Re: enums at 2005-10-28 02:34:57 from Andrew Dunstan

Responses

  • Re: enums at 2005-10-28 14:16:15 from Andrew Dunstan
  • Re: enums at 2005-10-28 18:20:51 from Jim C. Nasby

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephan Szabo 2005-10-28 03:37:49 Re: pl/pgsql breakage in 8.1b4?
Previous Message Andrew Dunstan 2005-10-28 02:34:57 Re: enums