vnode.h 15.2 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
int32_t   vnodeStart(SVnode *pVnode);
void      vnodeStop(SVnode *pVnode);
int64_t   vnodeGetSyncHandle(SVnode *pVnode);
void      vnodeGetSnapshot(SVnode *pVnode, SSnapshot *pSnapshot);
70
void      vnodeGetInfo(void *pVnode, const char **dbname, int32_t *vgId, int64_t* numOfTables, int64_t* numOfNormalTables);
71
int32_t   vnodeProcessCreateTSma(SVnode *pVnode, void *pCont, uint32_t contLen);
H
Haojun Liao 已提交
72
int32_t   vnodeGetTableList(void* pVnode, int8_t type, SArray* pList);
73 74
int32_t   vnodeGetAllTableList(SVnode *pVnode, uint64_t uid, SArray *list);
int32_t   vnodeIsCatchUp(SVnode *pVnode);
C
cadem 已提交
75
ESyncRole vnodeGetRole(SVnode *pVnode);
dengyihao's avatar
dengyihao 已提交
76

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

83 84 85 86
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 已提交
87
void    vnodeResetLoad(SVnode *pVnode, SVnodeLoad *pLoad);
88 89 90 91 92 93 94 95 96 97 98 99
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);
100
void    vnodeProposeCommitOnNeed(SVnode *pVnode, bool atExit);
101

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

107 108
#define META_READER_NOLOCK 0x1

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

121
int      metaGetTableSzNameByUid(void *meta, uint64_t uid, char *tbName);
H
Haojun Liao 已提交
122
int      metaGetTableUidByName(void *pVnode, char *tbName, uint64_t *uid);
123
int      metaGetTableTypeByName(void *meta, char *tbName, ETableType *tbType);
124
bool     metaIsTableExist(void* pVnode, tb_uid_t uid);
125 126 127 128 129 130
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 已提交
131 132 133 134
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 已提交
135

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

H
Hongze Cheng 已提交
144
#if 1  // refact APIs below (TODO)
H
Hongze Cheng 已提交
145 146 147
typedef SVCreateTbReq   STbCfg;
typedef SVCreateTSmaReq SSmaCfg;

H
Hongze Cheng 已提交
148 149
typedef struct SMTbCursor SMTbCursor;

150
SMTbCursor *metaOpenTbCursor(void *pVnode);
H
Hongze Cheng 已提交
151
void        metaCloseTbCursor(SMTbCursor *pTbCur);
wmmhello's avatar
wmmhello 已提交
152
int32_t     metaTbCursorNext(SMTbCursor *pTbCur, ETableType jumpTableType);
K
kailixu 已提交
153
int32_t     metaTbCursorPrev(SMTbCursor *pTbCur, ETableType jumpTableType);
154

H
Hongze Cheng 已提交
155
#endif
H
Hongze Cheng 已提交
156

H
Hongze Cheng 已提交
157
// tsdb
H
Hongze Cheng 已提交
158
typedef struct STsdbReader STsdbReader;
H
Hongze Cheng 已提交
159

H
Hongze Cheng 已提交
160 161
#define TSDB_DEFAULT_STT_FILE  8
#define TSDB_DEFAULT_PAGE_SIZE 4096
H
Hongze Cheng 已提交
162

H
Haojun Liao 已提交
163 164
#define TIMEWINDOW_RANGE_CONTAINED 1
#define TIMEWINDOW_RANGE_EXTERNAL  2
H
Hongze Cheng 已提交
165

166 167 168 169
#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 已提交
170

171
int32_t      tsdbReaderOpen(SVnode *pVnode, SQueryTableDataCond *pCond, void *pTableList, int32_t numOfTables,
Y
yihaoDeng 已提交
172 173
                            SSDataBlock *pResBlock, STsdbReader **ppReader, const char *idstr, bool countOnly,
                            SHashObj **pIgnoreTables);
H
Haojun Liao 已提交
174
int32_t      tsdbSetTableList(STsdbReader *pReader, const void *pTableList, int32_t num);
175
void         tsdbReaderSetId(STsdbReader *pReader, const char *idstr);
H
Haojun Liao 已提交
176
void         tsdbReaderClose(STsdbReader *pReader);
D
dapan1121 已提交
177
int32_t      tsdbNextDataBlock(STsdbReader *pReader, bool *hasNext);
178
int32_t      tsdbRetrieveDatablockSMA(STsdbReader *pReader, SSDataBlock *pDataBlock, bool *allHave);
179
void         tsdbReleaseDataBlock(STsdbReader *pReader);
H
Haojun Liao 已提交
180 181 182 183 184 185
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);
186 187
uint64_t     tsdbGetReaderMaxVersion(STsdbReader *pReader);
void         tsdbReaderSetCloseFlag(STsdbReader *pReader);
Y
yihaoDeng 已提交
188
int64_t      tsdbGetLastTimestamp(SVnode *pVnode, void *pTableList, int32_t numOfTables, const char *pIdStr);
189

Y
yihaoDeng 已提交
190
int32_t tsdbReuseCacherowsReader(void *pReader, void *pTableIdList, int32_t numOfTables);
H
Haojun Liao 已提交
191
int32_t tsdbCacherowsReaderOpen(void *pVnode, int32_t type, void *pTableIdList, int32_t numOfTables, int32_t numOfCols,
M
Minglei Jin 已提交
192
                                SArray *pCidList, int32_t *pSlotIds, uint64_t suid, void **pReader, const char *idstr);
193 194
int32_t tsdbRetrieveCacheRows(void *pReader, SSDataBlock *pResBlock, const int32_t *slotIds, const int32_t *dstSlotIds,
                              SArray *pTableUids);
dengyihao's avatar
dengyihao 已提交
195
void   *tsdbCacherowsReaderClose(void *pReader);
H
Haojun Liao 已提交
196
int32_t tsdbGetTableSchema(void *pVnode, int64_t uid, STSchema **pSchema, int64_t *suid);
197

198 199 200 201
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 已提交
202

203 204 205 206 207 208 209
//// tq
//typedef struct SMetaTableInfo {
//  int64_t         suid;
//  int64_t         uid;
//  SSchemaWrapper *schema;
//  char            tbName[TSDB_TABLE_NAME_LEN];
//} SMetaTableInfo;
210

211 212 213 214
typedef struct SIdInfo {
  int64_t version;
  int32_t index;
} SIdInfo;
wmmhello's avatar
wmmhello 已提交
215

216 217 218 219 220 221 222 223 224 225 226 227 228
//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 已提交
229

L
Liu Jicong 已提交
230
typedef struct STqReader {
231
  SPackedData     msg;
232 233 234 235 236 237 238
  SSubmitReq2     submit;
  int32_t         nextBlk;
  int64_t         lastBlkUid;
  SWalReader     *pWalReader;
  SMeta          *pVnodeMeta;
  SHashObj       *tbIdHash;
  SArray         *pColIdList;  // SArray<int16_t>
L
Liu Jicong 已提交
239 240
  int32_t         cachedSchemaVer;
  int64_t         cachedSchemaSuid;
241
  int64_t         cachedSchemaUid;
L
Liu Jicong 已提交
242
  SSchemaWrapper *pSchemaWrapper;
243
  SSDataBlock    *pResBlock;
L
Liu Jicong 已提交
244 245
} STqReader;

246
STqReader *tqReaderOpen(SVnode *pVnode);
247
void       tqReaderClose(STqReader *);
L
Liu Jicong 已提交
248 249 250

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

254 255 256 257
bool tqReaderIsQueriedTable(STqReader* pReader, uint64_t uid);
bool tqCurrentBlockConsumed(const STqReader* pReader);

