On Thu, Mar 24, 2016 at 2:11 AM, Michael Paquier <michael.paqu...@gmail.com> wrote: > On Wed, Mar 23, 2016 at 11:32 PM, Robert Haas <robertmh...@gmail.com> wrote: >> Well, I wouldn't go that far. It seems pretty clear that remote_apply >> by itself is useful - I can't imagine anybody seriously arguing the >> contrary, whatever they think of this implementation. My view, >> though, is that by itself that's pretty limiting: you can only have >> one standby, and if that standby falls over then you lose >> availability. Causal reads fixes both of those problems - admittedly >> that requires some knowledge in the application or the pooler, but >> it's no worse than SSI in that regard. Still, half a loaf is better >> than none, and I imagine even just getting remote_apply would make a >> few people quite happy. > > OK, let's do so then, even if causal reads don't get into 9.6 users > could get advantage of remote_apply on multiple nodes if the N-sync > patch gets in. > > Just looking at 0001. > > - <literal>remote_write</>, <literal>local</>, and <literal>off</>. > + <literal>remote_write</>, <literal>remote_apply</>, > <literal>local</>, and <literal>off</>. > The default, and safe, setting > I imagine that a run of pgindent would be welcome for such large lines.
I didn't think pgindent touched the docs. But I agree lines over 80 characters should be wrapped if they're being modified anyway. > +#define XactCompletionSyncApplyFeedback(xinfo) \ > + (!!(xinfo & XACT_COMPLETION_SYNC_APPLY_FEEDBACK)) > That's not directly something this patch should take care of, but the > notation "!!" has better be avoided (see stdbool thread with VS2015). +1. > - SyncRepWaitForLSN(gxact->prepare_end_lsn); > + SyncRepWaitForLSN(gxact->prepare_end_lsn, false); > Isn't it important to ensure that a PREPARE LSN is applied as well on > the standby with remote_apply? Say if an application prepares a > transaction, it would commit locally but its LSN may not be applied on > the standby with this patch. That would be a surprising behavior for > the user. You need to wait for COMMIT PREPARED, but I don't see why you need to wait for PREPARE itself. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers