From 3ed29b7b49549f0c4e507186205851f835b9d644 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 22 Apr 2022 12:51:50 +0000 Subject: [PATCH] refact more meta --- source/dnode/vnode/src/meta/metaTable.c | 30 ++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index b1c5bcbf3c..3a89cd3285 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -21,6 +21,7 @@ static int metaUpdateNameIdx(SMeta *pMeta, const char *name, tb_uid_t uid); static int metaCreateNormalTable(SMeta *pMeta, int64_t version, SMetaEntry *pME); static int metaCreateChildTable(SMeta *pMeta, int64_t version, SMetaEntry *pME); static int metaUpdateTtlIdx(SMeta *pMeta, int64_t dtime, tb_uid_t uid); +static int metaSaveToSkmDb(SMeta *pMeta, tb_uid_t uid, SSchemaWrapper *pSW); int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { SMetaEntry me = {0}; @@ -48,7 +49,7 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { if (metaSaveToTbDb(pMeta, version, &me) < 0) goto _err; // save to schema.db (TODO) - // if (metaSaveToSkmDb(pMeta) < 0) goto _err; + if (metaSaveToSkmDb(pMeta, pReq->suid, &pReq->schema) < 0) goto _err; // update uid idx if (metaUpdateUidIdx(pMeta, me.uid, version) < 0) goto _err; @@ -211,6 +212,7 @@ static int metaCreateNormalTable(SMeta *pMeta, int64_t version, SMetaEntry *pME) if (metaSaveToTbDb(pMeta, version, pME) < 0) return -1; // save to schema.db + if (metaSaveToSkmDb(pMeta, pME->uid, &pME->ntbEntry.schema) < 0) return -1; // update uid.idx if (metaUpdateUidIdx(pMeta, pME->uid, version) < 0) return -1; @@ -227,3 +229,29 @@ static int metaCreateNormalTable(SMeta *pMeta, int64_t version, SMetaEntry *pME) return 0; } + +static int metaSaveToSkmDb(SMeta *pMeta, tb_uid_t uid, SSchemaWrapper *pSW) { + SCoder coder = {0}; + void *pVal = NULL; + int vLen = 0; + int rcode = 0; + SSkmDbKey skmDbKey = {.uid = uid, .sver = pSW->sver}; + + // encode schema + if (tEncodeSize(tEncodeSSchemaWrapper, pSW, vLen) < 0) return -1; + pVal = TCODER_MALLOC(&coder, vLen); + if (pVal == NULL) { + rcode = -1; + terrno = TSDB_CODE_OUT_OF_MEMORY; + goto _exit; + } + + if (tdbDbInsert(pMeta->pSkmDb, &skmDbKey, sizeof(skmDbKey), pVal, vLen, NULL) < 0) { + rcode = -1; + goto _exit; + } + +_exit: + tCoderClear(&coder); + return 0; +} \ No newline at end of file -- GitLab