refact meta more
This commit is contained in:
parent
0c1cde9cfc
commit
159f3acd3c
|
@ -55,7 +55,7 @@ typedef struct SMetaEntryReader SMetaEntryReader;
|
||||||
|
|
||||||
void metaEntryReaderInit(SMetaEntryReader* pReader);
|
void metaEntryReaderInit(SMetaEntryReader* pReader);
|
||||||
void metaEntryReaderClear(SMetaEntryReader* pReader);
|
void metaEntryReaderClear(SMetaEntryReader* pReader);
|
||||||
int metaGetTableEntryByVersion(SMeta* pMeta, SMetaEntryReader* pReader, int64_t version);
|
int metaGetTableEntryByVersion(SMeta* pMeta, SMetaEntryReader* pReader, int64_t version, tb_uid_t uid);
|
||||||
int metaGetTableEntryByUid(SMeta* pMeta, SMetaEntryReader* pReader, tb_uid_t uid);
|
int metaGetTableEntryByUid(SMeta* pMeta, SMetaEntryReader* pReader, tb_uid_t uid);
|
||||||
int metaGetTableEntryByName(SMeta* pMeta, SMetaEntryReader* pReader, const char* name);
|
int metaGetTableEntryByName(SMeta* pMeta, SMetaEntryReader* pReader, const char* name);
|
||||||
|
|
||||||
|
@ -84,6 +84,11 @@ struct SMeta {
|
||||||
SMetaIdx* pIdx;
|
SMetaIdx* pIdx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int64_t version;
|
||||||
|
tb_uid_t uid;
|
||||||
|
} STbDbKey;
|
||||||
|
|
||||||
typedef struct __attribute__((__packed__)) {
|
typedef struct __attribute__((__packed__)) {
|
||||||
tb_uid_t uid;
|
tb_uid_t uid;
|
||||||
int32_t sver;
|
int32_t sver;
|
||||||
|
|
|
@ -52,7 +52,7 @@ int metaOpen(SVnode *pVnode, SMeta **ppMeta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// open pTbDb
|
// open pTbDb
|
||||||
ret = tdbDbOpen("table.db", sizeof(int64_t), -1, tbDbKeyCmpr, pMeta->pEnv, &pMeta->pTbDb);
|
ret = tdbDbOpen("table.db", sizeof(STbDbKey), -1, tbDbKeyCmpr, pMeta->pEnv, &pMeta->pTbDb);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
metaError("vgId: %d failed to open meta table db since %s", TD_VID(pVnode), tstrerror(terrno));
|
metaError("vgId: %d failed to open meta table db since %s", TD_VID(pVnode), tstrerror(terrno));
|
||||||
goto _err;
|
goto _err;
|
||||||
|
@ -143,12 +143,18 @@ int metaClose(SMeta *pMeta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tbDbKeyCmpr(const void *pKey1, int kLen1, const void *pKey2, int kLen2) {
|
static int tbDbKeyCmpr(const void *pKey1, int kLen1, const void *pKey2, int kLen2) {
|
||||||
int64_t version1 = *(int64_t *)pKey1;
|
STbDbKey *pTbDbKey1 = (STbDbKey *)pKey1;
|
||||||
int64_t version2 = *(int64_t *)pKey2;
|
STbDbKey *pTbDbKey2 = (STbDbKey *)pKey2;
|
||||||
|
|
||||||
if (version1 > version2) {
|
if (pTbDbKey1->version > pTbDbKey2->version) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (version1 < version2) {
|
} else if (pTbDbKey1->version < pTbDbKey2->version) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pTbDbKey1->uid > pTbDbKey2->uid) {
|
||||||
|
return 1;
|
||||||
|
} else if (pTbDbKey1->uid < pTbDbKey2->uid) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,11 @@ void metaEntryReaderClear(SMetaEntryReader *pReader) {
|
||||||
TDB_FREE(pReader->pBuf);
|
TDB_FREE(pReader->pBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
int metaGetTableEntryByVersion(SMeta *pMeta, SMetaEntryReader *pReader, int64_t version) {
|
int metaGetTableEntryByVersion(SMeta *pMeta, SMetaEntryReader *pReader, int64_t version, tb_uid_t uid) {
|
||||||
|
STbDbKey tbDbKey = {.version = version, .uid = uid};
|
||||||
|
|
||||||
// query table.db
|
// query table.db
|
||||||
if (tdbDbGet(pMeta->pTbDb, &version, sizeof(version), &pReader->pBuf, &pReader->szBuf) < 0) {
|
if (tdbDbGet(pMeta->pTbDb, &tbDbKey, sizeof(tbDbKey), &pReader->pBuf, &pReader->szBuf) < 0) {
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +52,7 @@ int metaGetTableEntryByUid(SMeta *pMeta, SMetaEntryReader *pReader, tb_uid_t uid
|
||||||
}
|
}
|
||||||
|
|
||||||
version = *(int64_t *)pReader->pBuf;
|
version = *(int64_t *)pReader->pBuf;
|
||||||
return metaGetTableEntryByVersion(pMeta, pReader, version);
|
return metaGetTableEntryByVersion(pMeta, pReader, version, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
int metaGetTableEntryByName(SMeta *pMeta, SMetaEntryReader *pReader, const char *name) {
|
int metaGetTableEntryByName(SMeta *pMeta, SMetaEntryReader *pReader, const char *name) {
|
||||||
|
|
|
@ -55,6 +55,7 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) {
|
||||||
if (metaSaveToTbDb(pMeta, version, &me) < 0) goto _err;
|
if (metaSaveToTbDb(pMeta, version, &me) < 0) goto _err;
|
||||||
|
|
||||||
// save to schema.db (TODO)
|
// save to schema.db (TODO)
|
||||||
|
// if (metaSaveToSkmDb(pMeta) < 0) goto _err;
|
||||||
|
|
||||||
// update uid idx
|
// update uid idx
|
||||||
if (metaUpdateUidIdx(pMeta, me.uid, version) < 0) goto _err;
|
if (metaUpdateUidIdx(pMeta, me.uid, version) < 0) goto _err;
|
||||||
|
@ -149,6 +150,7 @@ int metaDropTable(SMeta *pMeta, tb_uid_t uid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int metaSaveToTbDb(SMeta *pMeta, int64_t version, const SMetaEntry *pME) {
|
static int metaSaveToTbDb(SMeta *pMeta, int64_t version, const SMetaEntry *pME) {
|
||||||
|
STbDbKey tbDbKey;
|
||||||
void *pKey = NULL;
|
void *pKey = NULL;
|
||||||
void *pVal = NULL;
|
void *pVal = NULL;
|
||||||
int kLen = 0;
|
int kLen = 0;
|
||||||
|
@ -156,8 +158,11 @@ static int metaSaveToTbDb(SMeta *pMeta, int64_t version, const SMetaEntry *pME)
|
||||||
SCoder coder = {0};
|
SCoder coder = {0};
|
||||||
|
|
||||||
// set key and value
|
// set key and value
|
||||||
pKey = &version;
|
tbDbKey.version = version;
|
||||||
kLen = sizeof(version);
|
tbDbKey.uid = pME->uid;
|
||||||
|
|
||||||
|
pKey = &tbDbKey;
|
||||||
|
kLen = sizeof(tbDbKey);
|
||||||
|
|
||||||
if (tEncodeSize(metaEncodeEntry, pME, vLen) < 0) {
|
if (tEncodeSize(metaEncodeEntry, pME, vLen) < 0) {
|
||||||
goto _err;
|
goto _err;
|
||||||
|
|
Loading…
Reference in New Issue