From 58c43901ede6b45a2f248d43c373e419a6c56d4b Mon Sep 17 00:00:00 2001 From: kailixu Date: Mon, 12 Jun 2023 09:14:38 +0800 Subject: [PATCH] chore: another logic --- source/libs/parser/src/parTranslater.c | 6 +++ source/libs/planner/src/planLogicCreater.c | 48 ---------------------- 2 files changed, 6 insertions(+), 48 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 3b94bae05c..5f3e402027 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3108,6 +3108,12 @@ static int32_t rewriteProjectAlias(SNodeList* pProjectionList) { if ('\0' == pExpr->userAlias[0]) { strcpy(pExpr->userAlias, pExpr->aliasName); } + if (QUERY_NODE_COLUMN == nodeType(pProject) && + ((0 == strcasecmp("_wstart", pExpr->userAlias) || 0 == strcasecmp("_wend", pExpr->userAlias) || + 0 == strcasecmp("_wduration", pExpr->userAlias)) && + '\0' != pExpr->aliasName[0])) { + continue; + } sprintf(pExpr->aliasName, "#expr_%d", no++); } return TSDB_CODE_SUCCESS; diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index 953ca13d3b..5bbc9acdad 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -732,49 +732,6 @@ static int32_t createInterpFuncLogicNode(SLogicPlanContext* pCxt, SSelectStmt* p return code; } -static int32_t eraseDuplicatedPseudoColumnFuncs(SNodeList* pFuncs, SNodeList* pProjections) { - int32_t code = 0; - int32_t funcIndex = 0; - SSHashObj* pFuncHash = NULL; - SNode* pFuncNode = NULL; - FOREACH(pFuncNode, pFuncs) { - SFunctionNode* pFunc = (SFunctionNode*)pFuncNode; - if (!fmIsWindowPseudoColumnFunc(pFunc->funcId)) { - ++funcIndex; - continue; - } - if (!pFuncHash && !(pFuncHash = tSimpleHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT)))) { - code = TSDB_CODE_OUT_OF_MEMORY; - break; - } - - void* hashVal = tSimpleHashGet(pFuncHash, &pFunc->funcId, sizeof(pFunc->funcId)); - if (!hashVal) { - tSimpleHashPut(pFuncHash, &pFunc->funcId, sizeof(pFunc->funcId), &funcIndex, sizeof(funcIndex)); - ++funcIndex; - continue; - } - - bool exist = false; - SNode* pProject = NULL; - FOREACH(pProject, pProjections) { - if (QUERY_NODE_COLUMN == nodeType(pProject) && 0 != pFunc->node.aliasName[0] && - 0 == strncmp(pFunc->node.aliasName, ((SColumnNode*)pProject)->colName, TSDB_COL_NAME_LEN)) { - exist = true; - break; - } - } - if (!exist) { - nodesListErase(pFuncs, nodesListGetCell(pFuncs, funcIndex)); - } else { - nodesListErase(pFuncs, nodesListGetCell(pFuncs, *(int32_t*)hashVal)); - tSimpleHashPut(pFuncHash, &pFunc->funcId, sizeof(pFunc->funcId), &funcIndex, sizeof(funcIndex)); - } - } - tSimpleHashCleanup(pFuncHash); - return code; -} - static int32_t createWindowLogicNodeFinalize(SLogicPlanContext* pCxt, SSelectStmt* pSelect, SWindowLogicNode* pWindow, SLogicNode** pLogicNode) { if (pCxt->pPlanCxt->streamQuery) { @@ -792,11 +749,6 @@ static int32_t createWindowLogicNodeFinalize(SLogicPlanContext* pCxt, SSelectStm code = rewriteExprsForSelect(pWindow->pFuncs, pSelect, SQL_CLAUSE_WINDOW, NULL); } - if (TSDB_CODE_SUCCESS == code && WINDOW_TYPE_INTERVAL == pWindow->winType && pSelect->pProjectionList) { - // erase duplicated Window Pseudo funcNode by filtering colNode in pSelect->pProjectionList - code = eraseDuplicatedPseudoColumnFuncs(pWindow->pFuncs, pSelect->pProjectionList); - } - if (TSDB_CODE_SUCCESS == code) { code = createColumnByRewriteExprs(pWindow->pFuncs, &pWindow->node.pTargets); }