From 637195ce94d0efb78dd12e52512e2e0336b80494 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 31 Jan 2023 14:00:37 +0800 Subject: [PATCH] fix: the problem of creating a stream without partition by clause --- source/libs/parser/src/parTranslater.c | 10 ++++------ source/libs/planner/src/planLogicCreater.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 6e94883849..0e92d66d73 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3281,9 +3281,6 @@ static int32_t translateInterp(STranslateContext* pCxt, SSelectStmt* pSelect) { } static int32_t translatePartitionBy(STranslateContext* pCxt, SSelectStmt* pSelect) { - if (NULL == pSelect->pPartitionByList) { - return TSDB_CODE_SUCCESS; - } pCxt->currClause = SQL_CLAUSE_PARTITION_BY; int32_t code = translateExprList(pCxt, pSelect->pPartitionByList); if (TSDB_CODE_SUCCESS == code) { @@ -5733,12 +5730,13 @@ static int32_t addSubtableNameToCreateStreamQuery(STranslateContext* pCxt, SCrea static int32_t addSubtableInfoToCreateStreamQuery(STranslateContext* pCxt, STableMeta* pMeta, SCreateStreamStmt* pStmt) { + int32_t code = TSDB_CODE_SUCCESS; SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery; if (NULL == pSelect->pPartitionByList) { - return addNullTagsForExistTable(pCxt, pMeta, pSelect); + code = addNullTagsForExistTable(pCxt, pMeta, pSelect); + } else { + code = addTagsToCreateStreamQuery(pCxt, pStmt, pSelect); } - - int32_t code = addTagsToCreateStreamQuery(pCxt, pStmt, pSelect); if (TSDB_CODE_SUCCESS == code) { code = addSubtableNameToCreateStreamQuery(pCxt, pStmt, pSelect); } diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index fef5bd654e..001ec66725 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -374,6 +374,20 @@ static int32_t createScanLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect code = addDefaultScanCol(pRealTable->pMeta, &pScan->pScanCols); } + if (TSDB_CODE_SUCCESS == code && NULL != pSelect->pTags && NULL == pSelect->pPartitionByList) { + pScan->pTags = nodesCloneList(pSelect->pTags); + if (NULL == pScan->pTags) { + code = TSDB_CODE_OUT_OF_MEMORY; + } + } + + if (TSDB_CODE_SUCCESS == code && NULL != pSelect->pSubtable && NULL == pSelect->pPartitionByList) { + pScan->pSubtable = nodesCloneNode(pSelect->pSubtable); + if (NULL == pScan->pSubtable) { + code = TSDB_CODE_OUT_OF_MEMORY; + } + } + // set output if (TSDB_CODE_SUCCESS == code) { code = createColumnByRewriteExprs(pScan->pScanCols, &pScan->node.pTargets); -- GitLab