On Fri, 2013-05-03 at 19:52 +0100, Simon Riggs wrote: > On 1 May 2013 20:40, Jeff Davis <pg...@j-davis.com> wrote: > > >> Looks easy. There is no additional logic for checksums, so there's no > >> third complexity. > >> > >> So we either have > >> * cleanup info with vismap setting info > >> * cleanup info only > >> > >> which is the same number of WAL records as we have now, just that we > >> never emit 2 records when one will do. > > > > What if we only set PD_ALL_VISIBLE and the VM bit, and make no other > > changes? Right now, that generates no WAL for the heap page (unless > > checksums are enabled, of course), which means no full page images for > > the heap pages. > > The only place I see that code path is when we clear up a heap page > that is empty.
Or if there are no other changes to make to the heap page. For example, if you do a fresh data load, then set the hint bits, and then do a VACCUM. The only changes needed during VACUUM are setting PD_ALL_VISIBLE and the VM bit. Right now, that does not cause a wal record to be written for the heap page, so there are no full-page images for the heap page. At this point, I don't think more changes are required. Robert seemed concerned about dirtying extra pages after a crash, but I didn't entirely understand his reasoning. I am inclined toward simplifying this part of the code as you suggest, but maybe that's better left for 9.4 (which would give me a chance to reignite the discussion about whether PD_ALL_VISIBLE is needed at all) unless there is an actual problem. Regards, Jeff Davis -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers