Merge pull request #27153 from taosdata/fix/TD-31372

adj copyPkVal error code
This commit is contained in:
Haojun Liao 2024-08-13 13:47:52 +08:00 committed by GitHub
commit 12d6375de7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 38 additions and 6 deletions

View File

@ -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); 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 #ifdef __cplusplus
} }

View File

@ -1737,7 +1737,11 @@ int32_t copyDataBlock(SSDataBlock* pDst, const SSDataBlock* pSrc) {
uint32_t cap = pDst->info.capacity; uint32_t cap = pDst->info.capacity;
pDst->info = pSrc->info; 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; pDst->info.capacity = cap;
return code; return code;
@ -1902,9 +1906,11 @@ int32_t blockCopyOneRow(const SSDataBlock* pDataBlock, int32_t rowIdx, SSDataBlo
return code; 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)) { if (!IS_VAR_DATA_TYPE(pSrc->pks[0].type)) {
return; return code;
} }
// prepare the pk buffer if needed // prepare the pk buffer if needed
@ -1912,14 +1918,24 @@ void copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) {
p->type = pDst->pks[0].type; p->type = pDst->pks[0].type;
p->pData = taosMemoryCalloc(1, pDst->pks[0].nData); p->pData = taosMemoryCalloc(1, pDst->pks[0].nData);
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
p->nData = pDst->pks[0].nData; p->nData = pDst->pks[0].nData;
memcpy(p->pData, pDst->pks[0].pData, p->nData); memcpy(p->pData, pDst->pks[0].pData, p->nData);
p = &pDst->pks[1]; p = &pDst->pks[1];
p->type = pDst->pks[1].type; p->type = pDst->pks[1].type;
p->pData = taosMemoryCalloc(1, pDst->pks[1].nData); p->pData = taosMemoryCalloc(1, pDst->pks[1].nData);
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
p->nData = pDst->pks[1].nData; p->nData = pDst->pks[1].nData;
memcpy(p->pData, pDst->pks[1].pData, p->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) { 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) { if (copyData) {
code = blockDataEnsureCapacity(pDstBlock, pDataBlock->info.rows); code = blockDataEnsureCapacity(pDstBlock, pDataBlock->info.rows);

View File

@ -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) { 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)); memset(pSup, 0, sizeof(SBlkMergeSupport));
int32_t numOfBlocks = taosArrayGetSize(pBlockList); int32_t numOfBlocks = taosArrayGetSize(pBlockList);
pSup->aRowIdx = taosMemoryCalloc(numOfBlocks, sizeof(int32_t)); pSup->aRowIdx = taosMemoryCalloc(numOfBlocks, sizeof(int32_t));
QUERY_CHECK_NULL(pSup->aRowIdx, code, lino, _end, terrno);
pSup->aTs = taosMemoryCalloc(numOfBlocks, sizeof(int64_t*)); pSup->aTs = taosMemoryCalloc(numOfBlocks, sizeof(int64_t*));
QUERY_CHECK_NULL(pSup->aTs, code, lino, _end, terrno);
pSup->tsOrder = tsOrder; pSup->tsOrder = tsOrder;
pSup->aBlks = taosMemoryCalloc(numOfBlocks, sizeof(SSDataBlock*)); pSup->aBlks = taosMemoryCalloc(numOfBlocks, sizeof(SSDataBlock*));
QUERY_CHECK_NULL(pSup->aBlks, code, lino, _end, terrno);
for (int32_t i = 0; i < numOfBlocks; ++i) { for (int32_t i = 0; i < numOfBlocks; ++i) {
SSDataBlock* pBlock = taosArrayGetP(pBlockList, i); SSDataBlock* pBlock = taosArrayGetP(pBlockList, i);
@ -1935,7 +1942,12 @@ static int32_t initMergeSup(SBlkMergeSupport* pSup, SArray* pBlockList, int32_t
} }
pSup->pPkOrder = pPkOrderInfo; 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) { static void cleanupMergeSup(SBlkMergeSupport* pSup) {