diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 6c77222223..cf4392e51c 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -121,7 +121,8 @@ static FORCE_INLINE int64_t tsdbLogicToFileSize(int64_t lSize, int32_t szPage) { ((TSDBROW){.type = TSDBROW_COL_FMT, .pBlockData = (BLOCKDATA), .iRow = (IROW)}) void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *pColVal); -int32_t tsdbRowCmprFn(const void *p1, const void *p2); +int32_t tsdbRowCompare(const void *p1, const void *p2); +int32_t tsdbRowCompareWithoutVersion(const void *p1, const void *p2); int32_t tsdbRowKeyCmpr(const STsdbRowKey *key1, const STsdbRowKey *key2); void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key); // STSDBRowIter diff --git a/source/dnode/vnode/src/tsdb/tsdbCommit.c b/source/dnode/vnode/src/tsdb/tsdbCommit.c index 37413ef920..f9a464b3bf 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCommit.c +++ b/source/dnode/vnode/src/tsdb/tsdbCommit.c @@ -31,7 +31,7 @@ int32_t tRowInfoCmprFn(const void *p1, const void *p2) { return 1; } - return tsdbRowCmprFn(&pInfo1->row, &pInfo2->row); + return tsdbRowCompare(&pInfo1->row, &pInfo2->row); } int32_t tsdbBegin(STsdb *pTsdb) { diff --git a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c index 57ed48cb99..bdfdefe974 100644 --- a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c @@ -896,7 +896,7 @@ static int32_t tsdbDataFileDoWriteBlockData(SDataFileWriter *writer, SBlockData tsdbRowGetKey(&tsdbRowFromBlockData(bData, bData->nRow - 1), &record->lastKey); for (int32_t i = 1; i < bData->nRow; ++i) { - if (tsdbRowCmprFn(&tsdbRowFromBlockData(bData, i - 1), &tsdbRowFromBlockData(bData, i)) != 0) { + if (tsdbRowCompareWithoutVersion(&tsdbRowFromBlockData(bData, i - 1), &tsdbRowFromBlockData(bData, i)) != 0) { record->count++; } if (bData->aVersion[i] < record->minVer) { @@ -966,9 +966,10 @@ static int32_t tsdbDataFileDoWriteTSRow(SDataFileWriter *writer, TSDBROW *row) { TSDB_CHECK_CODE(code, lino, _exit); } - if (TSDBROW_VERSION(row) <= writer->config->compactVersion // - && writer->blockData->nRow > 0 // - && tsdbRowCmprFn(row, &tsdbRowFromBlockData(writer->blockData, writer->blockData->nRow - 1)) == 0 // + if (TSDBROW_VERSION(row) <= writer->config->compactVersion // + && writer->blockData->nRow > 0 // + && + tsdbRowCompareWithoutVersion(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 0db1630a9c..9b28644c35 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSetRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbFSetRW.c @@ -247,8 +247,9 @@ int32_t tsdbFSetWriteRow(SFSetWriter *writer, SRowInfo *row) { 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) { + && tsdbRowCompareWithoutVersion(&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 f3d271f1a8..c8b2cf3adf 100644 --- a/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c @@ -898,12 +898,13 @@ int32_t tsdbSttFileWriteRow(SSttFileWriter *writer, SRowInfo *row) { } // row to col conversion - 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 // + 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 // + && tsdbRowCompareWithoutVersion(&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); diff --git a/source/dnode/vnode/src/tsdb/tsdbUtil.c b/source/dnode/vnode/src/tsdb/tsdbUtil.c index fc0515b824..f708700b1a 100644 --- a/source/dnode/vnode/src/tsdb/tsdbUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbUtil.c @@ -638,7 +638,7 @@ int32_t tsdbRowKeyCmpr(const STsdbRowKey *key1, const STsdbRowKey *key2) { return 0; } -int32_t tsdbRowCmprFn(const void *p1, const void *p2) { +int32_t tsdbRowCompare(const void *p1, const void *p2) { STsdbRowKey key1, key2; tsdbRowGetKey((TSDBROW *)p1, &key1); @@ -646,6 +646,14 @@ int32_t tsdbRowCmprFn(const void *p1, const void *p2) { return tsdbRowKeyCmpr(&key1, &key2); } +int32_t tsdbRowCompareWithoutVersion(const void *p1, const void *p2) { + STsdbRowKey key1, key2; + + tsdbRowGetKey((TSDBROW *)p1, &key1); + tsdbRowGetKey((TSDBROW *)p2, &key2); + return tRowKeyCompare(&key1.key, &key2.key); +} + // STSDBRowIter ====================================================== int32_t tsdbRowIterOpen(STSDBRowIter *pIter, TSDBROW *pRow, STSchema *pTSchema) { int32_t code = 0;