Re: --single-transaction hack to pg_upgrade does not work - Mailing list pgsql-hackers

From Andres Freund
Subject Re: --single-transaction hack to pg_upgrade does not work
Date
Msg-id 20121201171018.GA31780@alap2
Whole thread Raw
In response to Re: --single-transaction hack to pg_upgrade does not work  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: --single-transaction hack to pg_upgrade does not work
List pgsql-hackers
On 2012-12-01 12:00:46 -0500, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> >> The attached patch does just that. Its *not* ready yet though, as it
> >> will be apparent for everyone who reads it ;)
>
> ISTM this sort of thing ought to be safe enough, though you probably
> need to insist both that the pg_type row's xmin be current XID and
> that it not be HEAP_UPDATED.
>
> >> To really make that work in a reliable manner we would probably need
> >> an rd_createSubid for typcache entries instead of testing xmin as I have
> >> done here?
>
> What's more reliable about that?  For one thing, cache entries can get
> flushed.  The relcache goes to some lengths to hang onto rd_createSubid
> anyway, but I don't want to put equivalent logic into typcache.

I was concerned about updated rows but forgot about HEAP_UPDATED. So I
thought that it would be possible to alter the type in some generic
fashion (e.g. change owner) and then add new values.

The typecache variant would also have some hope of allowing some
intermediate changes to the type (like changing the type as above) in
the same transaction while still allowing to add new values.

But then, all that is not necessary for pg_upgrade.

Let me provide something a littlebit more mature.

Greetings,

Andres Freund

--Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: --single-transaction hack to pg_upgrade does not work
Next
From: Andres Freund
Date:
Subject: Re: --single-transaction hack to pg_upgrade does not work