fix: check ret value of lseek
This commit is contained in:
parent
4474fcdd69
commit
67559afcae
|
@ -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);
|
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);
|
ret = taosReadFile(pMemFile->pTdFile, pEntry->data, pMemFile->pageSize);
|
||||||
}
|
}
|
||||||
if (ret != 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) {
|
if (pMemFile->currPageId - pMemFile->startPageId >= pMemFile->numWritePages) {
|
||||||
int64_t ret = taosLSeekFile(pMemFile->pTdFile, ((int64_t)pMemFile->startPageId) * pMemFile->pageSize, SEEK_SET);
|
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);
|
ret = taosWriteFile(pMemFile->pTdFile, pMemFile->writePageBuf, pMemFile->pageSize * pMemFile->numWritePages);
|
||||||
}
|
}
|
||||||
if (ret != pMemFile->pageSize * pMemFile->numWritePages) {
|
if (ret != pMemFile->pageSize * pMemFile->numWritePages) {
|
||||||
|
@ -1183,8 +1183,8 @@ static int32_t saveDirtyPagesToExtRowsMemFile(SSortHandle* pHandle) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
int64_t ret = taosLSeekFile(pMemFile->pTdFile, ((int64_t)pMemFile->startPageId) * pMemFile->pageSize, SEEK_SET);
|
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;
|
int32_t numWriteBytes = pMemFile->pageSize * (pMemFile->currPageId - pMemFile->startPageId + 1);
|
||||||
if (ret == 0) {
|
if (ret >= 0) {
|
||||||
ret = taosWriteFile(pMemFile->pTdFile, pMemFile->writePageBuf, numWriteBytes);
|
ret = taosWriteFile(pMemFile->pTdFile, pMemFile->writePageBuf, numWriteBytes);
|
||||||
}
|
}
|
||||||
if (ret != numWriteBytes) {
|
if (ret != numWriteBytes) {
|
||||||
|
@ -1460,9 +1460,6 @@ static int32_t sortBlocksToExtSource(SSortHandle* pHandle, SArray* aBlk, SArray*
|
||||||
}
|
}
|
||||||
blockDataCleanup(pHandle->pDataBlock);
|
blockDataCleanup(pHandle->pDataBlock);
|
||||||
}
|
}
|
||||||
if (pHandle->bSortByRowId) {
|
|
||||||
saveDirtyPagesToExtRowsMemFile(pHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
SSDataBlock* pMemSrcBlk = createOneDataBlock(pHandle->pDataBlock, false);
|
SSDataBlock* pMemSrcBlk = createOneDataBlock(pHandle->pDataBlock, false);
|
||||||
doAddNewExternalMemSource(pHandle->pBuf, aExtSrc, pMemSrcBlk, &pHandle->sourceId, aPgId);
|
doAddNewExternalMemSource(pHandle->pBuf, aExtSrc, pMemSrcBlk, &pHandle->sourceId, aPgId);
|
||||||
|
@ -1631,6 +1628,7 @@ static int32_t createBlocksMergeSortInitialSources(SSortHandle* pHandle) {
|
||||||
taosArrayDestroy(aExtSrc);
|
taosArrayDestroy(aExtSrc);
|
||||||
tSimpleHashCleanup(mTableNumRows);
|
tSimpleHashCleanup(mTableNumRows);
|
||||||
if (pHandle->bSortByRowId) {
|
if (pHandle->bSortByRowId) {
|
||||||
|
saveDirtyPagesToExtRowsMemFile(pHandle);
|
||||||
freeExtRowMemFileWriteBuf(pHandle);
|
freeExtRowMemFileWriteBuf(pHandle);
|
||||||
}
|
}
|
||||||
pHandle->type = SORT_SINGLESOURCE_SORT;
|
pHandle->type = SORT_SINGLESOURCE_SORT;
|
||||||
|
|
Loading…
Reference in New Issue