On Tue, Sep 16, 2014 at 06:56:24PM +0400, Alexander Korotkov wrote:
> On Tue, Sep 16, 2014 at 12:14 PM, Emre Hasegeli <emre@hasegeli.com> wrote:
>
> > > Changing the default opclasses should work if we make
> > > pg_dump --binary-upgrade dump the default opclasses with indexes
> > > and exclusion constraints. I think it makes sense to do so in
> > > --binary-upgrade mode. I can try to come with a patch for this.
> >
> > Can you explain it a bit more detail? I didn't get it.
>
> pg_upgrade uses pg_dump --binary-upgrade to dump the schema of
> the old database. Now, it generates CREATE INDEX statements without
> explicit opclass if opclass is the default. We can change pg_dump
> to generate the statements with opclass even if opclass is the default
> in --binary-upgrade mode.
>
>
> Thanks, I get it. I checked pg_dump implementation. It appears to be not as
> easy as it could be. pg_dump doesn't form index definition by itself. It calls
> pg_get_indexdef function. This function have no option to dump names of default
> opclasses. Since we can't change behaviour of old postgres version, we have to
> make pg_dump form index definition by itself.
Well, the server is also operating in binary-upgrade mode, so you could
have the server-side function pg_get_indexdef() behave differently for
pg_upgrade.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ Everyone has their own god. +