hash: Fix write-ahead logging bugs related to init forks.

Robert Haas <rhaas@postgresql.org>

Commit: 09c2e7cd2ff0b884625c37ce8249832820c58710
Author: Robert Haas <rhaas@postgresql.org>
Date: 2017-07-17T16:03:35Z
Releases: 10.0
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

Files

PathChange+/−
src/backend/access/hash/hashpage.c modified +16 −7
src/backend/access/hash/hash_xlog.c modified +27 −0

Discussion