From 62231ef14ca14dce536156317a5a788951a80ac4 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 23 Mar 2023 18:40:44 +0800 Subject: [PATCH] more code --- source/dnode/vnode/src/tsdb/dev/tsdbFile.c | 11 ++-- .../dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c | 36 ++++++++++++- .../dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h | 6 ++- source/dnode/vnode/src/tsdb/dev/tsdbUtil.c | 14 ++++++ source/dnode/vnode/src/tsdb/dev/tsdbUtil.h | 50 +++++++++++++++++++ 5 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 source/dnode/vnode/src/tsdb/dev/tsdbUtil.c create mode 100644 source/dnode/vnode/src/tsdb/dev/tsdbUtil.h diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFile.c b/source/dnode/vnode/src/tsdb/dev/tsdbFile.c index b2cf2cb391..078ac75a72 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFile.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFile.c @@ -33,13 +33,16 @@ typedef enum { TSDB_FTYPE_TOMB, // .tomb } tsdb_ftype_t; +const char *tsdb_ftype_suffix[] = { + "none", "stt", "head", "data", "sma", "tomb", +}; + typedef struct SFStt { - int64_t cid; int64_t offset; } SFStt; typedef struct SFHead { - // TODO + int64_t offset; } SFHead; typedef struct SFData { @@ -56,8 +59,10 @@ typedef struct SFTomb { struct STFile { SDiskID diskId; - tsdb_ftype_t type; int64_t size; + int64_t cid; + int32_t fid; + tsdb_ftype_t type; union { SFStt fstt; SFHead fhead; diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c index 470a4f57c3..3d016973ba 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.c @@ -14,10 +14,44 @@ */ #include "tsdbSttFWriter.h" +#include "tsdbUtil.h" + +struct SSttFWriter { + SSttFWriterConf conf; + SBlockData bData; + SDelBlock dData; + SArray *aSttBlk; // SArray + SArray *aDelBlk; // SArray + SSkmInfo skmTb; + SSkmInfo skmRow; + STsdbFD *pFd; +}; int32_t tsdbSttFWriterOpen(const SSttFWriterConf *pConf, SSttFWriter **ppWriter) { int32_t code = 0; - // TODO + int32_t lino = 0; + + ppWriter[0] = taosMemoryCalloc(1, sizeof(SSttFWriter)); + if (ppWriter[0] == NULL) { + code = TSDB_CODE_OUT_OF_MEMORY; + TSDB_CHECK_CODE(code, lino, _exit); + } + + ppWriter[0]->conf = pConf[0]; + if (ppWriter[0]->conf.pSkmTb == NULL) ppWriter[0]->conf.pSkmTb = &ppWriter[0]->skmTb; + if (ppWriter[0]->conf.pSkmRow == NULL) ppWriter[0]->conf.pSkmRow = &ppWriter[0]->skmRow; + + tBlockDataCreate(&ppWriter[0]->bData); + // tDelBlockCreate(&ppWriter[0]->dData); + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pConf->pTsdb->pVnode), __func__, lino, tstrerror(code)); + if (ppWriter[0]) { + taosMemoryFree(ppWriter[0]); + ppWriter[0] = NULL; + } + } return code; } diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h index b4e842c129..08aa59716c 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h +++ b/source/dnode/vnode/src/tsdb/dev/tsdbSttFWriter.h @@ -31,8 +31,10 @@ int32_t tsdbSttFWriteTSData(SSttFWriter *pWriter, TABLEID *tbid, TSDBROW *pRow); int32_t tsdbSttFWriteDLData(SSttFWriter *pWriter, TABLEID *tbid, SDelData *pDelData); struct SSttFWriterConf { - STsdb *pTsdb; - int32_t maxRow; + STsdb *pTsdb; + SSkmInfo *pSkmTb; + SSkmInfo *pSkmRow; + int32_t maxRow; }; #ifdef __cplusplus diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c new file mode 100644 index 0000000000..6dea4a4e57 --- /dev/null +++ b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.c @@ -0,0 +1,14 @@ +/* + * 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 . + */ \ 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 new file mode 100644 index 0000000000..dd829182b3 --- /dev/null +++ b/source/dnode/vnode/src/tsdb/dev/tsdbUtil.h @@ -0,0 +1,50 @@ +/* + * 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_UTIL_H +#define _TSDB_UTIL_H + +#include "tsdb.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exposed Handle */ +typedef struct SDelBlock SDelBlock; +typedef struct SDelBlk SDelBlk; + +/* Exposed APIs */ + +/* Exposed Structs */ +struct SDelBlock { + // + SColData aColData[4]; +}; + +struct SDelBlk { + int64_t suidMax; + int64_t suidMin; + int64_t uidMax; + int64_t uidMin; + int64_t verMax; + int64_t verMin; +}; + +#ifdef __cplusplus +} +#endif + +#endif /*_TSDB_UTIL_H*/ \ No newline at end of file