• Tom Lane's avatar
    Fix two distinct errors in creation of GIN_INSERT_LISTPAGE xlog records. · 384cad5c
    Tom Lane authored
    In practice these mistakes were always masked when full_page_writes was on,
    because XLogInsert would always choose to log the full page, and then
    ginRedoInsertListPage wouldn't try to do anything.  But with full_page_writes
    off a WAL replay failure was certain.
    
    The GIN_INSERT_LISTPAGE record type could probably be eliminated entirely
    in favor of using XLOG_HEAP_NEWPAGE, but I refrained from doing that now
    since it would have required a significantly more invasive patch.
    
    In passing do a little bit of code cleanup, including making the accounting
    for free space on GIN list pages more precise.  (This wasn't a bug as the
    errors were always in the conservative direction.)
    
    Per report from Simon.  Back-patch to 8.4 which contains the identical code.
    384cad5c
ginfast.c 22 KB