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.