From 7c82b1221f69fdfcc36bf36bac0a2be849400585 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Tue, 16 Aug 2022 17:04:35 +0800 Subject: [PATCH 1/4] fix: return error if stable's name duplicate with child table --- source/dnode/vnode/src/meta/metaTable.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index e56b8ad939..079c89cc36 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -176,6 +176,15 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { // validate req metaReaderInit(&mr, pMeta, 0); if (metaGetTableEntryByName(&mr, pReq->name) == 0) { + if (mr.me.type == TSDB_SUPER_TABLE) { + metaReaderClear(&mr); + return 0; + } else { + terrno = TSDB_CODE_TDB_STB_ALREADY_EXIST; + metaReaderClear(&mr); + return -1; + } + /* // TODO: just for pass case #if 0 terrno = TSDB_CODE_TDB_STB_ALREADY_EXIST; @@ -185,6 +194,7 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { metaReaderClear(&mr); return 0; #endif + */ } metaReaderClear(&mr); From 4c4f5bdf5fbd0cd4eeb0ef783b259a2824199de1 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 16 Aug 2022 19:28:16 +0800 Subject: [PATCH 2/4] fix: the supertable and subtable can have same name --- source/dnode/vnode/src/meta/metaTable.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index 079c89cc36..a1c1215a92 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -180,14 +180,14 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { metaReaderClear(&mr); return 0; } else { - terrno = TSDB_CODE_TDB_STB_ALREADY_EXIST; + terrno = TSDB_CODE_TDB_TABLE_ALREADY_EXIST; metaReaderClear(&mr); return -1; } /* // TODO: just for pass case #if 0 - terrno = TSDB_CODE_TDB_STB_ALREADY_EXIST; + terrno = TSDB_CODE_TDB_TABLE_ALREADY_EXIST; metaReaderClear(&mr); return -1; #else From e73a311a08be329ea15c35e021695afe32d80ea1 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 16 Aug 2022 19:30:32 +0800 Subject: [PATCH 3/4] test: add case for dupliate supertable name --- tests/script/tsim/db/basic2.sim | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/script/tsim/db/basic2.sim b/tests/script/tsim/db/basic2.sim index 114adf98e6..2ba7d806af 100644 --- a/tests/script/tsim/db/basic2.sim +++ b/tests/script/tsim/db/basic2.sim @@ -3,6 +3,21 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect +print =============== conflict stb +sql create database db vgroups 1; +sql use db; +sql create table stb (ts timestamp, i int) tags (j int); +sql_error create table stb using stb tags (1); +sql_error create table stb (ts timestamp, i int); + +sql create table ctb (ts timestamp, i int); +sql_error create table ctb (ts timestamp, i int) tags (j int); + +sql create table ntb (ts timestamp, i int); +sql_error create table ntb (ts timestamp, i int) tags (j int); + +sql drop database db + print =============== create database d1 sql create database d1 sql use d1 From 5e38aab3d7bb0dc389351e93897fdcde763d300e Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Wed, 17 Aug 2022 17:51:49 +0800 Subject: [PATCH 4/4] fix: plus 1 with tdb strlen --- source/dnode/vnode/src/meta/metaTable.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index e8755e0035..0e0b354cef 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -192,7 +192,7 @@ int metaCreateSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { // validate req void *pData = NULL; int nData = 0; - if (tdbTbGet(pMeta->pNameIdx, pReq->name, strlen(pReq->name), &pData, &nData) == 0) { + if (tdbTbGet(pMeta->pNameIdx, pReq->name, strlen(pReq->name) + 1, &pData, &nData) == 0) { tb_uid_t uid = *(tb_uid_t *)pData; tdbFree(pData); SMetaInfo info;