diff --git a/source/dnode/vnode/src/meta/metaTDBImpl.c b/source/dnode/vnode/src/meta/metaTDBImpl.c index 3ab26c3d4d..812ec84a9a 100644 --- a/source/dnode/vnode/src/meta/metaTDBImpl.c +++ b/source/dnode/vnode/src/meta/metaTDBImpl.c @@ -226,6 +226,14 @@ int metaSaveTableToDB(SMeta *pMeta, STbCfg *pTbCfg) { uid = metaGenerateUid(pMeta); } + // check name and uid unique + if (tdbDbGet(pMetaDb->pTbDB, &uid, sizeof(uid), NULL, NULL) == 0) { + return -1; + } + if (tdbDbGet(pMetaDb->pNameIdx, pTbCfg->name, strlen(pTbCfg->name) + 1, NULL, NULL) == 0) { + return -1; + } + // save to table.db pKey = &uid; kLen = sizeof(uid); diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index f760598714..9df749bec7 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -233,7 +233,7 @@ int tdbBtreePGet(SBTree *pBt, const void *pKey, int kLen, void **ppKey, int *pkL ASSERT(0); } - if (cret) { + if (btc.idx < 0 || cret) { tdbBtcClose(&btc); return -1; } @@ -253,15 +253,17 @@ int tdbBtreePGet(SBTree *pBt, const void *pKey, int kLen, void **ppKey, int *pkL memcpy(*ppKey, cd.pKey, cd.kLen); } - pTVal = TDB_REALLOC(*ppVal, cd.vLen); - if (pTVal == NULL) { - tdbBtcClose(&btc); - ASSERT(0); - return -1; + if (ppVal) { + pTVal = TDB_REALLOC(*ppVal, cd.vLen); + if (pTVal == NULL) { + tdbBtcClose(&btc); + ASSERT(0); + return -1; + } + *ppVal = pTVal; + *vLen = cd.vLen; + memcpy(*ppVal, cd.pVal, cd.vLen); } - *ppVal = pTVal; - *vLen = cd.vLen; - memcpy(*ppVal, cd.pVal, cd.vLen); tdbBtcClose(&btc);