From 67559afcae58959b753476c2f63b178df0af0b37 Mon Sep 17 00:00:00 2001 From: slzhou Date: Wed, 28 Feb 2024 14:29:30 +0800 Subject: [PATCH] fix: check ret value of lseek --- source/libs/executor/src/tsort.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/source/libs/executor/src/tsort.c b/source/libs/executor/src/tsort.c index 1d89e6d15c..3b2915f81d 100644 --- a/source/libs/executor/src/tsort.c +++ b/source/libs/executor/src/tsort.c @@ -1035,7 +1035,7 @@ static int32_t getPageFromExtMemFile(SSortHandle* pHandle, int32_t pageId, char* } { int64_t ret = taosLSeekFile(pMemFile->pTdFile, ((int64_t)pageId) * pMemFile->pageSize, SEEK_SET); - if (ret == 0) { + if (ret >= 0) { ret = taosReadFile(pMemFile->pTdFile, pEntry->data, pMemFile->pageSize); } if (ret != pMemFile->pageSize) { @@ -1154,7 +1154,7 @@ static int32_t saveBlockRowToExtRowsMemFile(SSortHandle* pHandle, SSDataBlock* p if (pMemFile->currPageId - pMemFile->startPageId >= pMemFile->numWritePages) { int64_t ret = taosLSeekFile(pMemFile->pTdFile, ((int64_t)pMemFile->startPageId) * pMemFile->pageSize, SEEK_SET); - if (ret == 0) { + if (ret >= 0) { ret = taosWriteFile(pMemFile->pTdFile, pMemFile->writePageBuf, pMemFile->pageSize * pMemFile->numWritePages); } if (ret != pMemFile->pageSize * pMemFile->numWritePages) { @@ -1183,8 +1183,8 @@ static int32_t saveDirtyPagesToExtRowsMemFile(SSortHandle* pHandle) { return TSDB_CODE_SUCCESS; } int64_t ret = taosLSeekFile(pMemFile->pTdFile, ((int64_t)pMemFile->startPageId) * pMemFile->pageSize, SEEK_SET); - int32_t numWriteBytes = pMemFile->pageSize * (pMemFile->currPageId - pMemFile->startPageId) + pMemFile->currPageOffset + 1; - if (ret == 0) { + int32_t numWriteBytes = pMemFile->pageSize * (pMemFile->currPageId - pMemFile->startPageId + 1); + if (ret >= 0) { ret = taosWriteFile(pMemFile->pTdFile, pMemFile->writePageBuf, numWriteBytes); } if (ret != numWriteBytes) { @@ -1460,9 +1460,6 @@ static int32_t sortBlocksToExtSource(SSortHandle* pHandle, SArray* aBlk, SArray* } blockDataCleanup(pHandle->pDataBlock); } - if (pHandle->bSortByRowId) { - saveDirtyPagesToExtRowsMemFile(pHandle); - } SSDataBlock* pMemSrcBlk = createOneDataBlock(pHandle->pDataBlock, false); doAddNewExternalMemSource(pHandle->pBuf, aExtSrc, pMemSrcBlk, &pHandle->sourceId, aPgId); @@ -1631,6 +1628,7 @@ static int32_t createBlocksMergeSortInitialSources(SSortHandle* pHandle) { taosArrayDestroy(aExtSrc); tSimpleHashCleanup(mTableNumRows); if (pHandle->bSortByRowId) { + saveDirtyPagesToExtRowsMemFile(pHandle); freeExtRowMemFileWriteBuf(pHandle); } pHandle->type = SORT_SINGLESOURCE_SORT;