From ba7994c3d6107dc65d9e6365ee4dd80200080cc0 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao> Date: Mon, 12 Aug 2024 11:06:25 +0800 Subject: [PATCH 1/2] adj copyPkVal error code --- include/common/tdatablock.h | 2 +- source/common/src/tdatablock.c | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/include/common/tdatablock.h b/include/common/tdatablock.h index e917bcd2a8..080416ca2e 100644 --- a/include/common/tdatablock.h +++ b/include/common/tdatablock.h @@ -292,7 +292,7 @@ int32_t buildCtbNameByGroupIdImpl(const char* stbName, uint64_t groupId, char* p int32_t trimDataBlock(SSDataBlock* pBlock, int32_t totalRows, const bool* pBoolList); -void copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc); +int32_t copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc); #ifdef __cplusplus } diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index f8ae16a05c..8f97aaf154 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -1737,7 +1737,11 @@ int32_t copyDataBlock(SSDataBlock* pDst, const SSDataBlock* pSrc) { uint32_t cap = pDst->info.capacity; pDst->info = pSrc->info; - copyPkVal(&pDst->info, &pSrc->info); + code = copyPkVal(&pDst->info, &pSrc->info); + if (code != TSDB_CODE_SUCCESS) { + uError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + return code; + } pDst->info.capacity = cap; return code; @@ -1902,9 +1906,11 @@ int32_t blockCopyOneRow(const SSDataBlock* pDataBlock, int32_t rowIdx, SSDataBlo return code; } -void copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) { +int32_t copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) { + int32_t code = TSDB_CODE_SUCCESS; + int32_t lino = 0; if (!IS_VAR_DATA_TYPE(pSrc->pks[0].type)) { - return; + return code; } // prepare the pk buffer if needed @@ -1912,14 +1918,24 @@ void copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) { p->type = pDst->pks[0].type; p->pData = taosMemoryCalloc(1, pDst->pks[0].nData); + QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno); + p->nData = pDst->pks[0].nData; memcpy(p->pData, pDst->pks[0].pData, p->nData); p = &pDst->pks[1]; p->type = pDst->pks[1].type; p->pData = taosMemoryCalloc(1, pDst->pks[1].nData); + QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno); + p->nData = pDst->pks[1].nData; memcpy(p->pData, pDst->pks[1].pData, p->nData); + +_end: + if (code != TSDB_CODE_SUCCESS) { + uError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); + } + return code; } int32_t createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData, SSDataBlock** pResBlock) { @@ -1958,7 +1974,11 @@ int32_t createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData, SSDataB } } - copyPkVal(&pDstBlock->info, &pDataBlock->info); + code = copyPkVal(&pDstBlock->info, &pDataBlock->info); + if (code != TSDB_CODE_SUCCESS) { + uError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + return code; + } if (copyData) { code = blockDataEnsureCapacity(pDstBlock, pDataBlock->info.rows); From 91e987b25a5310619650e40287c68999517ce154 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao> Date: Mon, 12 Aug 2024 14:01:55 +0800 Subject: [PATCH 2/2] fix issue --- source/libs/executor/src/tsort.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/libs/executor/src/tsort.c b/source/libs/executor/src/tsort.c index cedc23ed2d..5bd11489c9 100644 --- a/source/libs/executor/src/tsort.c +++ b/source/libs/executor/src/tsort.c @@ -1917,14 +1917,21 @@ static int32_t getBufIncForNewRow(SSortHandle* pHandle, int32_t dstRowIndex, SSD } static int32_t initMergeSup(SBlkMergeSupport* pSup, SArray* pBlockList, int32_t tsOrder, int32_t tsSlotId, SBlockOrderInfo* pPkOrderInfo) { + int32_t code = TSDB_CODE_SUCCESS; + int32_t lino = 0; memset(pSup, 0, sizeof(SBlkMergeSupport)); int32_t numOfBlocks = taosArrayGetSize(pBlockList); pSup->aRowIdx = taosMemoryCalloc(numOfBlocks, sizeof(int32_t)); + QUERY_CHECK_NULL(pSup->aRowIdx, code, lino, _end, terrno); + pSup->aTs = taosMemoryCalloc(numOfBlocks, sizeof(int64_t*)); + QUERY_CHECK_NULL(pSup->aTs, code, lino, _end, terrno); + pSup->tsOrder = tsOrder; pSup->aBlks = taosMemoryCalloc(numOfBlocks, sizeof(SSDataBlock*)); + QUERY_CHECK_NULL(pSup->aBlks, code, lino, _end, terrno); for (int32_t i = 0; i < numOfBlocks; ++i) { SSDataBlock* pBlock = taosArrayGetP(pBlockList, i); @@ -1935,7 +1942,12 @@ static int32_t initMergeSup(SBlkMergeSupport* pSup, SArray* pBlockList, int32_t } pSup->pPkOrder = pPkOrderInfo; - return TSDB_CODE_SUCCESS; + +_end: + if (code != TSDB_CODE_SUCCESS) { + qError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); + } + return code; } static void cleanupMergeSup(SBlkMergeSupport* pSup) {