Chapman Flack <c...@anastigmatix.net> writes: > I'm becoming increasingly glad I asked (or less embarrassed that I hadn't > figured it all out yet). :)
> Am I right in thinking that, for my original purpose of detoasting something > later in a transaction, all that matters is that I registered a snapshot > from the time at which I copied the toasted datum, and the resource owner > I registered it to has not been released yet, so rows referred to in the > snapshot haven't been vacuumed away? Is that a sufficient condition for > detoast to work? I believe so. > Or would I need to do something more, like push and pop that snapshot > around the detoast call? You shouldn't need that; toast reads intentionally use a non-MVCC-aware "snapshot" to handle exactly this type of situation, where somebody is trying to pull data out of a tuple that would no longer be visible to the transaction's current snapshot. Wouldn't be a bad idea to test this, of course ;-) regards, tom lane