Fix two distinct errors in creation of GIN_INSERT_LISTPAGE xlog records.
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.
ginfast.c (r1.3 -> r188.8.131.52)
pgsql-committers by date
|Next:||From: User Nanardon||Date: 2009-09-16 00:51:56|
|Subject: pgrpm - pgrpm: - don't copy header to avoid memory leaks, rpm 4.4/4.6/5 |
|Previous:||From: Tom Lane||Date: 2009-09-15 20:31:30|
|Subject: pgsql: Fix two distinct errors in creation of GIN_INSERT_LISTPAGE xlog |