fix: tsdb commit merge bug
This commit is contained in:
parent
f9c89fdd7f
commit
16c1df91eb
|
@ -602,7 +602,7 @@ static int32_t tsdbGetOvlpNRow(STbDataIter *pIter, SBlock *pBlock) {
|
||||||
|
|
||||||
iter.pRow = NULL;
|
iter.pRow = NULL;
|
||||||
while (true) {
|
while (true) {
|
||||||
pRow = tsdbTbDataIterGet(pIter);
|
pRow = tsdbTbDataIterGet(&iter);
|
||||||
|
|
||||||
if (pRow == NULL) break;
|
if (pRow == NULL) break;
|
||||||
key = TSDBROW_KEY(pRow);
|
key = TSDBROW_KEY(pRow);
|
||||||
|
@ -610,7 +610,7 @@ static int32_t tsdbGetOvlpNRow(STbDataIter *pIter, SBlock *pBlock) {
|
||||||
c = tBlockCmprFn(&(SBlock){.maxKey = key, .minKey = key}, pBlock);
|
c = tBlockCmprFn(&(SBlock){.maxKey = key, .minKey = key}, pBlock);
|
||||||
if (c == 0) {
|
if (c == 0) {
|
||||||
nRow++;
|
nRow++;
|
||||||
tsdbTbDataIterNext(pIter);
|
tsdbTbDataIterNext(&iter);
|
||||||
} else if (c > 0) {
|
} else if (c > 0) {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
@ -635,7 +635,7 @@ static int32_t tsdbMergeAsSubBlock(SCommitter *pCommitter, STbDataIter *pIter, S
|
||||||
code = tsdbCommitterUpdateRowSchema(pCommitter, pBlockIdx->suid, pBlockIdx->uid, TSDBROW_SVERSION(pRow));
|
code = tsdbCommitterUpdateRowSchema(pCommitter, pBlockIdx->suid, pBlockIdx->uid, TSDBROW_SVERSION(pRow));
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (pRow) break;
|
if (pRow == NULL) break;
|
||||||
code = tBlockDataAppendRow(pBlockData, pRow, pCommitter->skmRow.pTSchema);
|
code = tBlockDataAppendRow(pBlockData, pRow, pCommitter->skmRow.pTSchema);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
|
|
|
@ -1106,6 +1106,8 @@ int32_t tsdbReadBlockData(SDataFReader *pReader, SBlockIdx *pBlockIdx, SBlock *p
|
||||||
SBlockData *pBlockData1 = &(SBlockData){0};
|
SBlockData *pBlockData1 = &(SBlockData){0};
|
||||||
SBlockData *pBlockData2 = &(SBlockData){0};
|
SBlockData *pBlockData2 = &(SBlockData){0};
|
||||||
|
|
||||||
|
tBlockDataInit(pBlockData1);
|
||||||
|
tBlockDataInit(pBlockData2);
|
||||||
for (iSubBlock = 1; iSubBlock < pBlock->nSubBlock; iSubBlock++) {
|
for (iSubBlock = 1; iSubBlock < pBlock->nSubBlock; iSubBlock++) {
|
||||||
code = tsdbReadSubBlockData(pReader, pBlockIdx, pBlock, iSubBlock, pBlockData1, ppBuf1, ppBuf2);
|
code = tsdbReadSubBlockData(pReader, pBlockIdx, pBlock, iSubBlock, pBlockData1, ppBuf1, ppBuf2);
|
||||||
if (code) {
|
if (code) {
|
||||||
|
|
|
@ -821,16 +821,20 @@ int32_t tColDataCopy(SColData *pColDataSrc, SColData *pColDataDest) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t size;
|
int32_t size;
|
||||||
|
|
||||||
|
ASSERT(pColDataSrc->nVal > 0);
|
||||||
|
|
||||||
pColDataDest->cid = pColDataSrc->cid;
|
pColDataDest->cid = pColDataSrc->cid;
|
||||||
pColDataDest->type = pColDataSrc->type;
|
pColDataDest->type = pColDataSrc->type;
|
||||||
pColDataDest->smaOn = pColDataSrc->smaOn;
|
pColDataDest->smaOn = pColDataSrc->smaOn;
|
||||||
pColDataDest->nVal = pColDataSrc->nVal;
|
pColDataDest->nVal = pColDataSrc->nVal;
|
||||||
pColDataDest->flag = pColDataSrc->flag;
|
pColDataDest->flag = pColDataSrc->flag;
|
||||||
|
|
||||||
size = BIT2_SIZE(pColDataSrc->nVal);
|
if (pColDataSrc->flag != HAS_NONE && pColDataSrc->flag != HAS_NULL && pColDataSrc->flag != HAS_VALUE) {
|
||||||
code = tRealloc(&pColDataDest->pBitMap, size);
|
size = BIT2_SIZE(pColDataSrc->nVal);
|
||||||
if (code) goto _exit;
|
code = tRealloc(&pColDataDest->pBitMap, size);
|
||||||
memcpy(pColDataDest->pBitMap, pColDataSrc->pBitMap, size);
|
if (code) goto _exit;
|
||||||
|
memcpy(pColDataDest->pBitMap, pColDataSrc->pBitMap, size);
|
||||||
|
}
|
||||||
|
|
||||||
if (IS_VAR_DATA_TYPE(pColDataDest->type)) {
|
if (IS_VAR_DATA_TYPE(pColDataDest->type)) {
|
||||||
size = sizeof(int32_t) * pColDataSrc->nVal;
|
size = sizeof(int32_t) * pColDataSrc->nVal;
|
||||||
|
|
Loading…
Reference in New Issue