From ec401536b24f14634f14d3d7790dcc0a10eca471 Mon Sep 17 00:00:00 2001 From: shirley_zhengx Date: Mon, 27 Nov 2023 14:13:37 +0800 Subject: [PATCH] fix hash index replay page lsn bigger --- src/gausskernel/storage/access/hash/hash_xlog.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gausskernel/storage/access/hash/hash_xlog.cpp b/src/gausskernel/storage/access/hash/hash_xlog.cpp index 5ac257a5b7..8da85e4a3b 100644 --- a/src/gausskernel/storage/access/hash/hash_xlog.cpp +++ b/src/gausskernel/storage/access/hash/hash_xlog.cpp @@ -348,9 +348,10 @@ static void hash_xlog_move_page_contents(XLogReaderState *record) * we don't care for return value as the purpose of reading bucketbuf * is to ensure a cleanup lock on primary bucket page. */ - (void) XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, true, &bucketbuf); - - PageSetLSN(bucketbuf.pageinfo.page, lsn); + if (XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, true, &bucketbuf) == BLK_NEEDS_REDO) { + PageSetLSN(bucketbuf.pageinfo.page, lsn); + MarkBufferDirty(writebuf.buf); + } action = XLogReadBufferForRedo(record, 1, &writebuf); } @@ -428,9 +429,10 @@ static void hash_xlog_squeeze_page(XLogReaderState *record) * we don't care for return value as the purpose of reading bucketbuf * is to ensure a cleanup lock on primary bucket page. */ - (void) XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, true, &bucketbuf); - - PageSetLSN(bucketbuf.pageinfo.page, lsn); + if (XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, true, &bucketbuf) == BLK_NEEDS_REDO) { + PageSetLSN(bucketbuf.pageinfo.page, lsn); + MarkBufferDirty(writebuf.buf); + } action = XLogReadBufferForRedo(record, 1, &writebuf); } -- Gitee