From eacff260fd220e82ca13cab2ad61d3aeb6eed445 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 25 Nov 2011 13:58:59 -0500 Subject: [PATCH] Fix erroneous replay of GIN_UPDATE_META_PAGE WAL records. A simple thinko in ginRedoUpdateMetapage, namely failing to increment a loop counter, led to inserting records into the last pending-list page in the wrong order (the opposite of that intended). So far as I can tell, this would not upset the code that eventually flushes pending items into the main part of the GIN index. But it did break the code that searched the pending list for matches, resulting in transient failure to find matching entries during index lookups, as illustrated in bug #6307 from Maksym Boguk. Back-patch to 8.4 where the incorrect code was introduced. --- src/backend/access/gin/ginxlog.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c index c954bcb12f..66d881e96d 100644 --- a/src/backend/access/gin/ginxlog.c +++ b/src/backend/access/gin/ginxlog.c @@ -529,6 +529,8 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) elog(ERROR, "failed to add item to index page"); tuples = (IndexTuple) (((char *) tuples) + tupsize); + + off++; } /* -- 2.40.0