fix(query):init block info's pointer

This commit is contained in:
54liuyao 2024-08-22 11:06:27 +08:00
parent 472d03f118
commit 300b30d7c5
1 changed files with 18 additions and 8 deletions

View File

@ -1670,6 +1670,8 @@ int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src) {
int32_t code = 0; int32_t code = 0;
dst->info = src->info; dst->info = src->info;
dst->info.pks[0].pData = NULL;
dst->info.pks[1].pData = NULL;
dst->info.rows = 0; dst->info.rows = 0;
dst->info.capacity = 0; dst->info.capacity = 0;
@ -1707,6 +1709,8 @@ int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src) {
uint32_t cap = dst->info.capacity; uint32_t cap = dst->info.capacity;
dst->info = src->info; dst->info = src->info;
dst->info.pks[0].pData = NULL;
dst->info.pks[1].pData = NULL;
dst->info.capacity = cap; dst->info.capacity = cap;
return code; return code;
} }
@ -1737,6 +1741,8 @@ 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;
pDst->info.pks[0].pData = NULL;
pDst->info.pks[1].pData = NULL;
code = copyPkVal(&pDst->info, &pSrc->info); code = copyPkVal(&pDst->info, &pSrc->info);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
uError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); uError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code));
@ -1854,6 +1860,8 @@ int32_t blockCopyOneRow(const SSDataBlock* pDataBlock, int32_t rowIdx, SSDataBlo
} }
pBlock->info = pDataBlock->info; pBlock->info = pDataBlock->info;
pBlock->info.pks[0].pData = NULL;
pBlock->info.pks[1].pData = NULL;
pBlock->info.rows = 0; pBlock->info.rows = 0;
pBlock->info.capacity = 0; pBlock->info.capacity = 0;
@ -1916,20 +1924,20 @@ int32_t copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) {
// prepare the pk buffer if needed // prepare the pk buffer if needed
SValue* p = &pDst->pks[0]; SValue* p = &pDst->pks[0];
p->type = pDst->pks[0].type; p->type = pSrc->pks[0].type;
p->pData = taosMemoryCalloc(1, pDst->pks[0].nData); p->pData = taosMemoryCalloc(1, pSrc->pks[0].nData);
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno); QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
p->nData = pDst->pks[0].nData; p->nData = pSrc->pks[0].nData;
memcpy(p->pData, pDst->pks[0].pData, p->nData); memcpy(p->pData, pSrc->pks[0].pData, p->nData);
p = &pDst->pks[1]; p = &pDst->pks[1];
p->type = pDst->pks[1].type; p->type = pSrc->pks[1].type;
p->pData = taosMemoryCalloc(1, pDst->pks[1].nData); p->pData = taosMemoryCalloc(1, pSrc->pks[1].nData);
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno); QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
p->nData = pDst->pks[1].nData; p->nData = pSrc->pks[1].nData;
memcpy(p->pData, pDst->pks[1].pData, p->nData); memcpy(p->pData, pSrc->pks[1].pData, p->nData);
_end: _end:
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
@ -1951,6 +1959,8 @@ int32_t createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData, SSDataB
} }
pDstBlock->info = pDataBlock->info; pDstBlock->info = pDataBlock->info;
pDstBlock->info.pks[0].pData = NULL;
pDstBlock->info.pks[1].pData = NULL;
pDstBlock->info.rows = 0; pDstBlock->info.rows = 0;
pDstBlock->info.capacity = 0; pDstBlock->info.capacity = 0;