hash: Fix write-ahead logging bugs related to init forks.
authorRobert Haas <rhaas@postgresql.org>
Mon, 17 Jul 2017 16:03:35 +0000 (12:03 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 17 Jul 2017 16:03:35 +0000 (12:03 -0400)
commit09c2e7cd2ff0b884625c37ce8249832820c58710
tree215a71f259bdf3dd5451fca4002fbc62d1c66fd4
parent2f7f45a64badec18ce75e44ca35c078f08e2651e
hash: Fix write-ahead logging bugs related to init forks.

One, logging for CREATE INDEX was oblivious to the fact that when
an unlogged table is created, *only* operations on the init fork
should be logged.

Two, init fork buffers need to be flushed after they are written;
otherwise, a filesystem-level copy following recovery may do the
wrong thing.  (There may be a better fix for this issue than the
one used here, but this is transposed from the similar logic already
present in XLogReadBufferForRedoExtended, and a broader refactoring
after beta2 seems inadvisable.)

Amit Kapila, reviewed by Ashutosh Sharma, Kyotaro Horiguchi,
and Michael Paquier

Discussion: http://postgr.es/m/CAA4eK1JpcMsEtOL_J7WODumeEfyrPi7FPYHeVdS7fyyrCrgp4w@mail.gmail.com
src/backend/access/hash/hash_xlog.c
src/backend/access/hash/hashpage.c