diff --git a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c index 0793ce6ea4..006c7aebc7 100644 --- a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c @@ -1051,17 +1051,9 @@ static int32_t tsdbDataFileDoWriteTSRow(SDataFileWriter *writer, TSDBROW *row) { TSDB_CHECK_CODE(code, lino, _exit); } - TSDBKEY key[1]; - if (row->type == TSDBROW_ROW_FMT) { - key->ts = row->pTSRow->ts; - key->version = row->version; - } else { - key->ts = row->pBlockData->aTSKEY[row->iRow]; - key->version = row->pBlockData->aVersion[row->iRow]; - } - if (key->version <= writer->config->compactVersion // - && writer->blockData->nRow > 0 // - && writer->blockData->aTSKEY[writer->blockData->nRow - 1] == key->ts // + if (TSDBROW_VERSION(row) <= writer->config->compactVersion // + && writer->blockData->nRow > 0 // + && tsdbRowCmprFn(row, &tsdbRowFromBlockData(writer->blockData, writer->blockData->nRow - 1)) == 0 // ) { code = tBlockDataUpdateRow(writer->blockData, row, writer->config->skmRow->pTSchema); TSDB_CHECK_CODE(code, lino, _exit); diff --git a/source/dnode/vnode/src/tsdb/tsdbFSetRW.c b/source/dnode/vnode/src/tsdb/tsdbFSetRW.c index e6b3cf8f54..c8b029751f 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSetRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbFSetRW.c @@ -244,10 +244,10 @@ int32_t tsdbFSetWriteRow(SFSetWriter *writer, SRowInfo *row) { TSDB_CHECK_CODE(code, lino, _exit); } - TSDBKEY key = TSDBROW_KEY(&row->row); - if (key.version <= writer->config->compactVersion // - && writer->blockData[writer->blockDataIdx].nRow > 0 // - && key.ts == writer->blockData[writer->blockDataIdx].aTSKEY[writer->blockData[writer->blockDataIdx].nRow - 1]) { + if (TSDBROW_VERSION(&row->row) <= writer->config->compactVersion // + && writer->blockData[writer->blockDataIdx].nRow > 0 // + && tsdbRowCmprFn(&row->row, &tsdbRowFromBlockData(&writer->blockData[writer->blockDataIdx], + writer->blockData[writer->blockDataIdx].nRow - 1)) == 0) { code = tBlockDataUpdateRow(&writer->blockData[writer->blockDataIdx], &row->row, writer->skmRow->pTSchema); TSDB_CHECK_CODE(code, lino, _exit); } else { diff --git a/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c b/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c index 6db52a9e54..b56564dbd8 100644 --- a/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c @@ -961,12 +961,12 @@ int32_t tsdbSttFileWriteRow(SSttFileWriter *writer, SRowInfo *row) { } // row to col conversion - if (key->version <= writer->config->compactVersion // - && writer->blockData->nRow > 0 // - && writer->blockData->aTSKEY[writer->blockData->nRow - 1] == key->ts // - && (writer->blockData->uid // - ? writer->blockData->uid // - : writer->blockData->aUid[writer->blockData->nRow - 1]) == row->uid // + if (key->version <= writer->config->compactVersion // + && writer->blockData->nRow > 0 // + && (writer->blockData->uid // + ? writer->blockData->uid // + : writer->blockData->aUid[writer->blockData->nRow - 1]) == row->uid // + && tsdbRowCmprFn(&row->row, &tsdbRowFromBlockData(writer->blockData, writer->blockData->nRow - 1)) == 0 // ) { code = tBlockDataUpdateRow(writer->blockData, &row->row, writer->config->skmRow->pTSchema); TSDB_CHECK_CODE(code, lino, _exit);