refact META 7
This commit is contained in:
parent
44c5e42ff2
commit
0f3e49d8f7
|
@ -45,16 +45,25 @@ typedef struct SMetaEntry SMetaEntry;
|
|||
int metaEncodeEntry(SCoder* pCoder, const SMetaEntry* pME);
|
||||
int metaDecodeEntry(SCoder* pCoder, SMetaEntry* pME);
|
||||
|
||||
// metaTable ==================
|
||||
int metaCreateSTable(SMeta* pMeta, int64_t version, SVCreateStbReq* pReq);
|
||||
int metaDropSTable(SMeta* pMeta, int64_t verison, SVDropStbReq* pReq);
|
||||
|
||||
// metaQuery ==================
|
||||
typedef struct SMetaEntryReader SMetaEntryReader;
|
||||
|
||||
void metaEntryReaderInit(SMetaEntryReader* pReader);
|
||||
void metaEntryReaderClear(SMetaEntryReader* pReader);
|
||||
int metaGetTableEntryByVersion(SMeta* pMeta, SMetaEntryReader* pReader, int64_t version);
|
||||
int metaGetTableEntryByUid(SMeta* pMeta, SMetaEntryReader* pReader, tb_uid_t uid);
|
||||
int metaGetTableEntryByName(SMeta* pMeta, SMetaEntryReader* pReader, const char* name);
|
||||
|
||||
// metaIdx ==================
|
||||
int metaOpenIdx(SMeta* pMeta);
|
||||
void metaCloseIdx(SMeta* pMeta);
|
||||
int metaSaveTableToIdx(SMeta* pMeta, const STbCfg* pTbOptions);
|
||||
int metaRemoveTableFromIdx(SMeta* pMeta, tb_uid_t uid);
|
||||
|
||||
// metaTable ==================
|
||||
int metaCreateSTable(SMeta* pMeta, int64_t version, SVCreateStbReq* pReq);
|
||||
int metaDropSTable(SMeta* pMeta, int64_t verison, SVDropStbReq* pReq);
|
||||
|
||||
// metaCommit ==================
|
||||
int metaBegin(SMeta* pMeta);
|
||||
|
||||
|
@ -148,6 +157,13 @@ struct SMetaEntry {
|
|||
};
|
||||
};
|
||||
|
||||
struct SMetaEntryReader {
|
||||
SCoder coder;
|
||||
SMetaEntry me;
|
||||
void* pBuf;
|
||||
int szBuf;
|
||||
};
|
||||
|
||||
#ifndef META_REFACT
|
||||
// SMetaDB
|
||||
int metaOpenDB(SMeta* pMeta);
|
||||
|
|
|
@ -66,7 +66,7 @@ int metaOpen(SVnode *pVnode, SMeta **ppMeta) {
|
|||
}
|
||||
|
||||
// open pUidIdx
|
||||
ret = tdbDbOpen("uid.db", sizeof(tb_uid_t), sizeof(int64_t), uidIdxKeyCmpr, pMeta->pEnv, &pMeta->pUidIdx);
|
||||
ret = tdbDbOpen("uid.idx", sizeof(tb_uid_t), sizeof(int64_t), uidIdxKeyCmpr, pMeta->pEnv, &pMeta->pUidIdx);
|
||||
if (ret < 0) {
|
||||
metaError("vgId: %d failed to open meta uid idx since %s", TD_VID(pVnode), tstrerror(terrno));
|
||||
goto _err;
|
||||
|
|
|
@ -15,6 +15,57 @@
|
|||
|
||||
#include "vnodeInt.h"
|
||||
|
||||
void metaEntryReaderInit(SMetaEntryReader *pReader) { memset(pReader, 0, sizeof(*pReader)); }
|
||||
|
||||
void metaEntryReaderClear(SMetaEntryReader *pReader) {
|
||||
tCoderClear(&pReader->coder);
|
||||
TDB_FREE(pReader->pBuf);
|
||||
}
|
||||
|
||||
int metaGetTableEntryByVersion(SMeta *pMeta, SMetaEntryReader *pReader, int64_t version) {
|
||||
// query table.db
|
||||
if (tdbDbGet(pMeta->pTbDb, &version, sizeof(version), &pReader->pBuf, &pReader->szBuf) < 0) {
|
||||
goto _err;
|
||||
}
|
||||
|
||||
// decode the entry
|
||||
tCoderInit(&pReader->coder, TD_LITTLE_ENDIAN, pReader->pBuf, pReader->szBuf, TD_DECODER);
|
||||
|
||||
if (metaDecodeEntry(&pReader->coder, &pReader->me) < 0) {
|
||||
goto _err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
_err:
|
||||
return -1;
|
||||
}
|
||||
|
||||
int metaGetTableEntryByUid(SMeta *pMeta, SMetaEntryReader *pReader, tb_uid_t uid) {
|
||||
int64_t version;
|
||||
|
||||
// query uid.idx
|
||||
if (tdbDbGet(pMeta->pUidIdx, &uid, sizeof(uid), &pReader->pBuf, &pReader->szBuf) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
version = *(int64_t *)pReader->pBuf;
|
||||
return metaGetTableEntryByVersion(pMeta, pReader, version);
|
||||
}
|
||||
|
||||
int metaGetTableEntryByName(SMeta *pMeta, SMetaEntryReader *pReader, const char *name) {
|
||||
tb_uid_t uid;
|
||||
|
||||
// query name.idx
|
||||
if (tdbDbGet(pMeta->pNameIdx, name, strlen(name) + 1, &pReader->pBuf, &pReader->szBuf) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
uid = *(tb_uid_t *)pReader->pBuf;
|
||||
return metaGetTableEntryByUid(pMeta, pReader, uid);
|
||||
}
|
||||
|
||||
#if 1
|
||||
SMTbCursor *metaOpenTbCursor(SMeta *pMeta) {
|
||||
SMTbCursor *pTbCur = NULL;
|
||||
#if 0
|
||||
|
@ -392,3 +443,5 @@ void *metaGetSmaInfoByIndex(SMeta *pMeta, int64_t indexUid, bool isDecode) {
|
|||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -22,6 +22,28 @@ int vnodeQueryOpen(SVnode *pVnode) {
|
|||
void vnodeQueryClose(SVnode *pVnode) { qWorkerDestroy((void **)&pVnode->pQuery); }
|
||||
|
||||
int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg) {
|
||||
STableInfoReq infoReq = {0};
|
||||
SMetaEntryReader meReader = {0};
|
||||
int32_t code = 0;
|
||||
|
||||
// decode req
|
||||
if (tDeserializeSTableInfoReq(pMsg->pCont, pMsg->contLen, &infoReq) != 0) {
|
||||
code = TSDB_CODE_INVALID_MSG;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
// query meta
|
||||
metaEntryReaderInit(&meReader);
|
||||
|
||||
if (metaGetTableEntryByName(pVnode->pMeta, &meReader, NULL) < 0) {
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
// fill response
|
||||
|
||||
_exit:
|
||||
return 0;
|
||||
#if 0
|
||||
STbCfg *pTbCfg = NULL;
|
||||
STbCfg *pStbCfg = NULL;
|
||||
tb_uid_t uid;
|
||||
|
@ -147,6 +169,7 @@ _exit:
|
|||
rpcMsg.code = code;
|
||||
|
||||
tmsgSendRsp(&rpcMsg);
|
||||
#endif
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -231,7 +231,7 @@ static int vnodeProcessCreateStbReq(SVnode *pVnode, int64_t version, void *pReq,
|
|||
goto _err;
|
||||
}
|
||||
|
||||
if (metaCreateSTable(pVnode->pMeta, version, pReq) < 0) {
|
||||
if (metaCreateSTable(pVnode->pMeta, version, &req) < 0) {
|
||||
pRsp->code = terrno;
|
||||
goto _err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue