diff --git a/source/libs/parser/src/parAstParser.c b/source/libs/parser/src/parAstParser.c index a1f09088da..3da6ac668c 100644 --- a/source/libs/parser/src/parAstParser.c +++ b/source/libs/parser/src/parAstParser.c @@ -405,6 +405,13 @@ static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStm static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) { int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache); + if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pSubtable && NULL != pStmt->pQuery) { + SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery; + pSelect->pSubtable = nodesCloneNode(pStmt->pSubtable); + if (NULL == pSelect->pSubtable) { + return TSDB_CODE_OUT_OF_MEMORY; + } + } if (TSDB_CODE_SUCCESS == code) { code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery); } diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 8f77f0dedf..8740f7c883 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -9327,10 +9327,7 @@ static int32_t addSubtableNameToCreateStreamQuery(STranslateContext* pCxt, SCrea if (NULL == pStmt->pSubtable) { return TSDB_CODE_SUCCESS; } - pSelect->pSubtable = nodesCloneNode(pStmt->pSubtable); - if (NULL == pSelect->pSubtable) { - return TSDB_CODE_OUT_OF_MEMORY; - } + SRewriteSubtableCxt cxt = {.pCxt = pCxt, .pPartitionList = pSelect->pPartitionByList}; nodesRewriteExpr(&pSelect->pSubtable, rewriteSubtable, &cxt); return pCxt->errCode;