From e5b9d2241d3c9a6cd4652135da0330967d8e803c Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Thu, 26 Aug 2021 20:22:02 +0800 Subject: [PATCH] [TD-6308] partial loaded tablemeta cause unexpected result --- src/client/src/tscSQLParser.c | 5 ++++- src/client/src/tscServer.c | 5 ++++- src/client/src/tscUtil.c | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index b9e13865f8..4065526f1c 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -8195,7 +8195,10 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { size_t len = strlen(name); - taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&pTableMeta, &tableMetaCapacity); + if (NULL == taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&pTableMeta, &tableMetaCapacity)){ + tfree(pTableMeta); + tableMetaCapacity = 0; + } if (pTableMeta && pTableMeta->id.uid > 0) { tscDebug("0x%"PRIx64" retrieve table meta %s from local buf", pSql->self, name); diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 97b7fb0a5a..4dd252b692 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2997,7 +2997,10 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool memset(pTableMetaInfo->pTableMeta, 0, pTableMetaInfo->tableMetaCapacity); } } - taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&(pTableMetaInfo->pTableMeta), &pTableMetaInfo->tableMetaCapacity); + if (NULL == taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&(pTableMetaInfo->pTableMeta), &pTableMetaInfo->tableMetaCapacity)) { + tfree(pTableMetaInfo->pTableMeta); + pTableMetaInfo->tableMetaCapacity = 0; + } STableMeta* pMeta = pTableMetaInfo->pTableMeta; if (pMeta && pMeta->id.uid > 0) { diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index e5c6392d4d..002a368f79 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -4418,7 +4418,9 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name, STableMeta* pChild = *ppChild; STableMeta* pChild1; - taosHashGetCloneExt(tscTableMetaMap, pChild->sTableName, strnlen(pChild->sTableName, TSDB_TABLE_FNAME_LEN), NULL, (void **)&p, &sz); + if(NULL == taosHashGetCloneExt(tscTableMetaMap, pChild->sTableName, strnlen(pChild->sTableName, TSDB_TABLE_FNAME_LEN), NULL, (void **)&p, &sz)) { + tfree(p); + } // tableMeta exists, build child table meta according to the super table meta // the uid need to be checked in addition to the general name of the super table. -- GitLab