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

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. +