From 26f3adcf6ad9d4642d4163afd0c9f8dad6d407f4 Mon Sep 17 00:00:00 2001 From: dmchen Date: Tue, 25 Feb 2025 10:27:32 +0000 Subject: [PATCH] fix/TS-6028-check-column-name-fix-review --- source/dnode/mnode/impl/src/mndStb.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 5ada3e42e3..78f633acad 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -1320,12 +1320,17 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) { goto _OVER; } - pHash = taosHashInit(3, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); + pHash = taosHashInit(createReq.numOfColumns + createReq.numOfTags, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), + false, HASH_NO_LOCK); + if (pHash == NULL) { + code = TSDB_CODE_OUT_OF_MEMORY; + goto _OVER; + } void *pIter = NULL; for (int32_t i = 0; i < createReq.numOfColumns; ++i) { SFieldWithOptions *pField = taosArrayGet(createReq.pColumns, i); - if (taosHashPut(pHash, pField->name, sizeof(pField->name), pField->name, sizeof(pField->name)) != 0) { + if (taosHashPut(pHash, pField->name, strlen(pField->name), NULL, 0) != 0) { code = TSDB_CODE_TSC_DUP_COL_NAMES; goto _OVER; } @@ -1333,8 +1338,10 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) { for (int32_t i = 0; i < createReq.numOfTags; ++i) { SField *pField = taosArrayGet(createReq.pTags, i); - if (taosHashPut(pHash, pField->name, sizeof(pField->name), pField->name, sizeof(pField->name)) != 0) { - code = TSDB_CODE_TSC_DUP_COL_NAMES; + if ((code = taosHashPut(pHash, pField->name, strlen(pField->name), NULL, 0)) != 0) { + if (code == TSDB_CODE_DUP_KEY) { + code = TSDB_CODE_TSC_DUP_COL_NAMES; + } goto _OVER; } }