diff --git a/source/dnode/vnode/src/tsdb/tsdbCompact.c b/source/dnode/vnode/src/tsdb/tsdbCompact.c index 9ee8714165ce5b5c3e928b6e5272b4995bd23eb1..85d0b8223cdf7057c36a013b1edca5765bf07f61 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCompact.c +++ b/source/dnode/vnode/src/tsdb/tsdbCompact.c @@ -82,9 +82,9 @@ typedef struct { // Writer SDataFWriter *pWriter; SArray *aBlockIdx; // SArray + SMapData mDataBlk; // SMapData + SArray *aSttBlk; // SArray TABLEID tableId; - SMapData mDataBlk; // SMapData - SArray *aSttBlk; // SArray } STsdbCompactor; #define TSDB_FLG_DEEP_COMPACT 0x1 @@ -855,13 +855,10 @@ static int32_t tsdbCompactFileSet(STsdbCompactor *pCompactor) { } while (pRowInfo) { - nRow++; - - if ((pCompactor->tableId.suid != pRowInfo->suid) || // different super table + // write block data according to table id if necessary + if ((pCompactor->tableId.suid != pRowInfo->suid) || (pCompactor->tableId.uid != pRowInfo->uid && - (pRowInfo->suid == 0 || - pCompactor->bData.uid && pCompactor->bData.nRow >= pCompactor->minRows)) // different table - ) { + (pRowInfo->suid == 0 || (pCompactor->bData.uid && pCompactor->bData.nRow >= pCompactor->minRows)))) { code = tsdbCompactWriteBlockData(pCompactor); TSDB_CHECK_CODE(code, lino, _exit); @@ -872,20 +869,20 @@ static int32_t tsdbCompactFileSet(STsdbCompactor *pCompactor) { TSDB_CHECK_CODE(code, lino, _exit); } - // append row to block data - code = tBlockDataAppendRowEx(&pCompactor->bData, &pRowInfo->row, pTSchema, pRowInfo->uid); - TSDB_CHECK_CODE(code, lino, _exit); - - pCompactor->tableId.suid = pRowInfo->suid; - pCompactor->tableId.uid = pRowInfo->uid; - - // check if block data is full - if (pCompactor->bData.nRow >= pCompactor->maxRows) { + // check if append/merge the row causes nRow exceed maxRows + if (0 /* add the row causes row exceed maxRows */) { code = tsdbCompactWriteBlockData(pCompactor); TSDB_CHECK_CODE(code, lino, _exit); } - // iterate to next row + // append/merge the row + // code = tBlockDataAppendRowEx(&pCompactor->bData, &pRowInfo->row, pTSchema, pRowInfo->uid); + // TSDB_CHECK_CODE(code, lino, _exit); + + pCompactor->tableId.suid = pRowInfo->suid; + pCompactor->tableId.uid = pRowInfo->uid; + + // iter to the next row code = tsdbCompactNextRow(pCompactor); TSDB_CHECK_CODE(code, lino, _exit);