diff --git a/source/libs/function/src/builtins.c b/source/libs/function/src/builtins.c index b5904b6b81..cf8c8399c4 100644 --- a/source/libs/function/src/builtins.c +++ b/source/libs/function/src/builtins.c @@ -1737,7 +1737,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = { .combineFunc = topCombine, .pPartialFunc = "_top_partial", .pMergeFunc = "_top_merge", - .createMergeParaFuc = topCreateMergePara + // .createMergeParaFuc = topCreateMergePara }, { .name = "_top_partial", diff --git a/source/libs/function/src/functionMgt.c b/source/libs/function/src/functionMgt.c index afbb63114d..245636bac8 100644 --- a/source/libs/function/src/functionMgt.c +++ b/source/libs/function/src/functionMgt.c @@ -321,16 +321,18 @@ static int32_t createMergeFunction(const SFunctionNode* pSrcFunc, const SFunctio if (TSDB_CODE_SUCCESS == code) { // overwrite function restype set by translate function if (fmIsSameInOutType(pSrcFunc->funcId)) { - (*pMergeFunc)->node.resType = pSrcFunc->node.resType; + pFunc->node.resType = pSrcFunc->node.resType; } - strcpy((*pMergeFunc)->node.aliasName, pSrcFunc->node.aliasName); + strcpy(pFunc->node.aliasName, pSrcFunc->node.aliasName); } if (TSDB_CODE_SUCCESS == code) { *pMergeFunc = pFunc; } else { - pFunc->pParameterList = NULL; - nodesDestroyNode((SNode*)pFunc); + if (NULL != pFunc) { + pFunc->pParameterList = NULL; + nodesDestroyNode((SNode*)pFunc); + } nodesDestroyList(pParameterList); } diff --git a/source/libs/planner/test/planBasicTest.cpp b/source/libs/planner/test/planBasicTest.cpp index c075bfeee8..4213cc050c 100644 --- a/source/libs/planner/test/planBasicTest.cpp +++ b/source/libs/planner/test/planBasicTest.cpp @@ -52,6 +52,8 @@ TEST_F(PlanBasicTest, func) { run("SELECT PERCENTILE(c1, 60) FROM t1"); run("SELECT TOP(c1, 60) FROM t1"); + + run("SELECT TOP(c1, 60) FROM st1"); } TEST_F(PlanBasicTest, uniqueFunc) {