int32_t tqReaderSeek(STqReader *pReader, int64_t ver, const char *id);
Y
yihaoDeng 已提交
258 259
bool    tqNextBlockInWal(STqReader *pReader, const char *idstr);
bool    tqNextBlockImpl(STqReader *pReader, const char *idstr);
260
SWalReader* tqGetWalReader(STqReader* pReader);
H
Haojun Liao 已提交
261
SSDataBlock* tqGetResultBlock (STqReader* pReader);
L
Liu Jicong 已提交
262

Y
yihaoDeng 已提交
263
int32_t extractMsgFromWal(SWalReader *pReader, void **pItem, const char *id);
264
int32_t tqReaderSetSubmitMsg(STqReader *pReader, void *msgStr, int32_t msgLen, int64_t ver);
265
bool    tqNextDataBlockFilterOut(STqReader *pReader, SHashObj *filterOutUids);
266
int32_t tqRetrieveDataBlock(STqReader *pReader, SSDataBlock** pRes, const char* idstr);
267
int32_t tqRetrieveTaosxBlock(STqReader *pReader, SArray *blocks, SArray *schemas, SSubmitTbData **pSubmitTbDataRet);
H
Hongze Cheng 已提交
268

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

C
Cary Xu 已提交
271 272 273
// sma
int32_t smaGetTSmaDays(SVnodeCfg *pCfg, void *pCont, uint32_t contLen, int32_t *days);

H
Hongze Cheng 已提交
274
// SVSnapReader
H
Hongze Cheng 已提交
275
int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapReader **ppReader);
276
void    vnodeSnapReaderClose(SVSnapReader *pReader);
H
Hongze Cheng 已提交
277 278
int32_t vnodeSnapRead(SVSnapReader *pReader, uint8_t **ppData, uint32_t *nData);
// SVSnapWriter
H
Hongze Cheng 已提交
279
int32_t vnodeSnapWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWriter **ppWriter);
280
int32_t vnodeSnapWriterClose(SVSnapWriter *pWriter, int8_t rollback, SSnapshot *pSnapshot);
H
Hongze Cheng 已提交
281
int32_t vnodeSnapWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData);
H
Hongze Cheng 已提交
282

283
int32_t        buildSnapContext(SVnode *pVnode, int64_t snapVersion, int64_t suid, int8_t subType, bool withMeta,
284 285 286 287 288
                                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);
289

H
Hongze Cheng 已提交
290 291
// structs
struct STsdbCfg {
C
Cary Xu 已提交
292 293 294 295 296 297 298 299 300 301
  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 已提交
302 303 304
  SRetention retentions[TSDB_RETENTION_MAX];
};

305 306 307 308
typedef struct {
  int64_t numOfSTables;
  int64_t numOfCTables;
  int64_t numOfNTables;
309
  int64_t numOfNTimeSeries;
310
  int64_t numOfTimeSeries;
311
  int64_t itvTimeSeries;
312 313 314 315 316
  int64_t pointsWritten;
  int64_t totalStorage;
  int64_t compStorage;
} SVnodeStats;

H
Hongze Cheng 已提交
317
struct SVnodeCfg {
318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
  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 已提交
338
  bool        hashChange;
H
Hongze Cheng 已提交
339
  int16_t     sttTrigger;
340 341
  int16_t     hashPrefix;
  int16_t     hashSuffix;
H
Hongze Cheng 已提交
342
  int32_t     tsdbPageSize;
H
Hongze Cheng 已提交
343
};
H
save  
Hongze Cheng 已提交
344

dengyihao's avatar
dengyihao 已提交
345 346
#define TABLE_ROLLUP_ON       ((int8_t)0x1)
#define TABLE_IS_ROLLUP(FLG)  (((FLG) & (TABLE_ROLLUP_ON)) != 0)
C
Cary Xu 已提交
347
#define TABLE_SET_ROLLUP(FLG) ((FLG) |= TABLE_ROLLUP_ON)
348 349 350 351 352 353 354 355 356 357 358 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
//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 已提交
401

S
Shengliang Guan 已提交
402 403 404 405
#ifdef __cplusplus
}
#endif

406
#endif /*_TD_VNODE_H_*/