If people would like to play, I have created a little kit to help in creating first class enum types in a few seconds. It works something like this:

make TYPENAME=rainbow ENUMS=' "red", "orange", "yellow", "green", "blue", "indigo", "violet" '
   make TYPENAME=rainbow install
   psql -f /path/to/contrib/rainbow-install.sql yourdb

and you are done. Now you can do:

   create table foo( r rainbow);
   insert into foo values('red');
   select 'red'::rainbow < 'green'::rainbow; <-- yields true
   select rainbow_order('yellow');  <-- yields 2

The kit is at  http://developer.postgresql.org/~adunstan/enumkit.tgz

Needs 8.0 or later, since it use PGXS.

Maximum number of values is 32767 - but if you use that many you're insane anyway :-)

I did this as part of thinking about how we might do enums properly. AS Chris KL recently noted - it is very often asked for. So this is not the end of the road, just a tiny step at the beginning.

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to