From f94dee1df91afa2f2b46cd131c594d562d33af9e Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 26 Apr 2022 02:25:07 +0000 Subject: [PATCH] validate table name --- source/dnode/vnode/src/meta/metaTable.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index d9ca46adc5..6c2e163c86 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -34,10 +34,16 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { int32_t szBuf = 0; void *p = NULL; SCoder coder = {0}; + SMetaReader mr = {0}; - { - // TODO: validate request (uid and name unique) + // validate req + metaReaderInit(&mr, pMeta->pVnode, 0); + if (metaGetTableEntryByName(&mr, pReq->name) == 0) { + terrno = TSDB_CODE_TDB_TABLE_ALREADY_EXIST; + metaReaderClear(&mr); + return -1; } + metaReaderClear(&mr); // set structs me.version = version; @@ -65,7 +71,8 @@ int metaDropSTable(SMeta *pMeta, int64_t verison, SVDropStbReq *pReq) { } int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq) { - SMetaEntry me = {0}; + SMetaEntry me = {0}; + SMetaReader mr = {0}; // validate message if (pReq->type != TSDB_CHILD_TABLE && pReq->type != TSDB_NORMAL_TABLE) { @@ -77,10 +84,14 @@ int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq) { pReq->uid = tGenIdPI64(); pReq->ctime = taosGetTimestampSec(); - { - // TODO: validate request (uid and name unique) - // for child table, also check if super table exists + // validate req + metaReaderInit(&mr, pMeta->pVnode, 0); + if (metaGetTableEntryByName(&mr, pReq->name) == 0) { + terrno = TSDB_CODE_TDB_TABLE_ALREADY_EXIST; + metaReaderClear(&mr); + return -1; } + metaReaderClear(&mr); // build SMetaEntry me.version = version;