Re: Removing pg_migrator limitations
Bruce Momjian <bruce@momjian.us>
From: Bruce Momjian <bruce@momjian.us>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Greg Stark <gsstark@mit.edu>, Andrew Dunstan <andrew@dunslane.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2009-12-26T18:50:33Z
Lists: pgsql-hackers
Attachments
- /pgpatches/pg_enum (text/x-diff) patch
Bruce Momjian wrote: > Bruce Momjian wrote: > > Tom Lane wrote: > > > Bruce Momjian <bruce@momjian.us> writes: > > > > Tom Lane wrote: > > > >> The reason I don't want to do it that way is that then you need two > > > >> ugly kluges in the backend, not just one. With the zero-and-add-one > > > >> approach there is no need to have a "next enum oid" variable at all. > > > > > > > Uh, I still need that variable because that is how we are going to set > > > > the oid in EnumValuesCreate(), unless we want to add dummy oid-value > > > > arguments to that function for use only by the binary upgrade > > > > server-side function. > > > > > > Please go back and re-read what I suggested: you need a function along > > > the lines of > > > add_enum_member(enum-type, 'value name', value-oid) > > > and then there's no need for any saved state. So what if it has a > > > different signature from the other pg_migrator special functions? > > > It's not doing the same thing. > > > > OK, right, I can get rid of the enum function that just sets the next > > oid value if I do all the enum value creation via function calls. I > > will work in that direction then. > > There is only one call to EnumValuesCreate() so maybe adding a > binary-upgrade-only parameter to the function will be the cleanest > approach. Here is a patch to allow EnumValuesCreate() to create labels with specified oids, with pg_dump support. This is done cleanly now that we allow zero-label enums. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +