提交 90b4580b 编写于 作者: K kailixu

chore: only filter window pseudo column

上级 576e3d11
...@@ -749,22 +749,29 @@ static int32_t createWindowLogicNodeFinalize(SLogicPlanContext* pCxt, SSelectStm ...@@ -749,22 +749,29 @@ static int32_t createWindowLogicNodeFinalize(SLogicPlanContext* pCxt, SSelectStm
code = rewriteExprsForSelect(pWindow->pFuncs, pSelect, SQL_CLAUSE_WINDOW, NULL); code = rewriteExprsForSelect(pWindow->pFuncs, pSelect, SQL_CLAUSE_WINDOW, NULL);
} }
// erase duplicated funcNode by filtering colNode in pSelect->pProjectionList // erase duplicated Window Pseudo funcNode by filtering colNode in pSelect->pProjectionList
int32_t funcIndex = 0; if (pSelect->pProjectionList) {
SNode * pFunc = NULL, *pProject = NULL; int32_t funcIndex = 0;
FOREACH(pFunc, pWindow->pFuncs) { SNode * pFunc = NULL, *pProject = NULL;
bool exist = false; FOREACH(pFunc, pWindow->pFuncs) {
FOREACH(pProject, pSelect->pProjectionList) { if (!fmIsWindowPseudoColumnFunc(((SFunctionNode*)pFunc)->funcId)) {
if (0 != ((SFunctionNode*)pFunc)->node.aliasName[0] && ++funcIndex;
0 == strncmp(((SFunctionNode*)pFunc)->node.aliasName, ((SColumnNode*)pProject)->colName, TSDB_COL_NAME_LEN)) { continue;
exist = true; }
break; bool exist = false;
FOREACH(pProject, pSelect->pProjectionList) {
if (0 != ((SFunctionNode*)pFunc)->node.aliasName[0] &&
0 == strncmp(((SFunctionNode*)pFunc)->node.aliasName, ((SColumnNode*)pProject)->colName,
TSDB_COL_NAME_LEN)) {
exist = true;
break;
}
}
if (!exist) {
nodesListErase(pWindow->pFuncs, nodesListGetCell(pWindow->pFuncs, funcIndex));
} else {
++funcIndex;
} }
}
if (!exist) {
nodesListErase(pWindow->pFuncs, nodesListGetCell(pWindow->pFuncs, funcIndex));
} else {
++funcIndex;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册