From d6ebcef7de9c9449661a30020c949db53737ff6d Mon Sep 17 00:00:00 2001 From: "arcoalien@qq.com" Date: Thu, 4 May 2023 10:16:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=20gs=5Fxlogdump=5Fparsepage=5Ftablepath?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E6=8F=90=E7=A4=BA=E4=B8=8D=E5=90=88=E7=90=86?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/page/pageparse.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gausskernel/storage/page/pageparse.cpp b/src/gausskernel/storage/page/pageparse.cpp index 3e23160fe..6c8d7ae49 100644 --- a/src/gausskernel/storage/page/pageparse.cpp +++ b/src/gausskernel/storage/page/pageparse.cpp @@ -600,11 +600,11 @@ char *ParsePage(char *path, int64 blocknum, char *relation_type, bool read_memor SMgrRelation smgr = smgropen(*relnode, InvalidBackendId, GetColumnNum(forkNum)); if (strcmp(relation_type, "segment") == 0) CheckSegment(relnode, forkNum, outputfile, outputFilename); - BlockNumber maxBlockNum = smgrnblocks(smgr, forkNum) - 1; - if (blocknum > maxBlockNum) { + BlockNumber maxBlockNum = smgrnblocks(smgr, forkNum); + if ((blocknum != -1 && blocknum > maxBlockNum) || (maxBlockNum == 0)) { CheckCloseFile(outputfile, outputFilename, false); - ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - (errmsg("Blocknum should be between -1 and %u.", maxBlockNum)))); + ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errmsg( + "The max blocknum of current file is %u. Target blocknum exceeds current file size.", maxBlockNum)))); } pfree_ext(relnode);