On 2016-04-15 13:07:19 -0400, Robert Haas wrote: > On Thu, Apr 14, 2016 at 12:11 PM, Andres Freund <and...@anarazel.de> wrote: > > On 2016-04-14 11:50:58 -0400, Robert Haas wrote: > >> On Wed, Apr 13, 2016 at 9:58 PM, Andres Freund <and...@anarazel.de> wrote: > >> > We've recently discussed a very similar issue around > >> > http://www.postgresql.org/message-id/20160227002958.peftvmcx4dxwe...@alap3.anarazel.de > >> > > >> > Unfortunately Simon over in that thread disagreed there about fixing > >> > this by always emitting a commit record when nmsgs > 0 in > >> > RecordTransactionCommit(). I think this thread is a pretty strong hint > >> > that we actually should do so. > >> > >> Yes. I'm pretty confident that you had the right idea there, and that > >> Simon's objection was off-base. > > > > The easiest way to achieve that seems to be to just assign an xid if > > that's the case; while it's not necessarily safe/efficient to do so at > > the point the invalidation message was queued, I think it should be safe > > to do so at commit time. Seems less invasive to backpatch than to either > > support commit records without xids, or a separate record just > > transporting invalidation messages. > > I agree that's better for back-patching.
It's a bit ugly though, since we're at that stage pretty heavily assuming there's no xid assigned (on the caller level)... I've toyed with the idea of emitting a commit record that doesn't have an assigned xid, but that'd require changes on the apply side, which would be uglier than a new record type :( > I hope it won't suck performance-wise. I can't see that be the case, there's not many places where we send invalidation messages without an assigned xid. Running an instrumented build with an appropriate wal level reveals about a handfull places. Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers