vnode.h 15.4 KB
Newer Older
H
refact  
Hongze Cheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * 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 <http://www.gnu.org/licenses/>.
S
Shengliang Guan 已提交
14 15 16 17 18
 */

#ifndef _TD_VNODE_H_
#define _TD_VNODE_H_

H
refact  
Hongze Cheng 已提交
19
#include "os.h"
S
Shengliang Guan 已提交
20
#include "tmsgcb.h"
L
Liu Jicong 已提交
21 22
#include "tqueue.h"
#include "trpc.h"
H
refact  
Hongze Cheng 已提交
23

H
Hongze Cheng 已提交
24
#include "sync.h"
H
refact  
Hongze Cheng 已提交
25
#include "tarray.h"
S
Shengliang Guan 已提交
26
#include "tfs.h"
H
refact  
Hongze Cheng 已提交
27
#include "wal.h"
S
Shengliang Guan 已提交
28

Y
yihaoDeng 已提交
29
#include "filter.h"
H
Hongze Cheng 已提交
30 31
#include "tcommon.h"
#include "tfs.h"
dengyihao's avatar
dengyihao 已提交
32
#include "tgrant.h"
H
Hongze Cheng 已提交
33 34 35
#include "tmsg.h"
#include "trow.h"

H
Hongze Cheng 已提交
36
#include "tdb.h"
37
#include "storageapi.h"
H
Hongze Cheng 已提交
38

S
Shengliang Guan 已提交
39 40 41
#ifdef __cplusplus
extern "C" {
#endif
C
Cary Xu 已提交
42

H
Hongze Cheng 已提交
43
// vnode
H
Hongze Cheng 已提交
44 45 46 47 48
typedef struct SVnode       SVnode;
typedef struct STsdbCfg     STsdbCfg;  // todo: remove
typedef struct SVnodeCfg    SVnodeCfg;
typedef struct SVSnapReader SVSnapReader;
typedef struct SVSnapWriter SVSnapWriter;
H
Hongze Cheng 已提交
49

H
Hongze Cheng 已提交
50 51
extern const SVnodeCfg vnodeCfgDefault;

52
int32_t vnodeInit(int32_t nthreads);
H
Hongze Cheng 已提交
53
void    vnodeCleanup();
54
int32_t vnodeCreate(const char *path, SVnodeCfg *pCfg, STfs *pTfs);
55 56
int32_t vnodeAlterReplica(const char *path, SAlterVnodeReplicaReq *pReq, STfs *pTfs);
int32_t vnodeAlterHashRange(const char *srcPath, const char *dstPath, SAlterVnodeHashRangeReq *pReq, STfs *pTfs);
H
refact  
Hongze Cheng 已提交
57
void    vnodeDestroy(const char *path, STfs *pTfs);
H
Hongze Cheng 已提交
58
SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb);
59
void    vnodePreClose(SVnode *pVnode);
60 61
void    vnodePostClose(SVnode *pVnode);
void    vnodeSyncCheckTimeout(SVnode *pVnode);
H
Hongze Cheng 已提交
62
void    vnodeClose(SVnode *pVnode);
S
Shengliang Guan 已提交
63
int32_t vnodeSyncCommit(SVnode *pVnode);
dengyihao's avatar
dengyihao 已提交
64
int32_t vnodeBegin(SVnode *pVnode);
65

66 67 68 69 70 71 72 73
int32_t   vnodeStart(SVnode *pVnode);
void      vnodeStop(SVnode *pVnode);
int64_t   vnodeGetSyncHandle(SVnode *pVnode);
void      vnodeGetSnapshot(SVnode *pVnode, SSnapshot *pSnapshot);
void      vnodeGetInfo(SVnode *pVnode, const char **dbname, int32_t *vgId);
int32_t   vnodeProcessCreateTSma(SVnode *pVnode, void *pCont, uint32_t contLen);
int32_t   vnodeGetAllTableList(SVnode *pVnode, uint64_t uid, SArray *list);
int32_t   vnodeIsCatchUp(SVnode *pVnode);
C
cadem 已提交
74
ESyncRole vnodeGetRole(SVnode *pVnode);
dengyihao's avatar
dengyihao 已提交
75

H
Hongze Cheng 已提交
76
int32_t vnodeGetCtbIdList(SVnode *pVnode, int64_t suid, SArray *list);
dengyihao's avatar
dengyihao 已提交
77
int32_t vnodeGetCtbIdListByFilter(SVnode *pVnode, int64_t suid, SArray *list, bool (*filter)(void *arg), void *arg);
78
int32_t vnodeGetStbIdList(SVnode *pVnode, int64_t suid, SArray *list);
L
Liu Jicong 已提交
79 80
void   *vnodeGetIdx(SVnode *pVnode);
void   *vnodeGetIvtIdx(SVnode *pVnode);
H
Hongze Cheng 已提交
81

82 83 84 85
int32_t vnodeGetCtbNum(SVnode *pVnode, int64_t suid, int64_t *num);
int32_t vnodeGetTimeSeriesNum(SVnode *pVnode, int64_t *num);
int32_t vnodeGetAllCtbNum(SVnode *pVnode, int64_t *num);

C
Cary Xu 已提交
86
void    vnodeResetLoad(SVnode *pVnode, SVnodeLoad *pLoad);
87 88 89 90 91 92 93 94 95 96 97 98
int32_t vnodeGetLoad(SVnode *pVnode, SVnodeLoad *pLoad);
int32_t vnodeValidateTableHash(SVnode *pVnode, char *tableFName);

int32_t vnodePreProcessWriteMsg(SVnode *pVnode, SRpcMsg *pMsg);
int32_t vnodePreprocessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg);

int32_t vnodeProcessWriteMsg(SVnode *pVnode, SRpcMsg *pMsg, int64_t version, SRpcMsg *pRsp);
int32_t vnodeProcessSyncMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp);
int32_t vnodeProcessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg);
int32_t vnodeProcessFetchMsg(SVnode *pVnode, SRpcMsg *pMsg, SQueueInfo *pInfo);
void    vnodeProposeWriteMsg(SQueueInfo *pInfo, STaosQall *qall, int32_t numOfMsgs);
void    vnodeApplyWriteMsg(SQueueInfo *pInfo, STaosQall *qall, int32_t numOfMsgs);
99
void    vnodeProposeCommitOnNeed(SVnode *pVnode, bool atExit);
100

H
Hongze Cheng 已提交
101
// meta
H
Hongze Cheng 已提交
102 103 104 105
typedef struct SMeta       SMeta;  // todo: remove
typedef struct SMetaReader SMetaReader;
typedef struct SMetaEntry  SMetaEntry;

106 107
#define META_READER_NOLOCK 0x1

H
Hongze Cheng 已提交
108
void        metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags);
109
void        metaReaderReleaseLock(SMetaReader *pReader);
H
Hongze Cheng 已提交
110
void        metaReaderClear(SMetaReader *pReader);
111
int32_t     metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
H
Haojun Liao 已提交
112
int32_t     metaGetTableEntryByUidCache(SMetaReader *pReader, tb_uid_t uid);
113
int         metaGetTableEntryByName(SMetaReader *pReader, const char *name);
114
int32_t     metaGetTableTags(SMeta *pMeta, uint64_t suid, SArray *uidList);
115
int32_t     metaGetTableTagsByUids(SMeta *pMeta, int64_t suid, SArray *uidList);
116
int32_t     metaReadNext(SMetaReader *pReader);
117
const void *metaGetTableTagVal(void *tag, int16_t type, STagVal *tagVal);
L
Liu Jicong 已提交
118
int         metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName);
119

120 121 122 123 124 125 126 127 128 129
int      metaGetTableSzNameByUid(void *meta, uint64_t uid, char *tbName);
int      metaGetTableUidByName(void *meta, char *tbName, uint64_t *uid);
int      metaGetTableTypeByName(void *meta, char *tbName, ETableType *tbType);
bool     metaIsTableExist(SMeta *pMeta, tb_uid_t uid);
int32_t  metaGetCachedTableUidList(SMeta *pMeta, tb_uid_t suid, const uint8_t *key, int32_t keyLen, SArray *pList,
                                   bool *acquired);
int32_t  metaUidFilterCachePut(SMeta *pMeta, uint64_t suid, const void *pKey, int32_t keyLen, void *pPayload,
                               int32_t payloadLen, double selectivityRatio);
int32_t  metaUidCacheClear(SMeta *pMeta, uint64_t suid);
tb_uid_t metaGetTableEntryUidByName(SMeta *pMeta, const char *name);
Y
yihaoDeng 已提交
130 131 132 133
int32_t  metaTbGroupCacheClear(SMeta *pMeta, uint64_t suid);
int32_t  metaGetCachedTbGroup(SMeta *pMeta, tb_uid_t suid, const uint8_t *pKey, int32_t keyLen, SArray **pList);
int32_t  metaPutTbGroupToCache(SMeta *pMeta, uint64_t suid, const void *pKey, int32_t keyLen, void *pPayload,
                               int32_t payloadLen);
D
dapan1121 已提交
134

135 136
int64_t  metaGetTbNum(SMeta *pMeta);
int64_t  metaGetNtbNum(SMeta *pMeta);
137 138 139 140
//typedef struct {
//  int64_t uid;
//  int64_t ctbNum;
//} SMetaStbStats;
141
int32_t metaGetStbStats(SMeta *pMeta, int64_t uid, SMetaStbStats *pInfo);
S
shenglian zhou 已提交
142

143 144 145 146 147 148 149 150 151 152
//typedef struct SMetaFltParam {
//  tb_uid_t suid;
//  int16_t  cid;
//  int16_t  type;
//  void    *val;
//  bool     reverse;
//  bool     equal;
//  int (*filterFunc)(void *a, void *b, int16_t type);
//
//} SMetaFltParam;
dengyihao's avatar
dengyihao 已提交
153

dengyihao's avatar
dengyihao 已提交
154
// TODO, refactor later
155 156 157 158
//int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *results);
//int32_t metaFilterCreateTime(SMeta *pMeta, SMetaFltParam *parm, SArray *pUids);
//int32_t metaFilterTableName(SMeta *pMeta, SMetaFltParam *param, SArray *pUids);
//int32_t metaFilterTtl(SMeta *pMeta, SMetaFltParam *param, SArray *pUids);
dengyihao's avatar
dengyihao 已提交
159

H
Hongze Cheng 已提交
160
#if 1  // refact APIs below (TODO)
H
Hongze Cheng 已提交
161 162 163
typedef SVCreateTbReq   STbCfg;
typedef SVCreateTSmaReq SSmaCfg;

H
Hongze Cheng 已提交
164 165
typedef struct SMTbCursor SMTbCursor;

H
Hongze Cheng 已提交
166 167
SMTbCursor *metaOpenTbCursor(SMeta *pMeta);
void        metaCloseTbCursor(SMTbCursor *pTbCur);
wmmhello's avatar
wmmhello 已提交
168
int32_t     metaTbCursorNext(SMTbCursor *pTbCur, ETableType jumpTableType);
K
kailixu 已提交
169
int32_t     metaTbCursorPrev(SMTbCursor *pTbCur, ETableType jumpTableType);
170

H
Hongze Cheng 已提交
171
#endif
H
Hongze Cheng 已提交
172

H
Hongze Cheng 已提交
173
// tsdb
H
Hongze Cheng 已提交
174
typedef struct STsdbReader STsdbReader;
H
Hongze Cheng 已提交
175

H
Hongze Cheng 已提交
176 177
#define TSDB_DEFAULT_STT_FILE  8
#define TSDB_DEFAULT_PAGE_SIZE 4096
H
Hongze Cheng 已提交
178

H
Haojun Liao 已提交
179 180
#define TIMEWINDOW_RANGE_CONTAINED 1
#define TIMEWINDOW_RANGE_EXTERNAL  2
H
Hongze Cheng 已提交
181

182 183 184 185
#define CACHESCAN_RETRIEVE_TYPE_ALL    0x1
#define CACHESCAN_RETRIEVE_TYPE_SINGLE 0x2
#define CACHESCAN_RETRIEVE_LAST_ROW    0x4
#define CACHESCAN_RETRIEVE_LAST        0x8
H
Haojun Liao 已提交
186

187
int32_t      tsdbReaderOpen(SVnode *pVnode, SQueryTableDataCond *pCond, void *pTableList, int32_t numOfTables,
Y
yihaoDeng 已提交
188 189
                            SSDataBlock *pResBlock, STsdbReader **ppReader, const char *idstr, bool countOnly,
                            SHashObj **pIgnoreTables);
H
Haojun Liao 已提交
190
int32_t      tsdbSetTableList(STsdbReader *pReader, const void *pTableList, int32_t num);
191
void         tsdbReaderSetId(STsdbReader *pReader, const char *idstr);
H
Haojun Liao 已提交
192
void         tsdbReaderClose(STsdbReader *pReader);
D
dapan1121 已提交
193
int32_t      tsdbNextDataBlock(STsdbReader *pReader, bool *hasNext);
194
int32_t      tsdbRetrieveDatablockSMA(STsdbReader *pReader, SSDataBlock *pDataBlock, bool *allHave);
195
void         tsdbReleaseDataBlock(STsdbReader *pReader);
H
Haojun Liao 已提交
196 197 198 199 200 201
SSDataBlock *tsdbRetrieveDataBlock(STsdbReader *pTsdbReadHandle, SArray *pColumnIdList);
int32_t      tsdbReaderReset(STsdbReader *pReader, SQueryTableDataCond *pCond);
int32_t      tsdbGetFileBlocksDistInfo(STsdbReader *pReader, STableBlockDistInfo *pTableBlockInfo);
int64_t      tsdbGetNumOfRowsInMemTable(STsdbReader *pHandle);
void        *tsdbGetIdx(SMeta *pMeta);
void        *tsdbGetIvtIdx(SMeta *pMeta);
202 203
uint64_t     tsdbGetReaderMaxVersion(STsdbReader *pReader);
void         tsdbReaderSetCloseFlag(STsdbReader *pReader);
Y
yihaoDeng 已提交
204
int64_t      tsdbGetLastTimestamp(SVnode *pVnode, void *pTableList, int32_t numOfTables, const char *pIdStr);
205

Y
yihaoDeng 已提交
206
int32_t tsdbReuseCacherowsReader(void *pReader, void *pTableIdList, int32_t numOfTables);
H
Haojun Liao 已提交
207
int32_t tsdbCacherowsReaderOpen(void *pVnode, int32_t type, void *pTableIdList, int32_t numOfTables, int32_t numOfCols,
M
Minglei Jin 已提交
208
                                SArray *pCidList, int32_t *pSlotIds, uint64_t suid, void **pReader, const char *idstr);
209 210
int32_t tsdbRetrieveCacheRows(void *pReader, SSDataBlock *pResBlock, const int32_t *slotIds, const int32_t *dstSlotIds,
                              SArray *pTableUids);
dengyihao's avatar
dengyihao 已提交
211
void   *tsdbCacherowsReaderClose(void *pReader);
212 213
int32_t tsdbGetTableSchema(SVnode *pVnode, int64_t uid, STSchema **pSchema, int64_t *suid);

214 215 216 217
void    tsdbCacheSetCapacity(SVnode *pVnode, size_t capacity);
size_t  tsdbCacheGetCapacity(SVnode *pVnode);
size_t  tsdbCacheGetUsage(SVnode *pVnode);
int32_t tsdbCacheGetElems(SVnode *pVnode);
H
Hongze Cheng 已提交
218

219 220 221 222 223 224 225
//// tq
//typedef struct SMetaTableInfo {
//  int64_t         suid;
//  int64_t         uid;
//  SSchemaWrapper *schema;
//  char            tbName[TSDB_TABLE_NAME_LEN];
//} SMetaTableInfo;
226

227 228 229 230
typedef struct SIdInfo {
  int64_t version;
  int32_t index;
} SIdInfo;
wmmhello's avatar
wmmhello 已提交
231

232 233 234 235 236 237 238 239 240 241 242 243 244
//typedef struct SSnapContext {
//  SMeta    *pMeta;
//  int64_t   snapVersion;
//  TBC      *pCur;
//  int64_t   suid;
//  int8_t    subType;
//  SHashObj *idVersion;
//  SHashObj *suidInfo;
//  SArray   *idList;
//  int32_t   index;
//  bool      withMeta;
//  bool      queryMeta;  // true-get meta, false-get data
//} SSnapContext;
H
Hongze Cheng 已提交
245

L
Liu Jicong 已提交
246
typedef struct STqReader {
247
  SPackedData     msg;
248 249 250 251 252 253 254
  SSubmitReq2     submit;
  int32_t         nextBlk;
  int64_t         lastBlkUid;
  SWalReader     *pWalReader;
  SMeta          *pVnodeMeta;
  SHashObj       *tbIdHash;
  SArray         *pColIdList;  // SArray<int16_t>
L
Liu Jicong 已提交
255 256
  int32_t         cachedSchemaVer;
  int64_t         cachedSchemaSuid;
257
  int64_t         cachedSchemaUid;
L
Liu Jicong 已提交
258
  SSchemaWrapper *pSchemaWrapper;
259
  SSDataBlock    *pResBlock;
L
Liu Jicong 已提交
260 261
} STqReader;

262
STqReader *tqReaderOpen(SVnode *pVnode);
L
Liu Jicong 已提交
263 264 265 266
void       tqCloseReader(STqReader *);

void    tqReaderSetColIdList(STqReader *pReader, SArray *pColIdList);
int32_t tqReaderSetTbUidList(STqReader *pReader, const SArray *tbUidList);
267
int32_t tqReaderAddTbUidList(STqReader *pReader, const SArray *pTableUidList);
L
Liu Jicong 已提交
268 269
int32_t tqReaderRemoveTbUidList(STqReader *pReader, const SArray *tbUidList);

270
int32_t tqSeekVer(STqReader *pReader, int64_t ver, const char *id);
Y
yihaoDeng 已提交
271 272
bool    tqNextBlockInWal(STqReader *pReader, const char *idstr);
bool    tqNextBlockImpl(STqReader *pReader, const char *idstr);
L
Liu Jicong 已提交
273

Y
yihaoDeng 已提交
274
int32_t extractMsgFromWal(SWalReader *pReader, void **pItem, const char *id);
275
int32_t tqReaderSetSubmitMsg(STqReader *pReader, void *msgStr, int32_t msgLen, int64_t ver);
276
bool    tqNextDataBlockFilterOut(STqReader *pReader, SHashObj *filterOutUids);
277
int32_t tqRetrieveDataBlock(STqReader *pReader, SSDataBlock** pRes, const char* idstr);
278
int32_t tqRetrieveTaosxBlock(STqReader *pReader, SArray *blocks, SArray *schemas, SSubmitTbData **pSubmitTbDataRet);
H
Hongze Cheng 已提交
279

280
int32_t vnodeEnqueueStreamMsg(SVnode *pVnode, SRpcMsg *pMsg);
L
Liu Jicong 已提交
281

C
Cary Xu 已提交
282 283 284
// sma
int32_t smaGetTSmaDays(SVnodeCfg *pCfg, void *pCont, uint32_t contLen, int32_t *days);

H
Hongze Cheng 已提交
285
// SVSnapReader
H
Hongze Cheng 已提交
286
int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapReader **ppReader);
287
void    vnodeSnapReaderClose(SVSnapReader *pReader);
H
Hongze Cheng 已提交
288 289
int32_t vnodeSnapRead(SVSnapReader *pReader, uint8_t **ppData, uint32_t *nData);
// SVSnapWriter
H
Hongze Cheng 已提交
290
int32_t vnodeSnapWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWriter **ppWriter);
291
int32_t vnodeSnapWriterClose(SVSnapWriter *pWriter, int8_t rollback, SSnapshot *pSnapshot);
H
Hongze Cheng 已提交
292
int32_t vnodeSnapWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData);
H
Hongze Cheng 已提交
293

294
int32_t        buildSnapContext(SVnode *pVnode, int64_t snapVersion, int64_t suid, int8_t subType, bool withMeta,
295 296 297 298 299
                                SSnapContext **ctxRet);
int32_t        getMetafromSnapShot(SSnapContext *ctx, void **pBuf, int32_t *contLen, int16_t *type, int64_t *uid);
SMetaTableInfo getUidfromSnapShot(SSnapContext *ctx);
int32_t        setForSnapShot(SSnapContext *ctx, int64_t uid);
int32_t        destroySnapContext(SSnapContext *ctx);
300

H
Hongze Cheng 已提交
301 302
// structs
struct STsdbCfg {
C
Cary Xu 已提交
303 304 305 306 307 308 309 310 311 312
  int8_t  precision;
  int8_t  update;
  int8_t  compression;
  int8_t  slLevel;
  int32_t minRows;
  int32_t maxRows;
  int32_t days;   // just for save config, don't use in tsdbRead/tsdbCommit/..., and use STsdbKeepCfg in STsdb instead
  int32_t keep0;  // just for save config, don't use in tsdbRead/tsdbCommit/..., and use STsdbKeepCfg in STsdb instead
  int32_t keep1;  // just for save config, don't use in tsdbRead/tsdbCommit/..., and use STsdbKeepCfg in STsdb instead
  int32_t keep2;  // just for save config, don't use in tsdbRead/tsdbCommit/..., and use STsdbKeepCfg in STsdb instead
C
Cary Xu 已提交
313 314 315
  SRetention retentions[TSDB_RETENTION_MAX];
};

316 317 318 319
typedef struct {
  int64_t numOfSTables;
  int64_t numOfCTables;
  int64_t numOfNTables;
320
  int64_t numOfNTimeSeries;
321
  int64_t numOfTimeSeries;
322
  int64_t itvTimeSeries;
323 324 325 326 327
  int64_t pointsWritten;
  int64_t totalStorage;
  int64_t compStorage;
} SVnodeStats;

H
Hongze Cheng 已提交
328
struct SVnodeCfg {
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
  int32_t     vgId;
  char        dbname[TSDB_DB_FNAME_LEN];
  uint64_t    dbId;
  int32_t     cacheLastSize;
  int32_t     szPage;
  int32_t     szCache;
  uint64_t    szBuf;
  bool        isHeap;
  bool        isWeak;
  int8_t      cacheLast;
  int8_t      isTsma;
  int8_t      isRsma;
  int8_t      hashMethod;
  int8_t      standby;
  STsdbCfg    tsdbCfg;
  SWalCfg     walCfg;
  SSyncCfg    syncCfg;
  SVnodeStats vndStats;
  uint32_t    hashBegin;
  uint32_t    hashEnd;
B
Benguang Zhao 已提交
349
  bool        hashChange;
H
Hongze Cheng 已提交
350
  int16_t     sttTrigger;
351 352
  int16_t     hashPrefix;
  int16_t     hashSuffix;
H
Hongze Cheng 已提交
353
  int32_t     tsdbPageSize;
H
Hongze Cheng 已提交
354
};
H
save  
Hongze Cheng 已提交
355

dengyihao's avatar
dengyihao 已提交
356 357
#define TABLE_ROLLUP_ON       ((int8_t)0x1)
#define TABLE_IS_ROLLUP(FLG)  (((FLG) & (TABLE_ROLLUP_ON)) != 0)
C
Cary Xu 已提交
358
#define TABLE_SET_ROLLUP(FLG) ((FLG) |= TABLE_ROLLUP_ON)
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411
//struct SMetaEntry {
//  int64_t  version;
//  int8_t   type;
//  int8_t   flags;  // TODO: need refactor?
//  tb_uid_t uid;
//  char    *name;
//  union {
//    struct {
//      SSchemaWrapper schemaRow;
//      SSchemaWrapper schemaTag;
//      SRSmaParam     rsmaParam;
//    } stbEntry;
//    struct {
//      int64_t  ctime;
//      int32_t  ttlDays;
//      int32_t  commentLen;
//      char    *comment;
//      tb_uid_t suid;
//      uint8_t *pTags;
//    } ctbEntry;
//    struct {
//      int64_t        ctime;
//      int32_t        ttlDays;
//      int32_t        commentLen;
//      char          *comment;
//      int32_t        ncid;  // next column id
//      SSchemaWrapper schemaRow;
//    } ntbEntry;
//    struct {
//      STSma *tsma;
//    } smaEntry;
//  };
//
//  uint8_t *pBuf;
//};

//struct SMetaReader {
//  int32_t    flags;
//  SMeta     *pMeta;
//  SDecoder   coder;
//  SMetaEntry me;
//  void      *pBuf;
//  int32_t    szBuf;
//};

//struct SMTbCursor {
//  TBC        *pDbc;
//  void       *pKey;
//  void       *pVal;
//  int32_t     kLen;
//  int32_t     vLen;
//  SMetaReader mr;
//};
H
Hongze Cheng 已提交
412

S
Shengliang Guan 已提交
413 414 415 416
#ifdef __cplusplus
}
#endif

417
#endif /*_TD_VNODE_H_*/