enum bug

From: Elein <elein(at)varlena(dot)com>
To: GENERAL <pgsql-general(at)postgresql(dot)org>
Subject: enum bug
Date: 2016-03-11 21:36:41
Message-ID: 2833A001-CA65-41A0-95FB-49DA77A70D72@varlena.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


> Bug/Improvement:
>
> Enums belong to types, not to column values.
>
> * Create a built in function, like enum_range( type ), independent of tables
> that shows a type's enum values.
> create or replace function enum_range( typein regtype ) returns name[] language sql as
> $$
> select array_agg(enumlabel) from
> (select enumlabel
> from pg_enum e join pg_type t on (e.enumtypid = t.oid)
> where t.typtype = 'e' and t.oid = typein
> order by enumsortorder
> ) foo;
> $$;
> * When an insert into an enum column fails give the person a hint as to valid values
> * Make enum_range to not be dependent on values in the target table.
> Remove/Obsolete enum_range( enum_column ) and replace with enum_range( typein regtype )
>
> Workaround: define the enum_range( typein regtyp ) yourself.
>
>
> create type rainbow as enum ('red','orange','yellow','blue','purple');
> CREATE TYPE
> create table badinfo (color rainbow);
> CREATE TABLE
>
> -- Lousy message. Show enum list.
> insert into badinfo values ('green');
> ERROR: invalid input value for enum rainbow: "green"
> LINE 1: insert into badinfo values ('green');
>
>
> -- Lousy message.
> select enum_range(color) from foo;
> enum_range
> ------------
> (0 rows)
>
> insert into foo values ('red');
> INSERT 0 1
> insert into foo values ('blue');
> INSERT 0 1
>
> -- Ooh. Only shows the enum list for valid value in a table.
> select enum_range(color) from foo;
> enum_range
> ---------------------------------
> {red,orange,yellow,blue,purple}
> {red,orange,yellow,blue,purple}
> (2 rows)
Elein Mustain
elein(at)varlena(dot)com
510-637-9106

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Melvin Davidson 2016-03-11 21:55:52 Re: enum bug
Previous Message Wyatt Sanford 2016-03-11 21:32:33 Re: How to setup Active Directory users in Postgres 9.3.11