On Wed, Dec 9, 2015 at 9:07 PM, Andres Freund <and...@anarazel.de> wrote: > On 2015-12-09 21:03:47 +0900, Michael Paquier wrote: >> Oh, OK. I didn't read though your lines correctly. So you basically >> mean that we would look at the init files that are on disk, and check >> if they are empty. If they are, we simply use XLogReadBufferExtended >> to fetch the INIT_FORKNUM content and fill in another buffer for the >> MAIN_FORKNUM. More or less right? > > We would not just do so if they're empty, we would just generally copy the > file > via shared buffers, instead of copy_file(). But we'd get the file size > from the filesystem (which is fine, we make sure it is correct during > replay).
So, this suggestion is basically implementing the reverse operation of GetRelationPath() to be able to rebuild a RelFileNode from scratch and then look at the shared buffers needed. Isn't it a bit brittle for back-branches? RelFileNode stuff is available easily through records when replaying individually FPIs, but not really in this code path. -- Michael -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers