]> granicus.if.org Git - postgresql/commit
Fix commit_ts for standby
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 1 Oct 2015 18:06:55 +0000 (15:06 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 1 Oct 2015 18:06:55 +0000 (15:06 -0300)
commitf12e814b88d8082804bbc8b827469d8068e7252c
treefdf8dabf89b96942b45c40cde58d0ac1cb2f6b9a
parentbf4817e4f090a0a72d1849a3d61b45e7f2feadda
Fix commit_ts for standby

Module initialization was still not completely correct after commit
6b61955135e9, per crash report from Takashi Ohnishi.  To fix, instead of
trying to monkey around with the value of the GUC setting directly, add
a separate boolean flag that enables the feature on a standby, but only
for the startup (recovery) process, when it sees that its master server
has the feature enabled.
Discussion: http://www.postgresql.org/message-id/ca44c6c7f9314868bdc521aea4f77cbf@MP-MSGSS-MBX004.msg.nttdata.co.jp

Also change the deactivation routine to delete all segment files rather
than leaving the last one around.  (This doesn't need separate
WAL-logging, because on recovery we execute the same deactivation
routine anyway.)

In passing, clean up the code structure somewhat, particularly so that
xlog.c doesn't know so much about when to activate/deactivate the
feature.

Thanks to Fujii Masao for testing and Petr JelĂ­nek for off-list discussion.

Back-patch to 9.5, where commit_ts was introduced.
src/backend/access/transam/commit_ts.c
src/backend/access/transam/twophase.c
src/backend/access/transam/xact.c
src/backend/access/transam/xlog.c
src/include/access/commit_ts.h