From 978c73fb48394dd88b8ebd16979bd975a29a7d1c Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 27 Mar 2023 16:30:22 +0800 Subject: [PATCH] more code --- source/dnode/vnode/src/tsdb/dev/tsdbCommit.c | 28 ++-- source/dnode/vnode/src/tsdb/dev/tsdbFS.c | 11 +- source/dnode/vnode/src/tsdb/dev/tsdbFSet.c | 21 +++ source/dnode/vnode/src/tsdb/dev/tsdbFSet.h | 34 +++++ source/dnode/vnode/src/tsdb/dev/tsdbFile.h | 40 ++---- .../dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c | 121 +++++++++++++----- .../dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h | 15 ++- source/dnode/vnode/src/tsdb/dev/tsdbUtil.c | 31 +++++ source/dnode/vnode/src/tsdb/dev/tsdbUtil.h | 3 + 9 files changed, 219 insertions(+), 85 deletions(-) create mode 100644 source/dnode/vnode/src/tsdb/dev/tsdbFSet.c create mode 100644 source/dnode/vnode/src/tsdb/dev/tsdbFSet.h diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c index 68b53c48d9..083db8d9a7 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c @@ -83,7 +83,7 @@ static int32_t tsdbCommitWriteDelData(SCommitter *pCommitter, int64_t suid, int6 return code; } -static int32_t tsdbCommitTSData(SCommitter *pCommitter) { +static int32_t commit_timeseries_data(SCommitter *pCommitter) { int32_t code = 0; int32_t lino; @@ -126,7 +126,7 @@ _exit: return code; } -static int32_t tsdbCommitDLData(SCommitter *pCommitter) { +static int32_t commit_delete_data(SCommitter *pCommitter) { int32_t code = 0; int32_t lino; @@ -165,7 +165,7 @@ _exit: return code; } -static int32_t tsdbCommitFSetStart(SCommitter *pCommitter) { +static int32_t start_commit_file_set(SCommitter *pCommitter) { pCommitter->fid = tsdbKeyFid(pCommitter->nextKey, pCommitter->minutes, pCommitter->precision); tsdbFidKeyRange(pCommitter->fid, pCommitter->minutes, pCommitter->precision, &pCommitter->minKey, &pCommitter->maxKey); @@ -178,7 +178,7 @@ static int32_t tsdbCommitFSetStart(SCommitter *pCommitter) { return 0; } -static int32_t tsdbCommitFSetEnd(SCommitter *pCommitter) { +static int32_t end_commit_file_set(SCommitter *pCommitter) { int32_t code = 0; int32_t lino = 0; @@ -191,23 +191,23 @@ _exit: return code; } -static int32_t tsdbCommitNextFSet(SCommitter *pCommitter) { +static int32_t commit_next_file_set(SCommitter *pCommitter) { int32_t code = 0; int32_t lino = 0; // fset commit start - code = tsdbCommitFSetStart(pCommitter); + code = start_commit_file_set(pCommitter); TSDB_CHECK_CODE(code, lino, _exit); // commit fset - code = tsdbCommitTSData(pCommitter); + code = commit_timeseries_data(pCommitter); TSDB_CHECK_CODE(code, lino, _exit); - code = tsdbCommitDLData(pCommitter); + code = commit_delete_data(pCommitter); TSDB_CHECK_CODE(code, lino, _exit); // fset commit end - code = tsdbCommitFSetEnd(pCommitter); + code = end_commit_file_set(pCommitter); TSDB_CHECK_CODE(code, lino, _exit); _exit: @@ -218,7 +218,7 @@ _exit: return code; } -static int32_t tsdbCommitterOpen(STsdb *pTsdb, SCommitInfo *pInfo, SCommitter *pCommitter) { +static int32_t open_committer(STsdb *pTsdb, SCommitInfo *pInfo, SCommitter *pCommitter) { int32_t code = 0; int32_t lino; @@ -250,7 +250,7 @@ _exit: return code; } -static int32_t tsdbCommitterClose(SCommitter *pCommiter, int32_t eno) { +static int32_t close_committer(SCommitter *pCommiter, int32_t eno) { int32_t code = 0; // TODO return code; @@ -280,15 +280,15 @@ int32_t tsdbCommitBegin(STsdb *pTsdb, SCommitInfo *pInfo) { } else { SCommitter committer; - code = tsdbCommitterOpen(pTsdb, pInfo, &committer); + code = open_committer(pTsdb, pInfo, &committer); TSDB_CHECK_CODE(code, lino, _exit); while (committer.nextKey != TSKEY_MAX) { - code = tsdbCommitNextFSet(&committer); + code = commit_next_file_set(&committer); if (code) break; } - code = tsdbCommitterClose(&committer, code); + code = close_committer(&committer, code); TSDB_CHECK_CODE(code, lino, _exit); } diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c index c61a43d3ea..9093bb7617 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c @@ -13,4 +13,13 @@ * along with this program. If not, see . */ -#include "dev.h" \ No newline at end of file +#include "dev.h" + +struct STFileSystem { + STsdb *pTsdb; +}; + +int32_t tsdbOpenFileSystem(STsdb *pTsdb, struct STFileSystem **ppFS) { + // TODO + return 0; +} diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c new file mode 100644 index 0000000000..ca64d92cc3 --- /dev/null +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "dev.h" + +struct SFileSet { + struct STFile *files[TSDB_FTYPE_MAX]; + SRBTree fsttTree; +}; \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.h b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.h new file mode 100644 index 0000000000..c64407a1ed --- /dev/null +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef _TSDB_FILE_SET_H +#define _TSDB_FILE_SET_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exposed Handle */ +struct SFileSet; + +/* Exposed APIs */ + +/* Exposed Structs */ + +#ifdef __cplusplus +} +#endif + +#endif /*_TSDB_FILE_SET_H*/ \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFile.h b/source/dnode/vnode/src/tsdb/dev/tsdbFile.h index 84152fb598..32f91f8f39 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFile.h +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFile.h @@ -23,40 +23,25 @@ extern "C" { #endif /* Exposed Handle */ -typedef struct STFile STFile; -typedef struct SFileOp SFileOp; +struct STFile; +struct SFileOp; typedef enum { - TSDB_FTYPE_NONE = 0, // no file type - TSDB_FTYPE_STT, // .stt - TSDB_FTYPE_HEAD, // .head + TSDB_FTYPE_HEAD = 0, // .head TSDB_FTYPE_DATA, // .data TSDB_FTYPE_SMA, // .sma TSDB_FTYPE_TOMB, // .tomb + TSDB_FTYPE_MAX, // max file type + TSDB_FTYPE_STT, // .stt } tsdb_ftype_t; /* Exposed APIs */ /* Exposed Structs */ -typedef struct SFStt { - int64_t offset; -} SFStt; - -typedef struct SFHead { - int64_t offset; -} SFHead; - -typedef struct SFData { - // TODO -} SFData; - -typedef struct SFSma { - // TODO -} SFSma; - -typedef struct SFTomb { - // TODO -} SFTomb; +struct FStt { + int32_t level; + int32_t nStt; +}; struct STFile { char fname[TSDB_FILENAME_LEN]; SDiskID diskId; @@ -65,13 +50,6 @@ struct STFile { int32_t fid; int32_t ref; tsdb_ftype_t type; - union { - SFStt fstt; - SFHead fhead; - SFData fdata; - SFSma fsma; - SFTomb ftomb; - }; }; #ifdef __cplusplus diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c index 815b783bd9..d46e7e2a26 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c @@ -32,10 +32,12 @@ struct SSttFWriter { // helper data SSkmInfo skmTb; SSkmInfo skmRow; + int32_t aBufSize[5]; + uint8_t *aBuf[5]; STsdbFD *pFd; }; -static int32_t write_ts_block(struct SSttFWriter *pWriter) { +static int32_t write_timeseries_block(struct SSttFWriter *pWriter) { int32_t code = 0; int32_t lino; @@ -50,37 +52,67 @@ static int32_t write_ts_block(struct SSttFWriter *pWriter) { pSttBlk->minUid = pBData->aUid[0]; pSttBlk->maxUid = pBData->aUid[pBData->nRow - 1]; pSttBlk->minKey = pSttBlk->maxKey = pBData->aTSKEY[0]; - pSttBlk->minVer = pSttBlk->maxVer = pBData->aTSKEY[0]; + pSttBlk->minVer = pSttBlk->maxVer = pBData->aVersion[0]; pSttBlk->nRow = pBData->nRow; for (int32_t iRow = 1; iRow < pBData->nRow; iRow++) { - pSttBlk->minKey = TMIN(pSttBlk->minKey, pBData->aTSKEY[iRow]); - pSttBlk->maxKey = TMAX(pSttBlk->maxKey, pBData->aTSKEY[iRow]); - pSttBlk->minVer = TMIN(pSttBlk->minVer, pBData->aVersion[iRow]); - pSttBlk->maxVer = TMAX(pSttBlk->maxVer, pBData->aVersion[iRow]); + if (pSttBlk->minKey > pBData->aTSKEY[iRow]) pSttBlk->minKey = pBData->aTSKEY[iRow]; + if (pSttBlk->maxKey < pBData->aTSKEY[iRow]) pSttBlk->maxKey = pBData->aTSKEY[iRow]; + if (pSttBlk->minVer > pBData->aVersion[iRow]) pSttBlk->minVer = pBData->aVersion[iRow]; + if (pSttBlk->maxVer < pBData->aVersion[iRow]) pSttBlk->maxVer = pBData->aVersion[iRow]; } // compress data block - code = tCmprBlockData(pBData, pWriter->config.cmprAlg, NULL, NULL, NULL /* TODO */, NULL /* TODO */); + code = tCmprBlockData(pBData, pWriter->config.cmprAlg, NULL, NULL, pWriter->config.aBuf, pWriter->aBufSize); TSDB_CHECK_CODE(code, lino, _exit); + pSttBlk->bInfo.offset = pWriter->config.file.size; + pSttBlk->bInfo.szKey = pWriter->aBufSize[2] + pWriter->aBufSize[3]; + pSttBlk->bInfo.szBlock = pWriter->aBufSize[0] + pWriter->aBufSize[1] + pSttBlk->bInfo.szKey; + + for (int32_t iBuf = 3; iBuf >= 0; iBuf--) { + if (pWriter->aBufSize[iBuf]) { + code = + tsdbWriteFile(pWriter->pFd, pWriter->config.file.size, pWriter->config.aBuf[iBuf], pWriter->aBufSize[iBuf]); + TSDB_CHECK_CODE(code, lino, _exit); + + pWriter->config.file.size += pWriter->aBufSize[iBuf]; + } + } + tBlockDataClear(pBData); _exit: if (code) { tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pWriter->config.pTsdb->pVnode), __func__, lino, tstrerror(code)); + } else { + // tsdbTrace(); + } + return code; +} + +static int32_t write_stt_blk(struct SSttFWriter *pWriter) { + int32_t code = 0; + int32_t lino; + + if (taosArrayGetSize(pWriter->aSttBlk) == 0) { + goto _exit; + } + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pWriter->config.pTsdb->pVnode), __func__, lino, + tstrerror(code)); + } else { + // tsdbDebug("vgId:%d %s done, offset:%" PRId64 " size:%" PRId64 " # of stt block:%d", + // TD_VID(pWriter->config.pTsdb->pVnode), __func__); } return code; } static int32_t write_del_block(struct SSttFWriter *pWriter) { int32_t code = 0; - // TODO - return code; -} -static int32_t write_stt_blk(struct SSttFWriter *pWriter) { - int32_t code = 0; // TODO return code; } @@ -91,7 +123,7 @@ static int32_t write_del_blk(struct SSttFWriter *pWriter) { return code; } -static int32_t stt_fwriter_create(const struct SSttFWriterConf *pConf, struct SSttFWriter **ppWriter) { +static int32_t create_stt_fwriter(const struct SSttFWriterConf *pConf, struct SSttFWriter **ppWriter) { int32_t code = 0; if ((ppWriter[0] = taosMemoryCalloc(1, sizeof(*ppWriter[0]))) == NULL) { @@ -100,11 +132,14 @@ static int32_t stt_fwriter_create(const struct SSttFWriterConf *pConf, struct SS } ppWriter[0]->config = pConf[0]; + if (pConf->pSkmTb == NULL) { + ppWriter[0]->config.pSkmTb = &ppWriter[0]->skmTb; + } if (pConf->pSkmRow == NULL) { ppWriter[0]->config.pSkmRow = &ppWriter[0]->skmRow; } - if (pConf->pSkmTb == NULL) { - ppWriter[0]->config.pSkmTb = &ppWriter[0]->skmTb; + if (pConf->aBuf == NULL) { + ppWriter[0]->config.aBuf = ppWriter[0]->aBuf; } tBlockDataCreate(&ppWriter[0]->bData); @@ -124,10 +159,11 @@ _exit: return code; } -static int32_t stt_fwriter_destroy(struct SSttFWriter *pWriter) { +static int32_t destroy_stt_fwriter(struct SSttFWriter *pWriter) { if (pWriter) { tDestroyTSchema(pWriter->skmTb.pTSchema); tDestroyTSchema(pWriter->skmRow.pTSchema); + for (int32_t i = 0; i < sizeof(pWriter->aBuf) / sizeof(pWriter->aBuf[0]); i++) taosMemoryFree(pWriter->aBuf[i]); taosArrayDestroy(pWriter->aSttBlk); tBlockDataDestroy(&pWriter->bData); taosMemoryFree(pWriter); @@ -135,26 +171,36 @@ static int32_t stt_fwriter_destroy(struct SSttFWriter *pWriter) { return 0; } -static int32_t stt_fwriter_open(struct SSttFWriter *pWriter) { +static int32_t open_stt_fwriter(struct SSttFWriter *pWriter) { int32_t code = 0; - // TODO + int32_t lino; + + int32_t flag = TD_FILE_READ | TD_FILE_WRITE | TD_FILE_CREATE | TD_FILE_TRUNC; // TODO + + code = tsdbOpenFile(pWriter->config.file.fname, pWriter->config.szPage, flag, &pWriter->pFd); + TSDB_CHECK_CODE(code, lino, _exit); + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pWriter->config.pTsdb->pVnode), __func__, lino, + tstrerror(code)); + } return code; } -static int32_t stt_fwriter_close(struct SSttFWriter *pWriter) { - int32_t code = 0; - // TODO - return code; +static int32_t close_stt_fwriter(struct SSttFWriter *pWriter) { + tsdbCloseFile(&pWriter->pFd); + return 0; } int32_t tsdbSttFWriterOpen(const struct SSttFWriterConf *pConf, struct SSttFWriter **ppWriter) { int32_t code = 0; int32_t lino; - code = stt_fwriter_create(pConf, ppWriter); + code = create_stt_fwriter(pConf, ppWriter); TSDB_CHECK_CODE(code, lino, _exit); - code = stt_fwriter_open(ppWriter[0]); + code = open_stt_fwriter(ppWriter[0]); TSDB_CHECK_CODE(code, lino, _exit); _exit: @@ -173,10 +219,22 @@ int32_t tsdbSttFWriterClose(struct SSttFWriter **ppWriter) { int32_t code = 0; int32_t lino; - code = stt_fwriter_close(ppWriter[0]); + if (ppWriter[0]->bData.nRow > 0) { + code = write_timeseries_block(ppWriter[0]); + TSDB_CHECK_CODE(code, lino, _exit); + } + + code = write_stt_blk(ppWriter[0]); TSDB_CHECK_CODE(code, lino, _exit); - stt_fwriter_close(ppWriter[0]); + code = write_del_blk(ppWriter[0]); + TSDB_CHECK_CODE(code, lino, _exit); + + code = close_stt_fwriter(ppWriter[0]); + TSDB_CHECK_CODE(code, lino, _exit); + + destroy_stt_fwriter(ppWriter[0]); + ppWriter[0] = NULL; _exit: if (code) { @@ -191,21 +249,20 @@ int32_t tsdbSttFWriteTSData(struct SSttFWriter *pWriter, TABLEID *tbid, TSDBROW if (!TABLE_SAME_SCHEMA(pWriter->bData.suid, pWriter->bData.uid, tbid->suid, tbid->uid)) { if (pWriter->bData.nRow > 0) { - code = write_ts_block(pWriter); + code = write_timeseries_block(pWriter); TSDB_CHECK_CODE(code, lino, _exit); } - // TODO: code = tsdbUpdateTableSchema(pWriter->config.pTsdb, tbid->uid, tbid->suid, pWriter->config.pSkmTb); + code = tsdbUpdateSkmTb(pWriter->config.pTsdb, tbid, pWriter->config.pSkmTb); TSDB_CHECK_CODE(code, lino, _exit); - TABLEID id = {.suid = tbid->suid, .uid = tbid->suid ? 0 : tbid->uid}; + TABLEID id = {.suid = tbid->suid, 0}; code = tBlockDataInit(&pWriter->bData, &id, pWriter->config.pSkmTb->pTSchema, NULL, 0); TSDB_CHECK_CODE(code, lino, _exit); } if (pRow->type == TSDBROW_ROW_FMT) { - // TODO: code = tsdbUpdateRowSchema(pWriter->config.pTsdb, tbid->uid, tbid->suid, pRow->row, - // pWriter->config.pSkmRow); + code = tsdbUpdateSkmRow(pWriter->config.pTsdb, tbid, TSDBROW_SVERSION(pRow), pWriter->config.pSkmRow); TSDB_CHECK_CODE(code, lino, _exit); } @@ -213,7 +270,7 @@ int32_t tsdbSttFWriteTSData(struct SSttFWriter *pWriter, TABLEID *tbid, TSDBROW TSDB_CHECK_CODE(code, lino, _exit); if (pWriter->bData.nRow >= pWriter->config.maxRow) { - code = write_ts_block(pWriter); + code = write_timeseries_block(pWriter); TSDB_CHECK_CODE(code, lino, _exit); } diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h index 59280a0baa..638fe6e03a 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h +++ b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h @@ -31,13 +31,14 @@ int32_t tsdbSttFWriteTSData(struct SSttFWriter *pWriter, TABLEID *tbid, TSDBROW int32_t tsdbSttFWriteDLData(struct SSttFWriter *pWriter, TABLEID *tbid, SDelData *pDelData); struct SSttFWriterConf { - STsdb *pTsdb; - SSkmInfo *pSkmTb; - SSkmInfo *pSkmRow; - STFile file; - int32_t maxRow; - int32_t szPage; - int8_t cmprAlg; + STsdb *pTsdb; + struct STFile file; + SSkmInfo *pSkmTb; + SSkmInfo *pSkmRow; + int32_t maxRow; + int32_t szPage; + int8_t cmprAlg; + uint8_t **aBuf; }; #ifdef __cplusplus diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c index 0b681df6f7..1184d152db 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c @@ -53,4 +53,35 @@ int32_t tDelBlockAppend(SDelBlock *pDelBlock, const TABLEID *tbid, const SDelDat code = tColDataAppendValue(&pDelBlock->aColData[4], &cv); return code; +} + +int32_t tsdbUpdateSkmTb(STsdb *pTsdb, const TABLEID *tbid, SSkmInfo *pSkmTb) { + if (tbid->suid) { + if (pSkmTb->suid == tbid->suid) { + pSkmTb->uid = tbid->uid; + return 0; + } + } else if (pSkmTb->uid == tbid->uid) { + return 0; + } + + pSkmTb->suid = tbid->suid; + pSkmTb->uid = tbid->uid; + tDestroyTSchema(pSkmTb->pTSchema); + return metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, tbid->suid, tbid->uid, -1, &pSkmTb->pTSchema); +} + +int32_t tsdbUpdateSkmRow(STsdb *pTsdb, const TABLEID *tbid, int32_t sver, SSkmInfo *pSkmRow) { + if (pSkmRow->pTSchema && pSkmRow->suid == tbid->suid) { + if (pSkmRow->suid) { + if (sver == pSkmRow->pTSchema->version) return 0; + } else if (pSkmRow->uid == tbid->uid && pSkmRow->pTSchema->version == sver) { + return 0; + } + } + + pSkmRow->suid = tbid->suid; + pSkmRow->uid = tbid->uid; + tDestroyTSchema(pSkmRow->pTSchema); + return metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, tbid->suid, tbid->uid, sver, &pSkmRow->pTSchema); } \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbUtil.h b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.h index 029fe42769..9f2ecb1628 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbUtil.h +++ b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.h @@ -32,6 +32,9 @@ int32_t tDelBlockDestroy(SDelBlock *pDelBlock); int32_t tDelBlockClear(SDelBlock *pDelBlock); int32_t tDelBlockAppend(SDelBlock *pDelBlock, const TABLEID *tbid, const SDelData *pDelData); +int32_t tsdbUpdateSkmTb(STsdb *pTsdb, const TABLEID *tbid, SSkmInfo *pSkmTb); +int32_t tsdbUpdateSkmRow(STsdb *pTsdb, const TABLEID *tbid, int32_t sver, SSkmInfo *pSkmRow); + /* Exposed Structs */ struct SDelBlock { SColData aColData[5]; //