434 lines
18 KiB
C
434 lines
18 KiB
C
/*
|
|
* 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/>.
|
|
*/
|
|
|
|
#ifndef TDENGINE_STORAGEAPI_H
|
|
#define TDENGINE_STORAGEAPI_H
|
|
|
|
#include "function.h"
|
|
#include "index.h"
|
|
#include "taosdef.h"
|
|
#include "tcommon.h"
|
|
#include "tmsg.h"
|
|
#include "tscalablebf.h"
|
|
#include "tsimplehash.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define TIMEWINDOW_RANGE_CONTAINED 1
|
|
#define TIMEWINDOW_RANGE_EXTERNAL 2
|
|
|
|
#define CACHESCAN_RETRIEVE_TYPE_ALL 0x1
|
|
#define CACHESCAN_RETRIEVE_TYPE_SINGLE 0x2
|
|
#define CACHESCAN_RETRIEVE_LAST_ROW 0x4
|
|
#define CACHESCAN_RETRIEVE_LAST 0x8
|
|
|
|
#define META_READER_NOLOCK 0x1
|
|
|
|
typedef struct SMeta SMeta;
|
|
typedef TSKEY (*GetTsFun)(void*);
|
|
|
|
typedef 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 btime;
|
|
int32_t ttlDays;
|
|
int32_t commentLen;
|
|
char* comment;
|
|
tb_uid_t suid;
|
|
uint8_t* pTags;
|
|
} ctbEntry;
|
|
struct {
|
|
int64_t btime;
|
|
int32_t ttlDays;
|
|
int32_t commentLen;
|
|
char* comment;
|
|
int32_t ncid; // next column id
|
|
SSchemaWrapper schemaRow;
|
|
} ntbEntry;
|
|
struct {
|
|
STSma* tsma;
|
|
} smaEntry;
|
|
};
|
|
|
|
uint8_t* pBuf;
|
|
} SMetaEntry;
|
|
|
|
typedef struct SMetaReader {
|
|
int32_t flags;
|
|
void* pMeta;
|
|
SDecoder coder;
|
|
SMetaEntry me;
|
|
void* pBuf;
|
|
int32_t szBuf;
|
|
struct SStoreMeta* pAPI;
|
|
} SMetaReader;
|
|
|
|
typedef struct SMTbCursor {
|
|
void* pMeta;
|
|
void* pDbc;
|
|
void* pKey;
|
|
void* pVal;
|
|
int32_t kLen;
|
|
int32_t vLen;
|
|
SMetaReader mr;
|
|
int8_t paused;
|
|
} SMTbCursor;
|
|
|
|
typedef struct SMCtbCursor {
|
|
SMeta *pMeta;
|
|
void *pCur;
|
|
tb_uid_t suid;
|
|
void *pKey;
|
|
void *pVal;
|
|
int kLen;
|
|
int vLen;
|
|
int8_t paused;
|
|
int lock;
|
|
} SMCtbCursor;
|
|
|
|
typedef struct SRowBuffPos {
|
|
void* pRowBuff;
|
|
void* pKey;
|
|
bool beFlushed;
|
|
bool beUsed;
|
|
} SRowBuffPos;
|
|
|
|
// tq
|
|
typedef struct SMetaTableInfo {
|
|
int64_t suid;
|
|
int64_t uid;
|
|
SSchemaWrapper* schema;
|
|
char tbName[TSDB_TABLE_NAME_LEN];
|
|
} SMetaTableInfo;
|
|
|
|
typedef struct SSnapContext {
|
|
SMeta* pMeta; // todo remove it
|
|
int64_t snapVersion;
|
|
void* pCur;
|
|
int64_t suid;
|
|
int8_t subType;
|
|
SHashObj* idVersion;
|
|
SHashObj* suidInfo;
|
|
SArray* idList;
|
|
int32_t index;
|
|
int8_t withMeta;
|
|
int8_t queryMeta; // true-get meta, false-get data
|
|
} SSnapContext;
|
|
|
|
typedef struct {
|
|
int64_t uid;
|
|
int64_t ctbNum;
|
|
} SMetaStbStats;
|
|
|
|
// void tqReaderSetColIdList(STqReader *pReader, SArray *pColIdList);
|
|
// int32_t tqReaderSetTbUidList(STqReader *pReader, const SArray *tbUidList);
|
|
// int32_t tqReaderAddTbUidList(STqReader *pReader, const SArray *pTableUidList);
|
|
// int32_t tqReaderRemoveTbUidList(STqReader *pReader, const SArray *tbUidList);
|
|
// bool tqReaderIsQueriedTable(STqReader* pReader, uint64_t uid);
|
|
// bool tqCurrentBlockConsumed(const STqReader* pReader);
|
|
// int32_t tqReaderSeek(STqReader *pReader, int64_t ver, const char *id);
|
|
// bool tqNextBlockInWal(STqReader* pReader, const char* idstr);
|
|
// bool tqNextBlockImpl(STqReader *pReader, const char* idstr);
|
|
// int32_t getTableInfoFromSnapshot(SSnapContext *ctx, void **pBuf, int32_t *contLen, int16_t *type, int64_t
|
|
// *uid); SMetaTableInfo getMetaTableInfoFromSnapshot(SSnapContext *ctx); int32_t setForSnapShot(SSnapContext
|
|
// *ctx, int64_t uid); int32_t destroySnapContext(SSnapContext *ctx);
|
|
|
|
// clang-format off
|
|
/*-------------------------------------------------new api format---------------------------------------------------*/
|
|
typedef struct TsdReader {
|
|
int32_t (*tsdReaderOpen)(void* pVnode, SQueryTableDataCond* pCond, void* pTableList, int32_t numOfTables,
|
|
SSDataBlock* pResBlock, void** ppReader, const char* idstr, bool countOnly,
|
|
SHashObj** pIgnoreTables);
|
|
void (*tsdReaderClose)();
|
|
void (*tsdSetReaderTaskId)(void *pReader, const char *pId);
|
|
int32_t (*tsdSetQueryTableList)();
|
|
int32_t (*tsdNextDataBlock)();
|
|
|
|
int32_t (*tsdReaderRetrieveBlockSMAInfo)();
|
|
SSDataBlock *(*tsdReaderRetrieveDataBlock)();
|
|
|
|
void (*tsdReaderReleaseDataBlock)();
|
|
|
|
int32_t (*tsdReaderResetStatus)();
|
|
int32_t (*tsdReaderGetDataBlockDistInfo)();
|
|
int64_t (*tsdReaderGetNumOfInMemRows)();
|
|
void (*tsdReaderNotifyClosing)();
|
|
} TsdReader;
|
|
|
|
typedef struct SStoreCacheReader {
|
|
int32_t (*openReader)(void *pVnode, int32_t type, void *pTableIdList, int32_t numOfTables, int32_t numOfCols,
|
|
SArray *pCidList, int32_t *pSlotIds, uint64_t suid, void **pReader, const char *idstr);
|
|
void *(*closeReader)(void *pReader);
|
|
int32_t (*retrieveRows)(void *pReader, SSDataBlock *pResBlock, const int32_t *slotIds, const int32_t *dstSlotIds,
|
|
SArray *pTableUidList);
|
|
int32_t (*reuseReader)(void *pReader, void *pTableIdList, int32_t numOfTables);
|
|
} SStoreCacheReader;
|
|
|
|
// clang-format on
|
|
|
|
/*------------------------------------------------------------------------------------------------------------------*/
|
|
/*
|
|
void tqReaderSetColIdList(STqReader *pReader, SArray *pColIdList);
|
|
int32_t tqReaderSetTbUidList(STqReader *pReader, const SArray *tbUidList);
|
|
int32_t tqReaderAddTbUidList(STqReader *pReader, const SArray *pTableUidList);
|
|
int32_t tqReaderRemoveTbUidList(STqReader *pReader, const SArray *tbUidList);
|
|
bool tqReaderIsQueriedTable(STqReader* pReader, uint64_t uid);
|
|
bool tqCurrentBlockConsumed(const STqReader* pReader);
|
|
|
|
int32_t tqReaderSeek(STqReader *pReader, int64_t ver, const char *id);
|
|
bool tqNextBlockInWal(STqReader* pReader, const char* idstr);
|
|
bool tqNextBlockImpl(STqReader *pReader, const char* idstr);
|
|
|
|
int32_t tqRetrieveDataBlock(STqReader *pReader, SSDataBlock **pRes, const char* idstr);
|
|
STqReader *tqReaderOpen(void *pVnode);
|
|
void tqReaderClose(STqReader *);
|
|
|
|
int32_t tqReaderSetSubmitMsg(STqReader *pReader, void *msgStr, int32_t msgLen, int64_t ver);
|
|
bool tqNextDataBlockFilterOut(STqReader *pReader, SHashObj *filterOutUids);
|
|
SWalReader* tqGetWalReader(STqReader* pReader);
|
|
int32_t tqRetrieveTaosxBlock(STqReader *pReader, SArray *blocks, SArray *schemas, SSubmitTbData **pSubmitTbDataRet);
|
|
*/
|
|
// todo rename
|
|
typedef struct SStoreTqReader {
|
|
struct STqReader* (*tqReaderOpen)();
|
|
void (*tqReaderClose)();
|
|
|
|
int32_t (*tqReaderSeek)();
|
|
int32_t (*tqRetrieveBlock)();
|
|
bool (*tqReaderNextBlockInWal)();
|
|
bool (*tqNextBlockImpl)(); // todo remove it
|
|
SSDataBlock* (*tqGetResultBlock)();
|
|
|
|
void (*tqReaderSetColIdList)();
|
|
int32_t (*tqReaderSetQueryTableList)();
|
|
|
|
int32_t (*tqReaderAddTables)();
|
|
int32_t (*tqReaderRemoveTables)();
|
|
|
|
bool (*tqReaderIsQueriedTable)();
|
|
bool (*tqReaderCurrentBlockConsumed)();
|
|
|
|
struct SWalReader* (*tqReaderGetWalReader)(); // todo remove it
|
|
int32_t (*tqReaderRetrieveTaosXBlock)(); // todo remove it
|
|
|
|
int32_t (*tqReaderSetSubmitMsg)(); // todo remove it
|
|
bool (*tqReaderNextBlockFilterOut)();
|
|
} SStoreTqReader;
|
|
|
|
typedef struct SStoreSnapshotFn {
|
|
int32_t (*setForSnapShot)(SSnapContext* ctx, int64_t uid);
|
|
int32_t (*destroySnapshot)(SSnapContext* ctx);
|
|
SMetaTableInfo (*getMetaTableInfoFromSnapshot)(SSnapContext* ctx);
|
|
int32_t (*getTableInfoFromSnapshot)(SSnapContext* ctx, void** pBuf, int32_t* contLen, int16_t* type, int64_t* uid);
|
|
} SStoreSnapshotFn;
|
|
|
|
typedef struct SStoreMeta {
|
|
SMTbCursor* (*openTableMetaCursor)(void* pVnode); // metaOpenTbCursor
|
|
void (*closeTableMetaCursor)(SMTbCursor* pTbCur); // metaCloseTbCursor
|
|
void (*pauseTableMetaCursor)(SMTbCursor* pTbCur); // metaPauseTbCursor
|
|
void (*resumeTableMetaCursor)(SMTbCursor* pTbCur, int8_t first); // metaResumeTbCursor
|
|
int32_t (*cursorNext)(SMTbCursor* pTbCur, ETableType jumpTableType); // metaTbCursorNext
|
|
int32_t (*cursorPrev)(SMTbCursor* pTbCur, ETableType jumpTableType); // metaTbCursorPrev
|
|
|
|
int32_t (*getTableTags)(void* pVnode, uint64_t suid, SArray* uidList);
|
|
int32_t (*getTableTagsByUid)(void* pVnode, int64_t suid, SArray* uidList);
|
|
const void* (*extractTagVal)(const void* tag, int16_t type, STagVal* tagVal); // todo remove it
|
|
|
|
int32_t (*getTableUidByName)(void* pVnode, char* tbName, uint64_t* uid);
|
|
int32_t (*getTableTypeByName)(void* pVnode, char* tbName, ETableType* tbType);
|
|
int32_t (*getTableNameByUid)(void* pVnode, uint64_t uid, char* tbName);
|
|
bool (*isTableExisted)(void* pVnode, tb_uid_t uid);
|
|
|
|
int32_t (*metaGetCachedTbGroup)(void* pVnode, tb_uid_t suid, const uint8_t* pKey, int32_t keyLen, SArray** pList);
|
|
int32_t (*metaPutTbGroupToCache)(void* pVnode, uint64_t suid, const void* pKey, int32_t keyLen, void* pPayload,
|
|
int32_t payloadLen);
|
|
|
|
int32_t (*getCachedTableList)(void* pVnode, tb_uid_t suid, const uint8_t* pKey, int32_t keyLen, SArray* pList1,
|
|
bool* acquireRes);
|
|
int32_t (*putCachedTableList)(void* pVnode, uint64_t suid, const void* pKey, int32_t keyLen, void* pPayload,
|
|
int32_t payloadLen, double selectivityRatio);
|
|
|
|
void* (*storeGetIndexInfo)();
|
|
void* (*getInvertIndex)(void* pVnode);
|
|
int32_t (*getChildTableList)(
|
|
void* pVnode, int64_t suid,
|
|
SArray* list); // support filter and non-filter cases. [vnodeGetCtbIdList & vnodeGetCtbIdListByFilter]
|
|
int32_t (*storeGetTableList)(void* pVnode, int8_t type, SArray* pList); // vnodeGetStbIdList & vnodeGetAllTableList
|
|
void* storeGetVersionRange;
|
|
void* storeGetLastTimestamp;
|
|
|
|
int32_t (*getTableSchema)(void* pVnode, int64_t uid, STSchema** pSchema, int64_t* suid); // tsdbGetTableSchema
|
|
|
|
// db name, vgId, numOfTables, numOfSTables
|
|
int32_t (*getNumOfChildTables)(
|
|
void* pVnode, int64_t uid,
|
|
int64_t* numOfTables); // int32_t metaGetStbStats(SMeta *pMeta, int64_t uid, SMetaStbStats *pInfo);
|
|
void (*getBasicInfo)(void* pVnode, const char** dbname, int32_t* vgId, int64_t* numOfTables,
|
|
int64_t* numOfNormalTables); // vnodeGetInfo(void *pVnode, const char **dbname, int32_t *vgId) &
|
|
// metaGetTbNum(SMeta *pMeta) & metaGetNtbNum(SMeta *pMeta);
|
|
int64_t (*getNumOfRowsInMem)(void* pVnode);
|
|
/**
|
|
int32_t vnodeGetCtbIdList(void *pVnode, int64_t suid, SArray *list);
|
|
int32_t vnodeGetCtbIdListByFilter(void *pVnode, int64_t suid, SArray *list, bool (*filter)(void *arg), void *arg);
|
|
int32_t vnodeGetStbIdList(void *pVnode, int64_t suid, SArray *list);
|
|
*/
|
|
SMCtbCursor* (*openCtbCursor)(void *pVnode, tb_uid_t uid, int lock);
|
|
int32_t (*resumeCtbCursor)(SMCtbCursor* pCtbCur, int8_t first);
|
|
void (*pauseCtbCursor)(SMCtbCursor* pCtbCur);
|
|
void (*closeCtbCursor)(SMCtbCursor *pCtbCur);
|
|
tb_uid_t (*ctbCursorNext)(SMCtbCursor* pCur);
|
|
} SStoreMeta;
|
|
|
|
typedef struct SStoreMetaReader {
|
|
void (*initReader)(SMetaReader* pReader, void* pVnode, int32_t flags, SStoreMeta* pAPI);
|
|
void (*clearReader)(SMetaReader* pReader);
|
|
void (*readerReleaseLock)(SMetaReader* pReader);
|
|
int32_t (*getTableEntryByUid)(SMetaReader* pReader, tb_uid_t uid);
|
|
int32_t (*getTableEntryByName)(SMetaReader* pReader, const char* name);
|
|
int32_t (*getEntryGetUidCache)(SMetaReader* pReader, tb_uid_t uid);
|
|
} SStoreMetaReader;
|
|
|
|
typedef struct SUpdateInfo {
|
|
SArray* pTsBuckets;
|
|
uint64_t numBuckets;
|
|
SArray* pTsSBFs;
|
|
uint64_t numSBFs;
|
|
int64_t interval;
|
|
int64_t watermark;
|
|
TSKEY minTS;
|
|
SScalableBf* pCloseWinSBF;
|
|
SHashObj* pMap;
|
|
uint64_t maxDataVersion;
|
|
} SUpdateInfo;
|
|
|
|
typedef struct {
|
|
void* iter; // rocksdb_iterator_t* iter;
|
|
void* snapshot; // rocksdb_snapshot_t* snapshot;
|
|
void* readOpt; // rocksdb_readoptions_t* readOpt;
|
|
void* db; // rocksdb_t* db;
|
|
void* pCur;
|
|
int64_t number;
|
|
} SStreamStateCur;
|
|
|
|
typedef struct SStateStore {
|
|
int32_t (*streamStatePutParName)(SStreamState* pState, int64_t groupId, const char* tbname);
|
|
int32_t (*streamStateGetParName)(SStreamState* pState, int64_t groupId, void** pVal);
|
|
|
|
int32_t (*streamStateAddIfNotExist)(SStreamState* pState, const SWinKey* key, void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateReleaseBuf)(SStreamState* pState, const SWinKey* key, void* pVal);
|
|
void (*streamStateFreeVal)(void* val);
|
|
|
|
int32_t (*streamStatePut)(SStreamState* pState, const SWinKey* key, const void* value, int32_t vLen);
|
|
int32_t (*streamStateGet)(SStreamState* pState, const SWinKey* key, void** pVal, int32_t* pVLen);
|
|
bool (*streamStateCheck)(SStreamState* pState, const SWinKey* key);
|
|
int32_t (*streamStateGetByPos)(SStreamState* pState, void* pos, void** pVal);
|
|
int32_t (*streamStateDel)(SStreamState* pState, const SWinKey* key);
|
|
int32_t (*streamStateClear)(SStreamState* pState);
|
|
void (*streamStateSetNumber)(SStreamState* pState, int32_t number);
|
|
int32_t (*streamStateSaveInfo)(SStreamState* pState, void* pKey, int32_t keyLen, void* pVal, int32_t vLen);
|
|
int32_t (*streamStateGetInfo)(SStreamState* pState, void* pKey, int32_t keyLen, void** pVal, int32_t* pLen);
|
|
|
|
int32_t (*streamStateFillPut)(SStreamState* pState, const SWinKey* key, const void* value, int32_t vLen);
|
|
int32_t (*streamStateFillGet)(SStreamState* pState, const SWinKey* key, void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateFillDel)(SStreamState* pState, const SWinKey* key);
|
|
|
|
int32_t (*streamStateCurNext)(SStreamState* pState, SStreamStateCur* pCur);
|
|
int32_t (*streamStateCurPrev)(SStreamState* pState, SStreamStateCur* pCur);
|
|
|
|
SStreamStateCur* (*streamStateGetAndCheckCur)(SStreamState* pState, SWinKey* key);
|
|
SStreamStateCur* (*streamStateSeekKeyNext)(SStreamState* pState, const SWinKey* key);
|
|
SStreamStateCur* (*streamStateFillSeekKeyNext)(SStreamState* pState, const SWinKey* key);
|
|
SStreamStateCur* (*streamStateFillSeekKeyPrev)(SStreamState* pState, const SWinKey* key);
|
|
void (*streamStateFreeCur)(SStreamStateCur* pCur);
|
|
|
|
int32_t (*streamStateGetGroupKVByCur)(SStreamStateCur* pCur, SWinKey* pKey, const void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateGetKVByCur)(SStreamStateCur* pCur, SWinKey* pKey, const void** pVal, int32_t* pVLen);
|
|
|
|
int32_t (*streamStateSessionAddIfNotExist)(SStreamState* pState, SSessionKey* key, TSKEY gap, void** pVal,
|
|
int32_t* pVLen);
|
|
int32_t (*streamStateSessionPut)(SStreamState* pState, const SSessionKey* key, const void* value, int32_t vLen);
|
|
int32_t (*streamStateSessionGet)(SStreamState* pState, SSessionKey* key, void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateSessionDel)(SStreamState* pState, const SSessionKey* key);
|
|
int32_t (*streamStateSessionClear)(SStreamState* pState);
|
|
int32_t (*streamStateSessionGetKVByCur)(SStreamStateCur* pCur, SSessionKey* pKey, void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateStateAddIfNotExist)(SStreamState* pState, SSessionKey* key, char* pKeyData, int32_t keyDataLen,
|
|
state_key_cmpr_fn fn, void** pVal, int32_t* pVLen);
|
|
int32_t (*streamStateSessionGetKeyByRange)(SStreamState* pState, const SSessionKey* range, SSessionKey* curKey);
|
|
|
|
SUpdateInfo* (*updateInfoInit)(int64_t interval, int32_t precision, int64_t watermark, bool igUp);
|
|
TSKEY (*updateInfoFillBlockData)(SUpdateInfo* pInfo, SSDataBlock* pBlock, int32_t primaryTsCol);
|
|
bool (*updateInfoIsUpdated)(SUpdateInfo* pInfo, uint64_t tableId, TSKEY ts);
|
|
bool (*updateInfoIsTableInserted)(SUpdateInfo* pInfo, int64_t tbUid);
|
|
void (*updateInfoDestroy)(SUpdateInfo* pInfo);
|
|
void (*windowSBfDelete)(SUpdateInfo *pInfo, uint64_t count);
|
|
void (*windowSBfAdd)(SUpdateInfo *pInfo, uint64_t count);
|
|
|
|
SUpdateInfo* (*updateInfoInitP)(SInterval* pInterval, int64_t watermark, bool igUp);
|
|
void (*updateInfoAddCloseWindowSBF)(SUpdateInfo* pInfo);
|
|
void (*updateInfoDestoryColseWinSBF)(SUpdateInfo* pInfo);
|
|
int32_t (*updateInfoSerialize)(void* buf, int32_t bufLen, const SUpdateInfo* pInfo);
|
|
int32_t (*updateInfoDeserialize)(void* buf, int32_t bufLen, SUpdateInfo* pInfo);
|
|
|
|
SStreamStateCur* (*streamStateSessionSeekKeyNext)(SStreamState* pState, const SSessionKey* key);
|
|
SStreamStateCur* (*streamStateSessionSeekKeyCurrentPrev)(SStreamState* pState, const SSessionKey* key);
|
|
SStreamStateCur* (*streamStateSessionSeekKeyCurrentNext)(SStreamState* pState, const SSessionKey* key);
|
|
|
|
struct SStreamFileState* (*streamFileStateInit)(int64_t memSize, uint32_t keySize, uint32_t rowSize,
|
|
uint32_t selectRowSize, GetTsFun fp, void* pFile, TSKEY delMark,
|
|
const char* id, int64_t ckId);
|
|
|
|
void (*streamFileStateDestroy)(struct SStreamFileState* pFileState);
|
|
void (*streamFileStateClear)(struct SStreamFileState* pFileState);
|
|
bool (*needClearDiskBuff)(struct SStreamFileState* pFileState);
|
|
|
|
SStreamState* (*streamStateOpen)(char* path, void* pTask, bool specPath, int32_t szPage, int32_t pages);
|
|
void (*streamStateClose)(SStreamState* pState, bool remove);
|
|
int32_t (*streamStateBegin)(SStreamState* pState);
|
|
int32_t (*streamStateCommit)(SStreamState* pState);
|
|
void (*streamStateDestroy)(SStreamState* pState, bool remove);
|
|
int32_t (*streamStateDeleteCheckPoint)(SStreamState* pState, TSKEY mark);
|
|
void (*streamStateReloadInfo)(SStreamState* pState, TSKEY ts);
|
|
} SStateStore;
|
|
|
|
typedef struct SStorageAPI {
|
|
SStoreMeta metaFn; // todo: refactor
|
|
TsdReader tsdReader;
|
|
SStoreMetaReader metaReaderFn;
|
|
SStoreCacheReader cacheFn;
|
|
SStoreSnapshotFn snapshotFn;
|
|
SStoreTqReader tqReaderFn;
|
|
SStateStore stateStore;
|
|
SMetaDataFilterAPI metaFilter;
|
|
SFunctionStateStore functionStore;
|
|
} SStorageAPI;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // TDENGINE_STORAGEAPI_H
|