diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index b3f50b540b..d5a25fb517 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -2997,15 +2997,9 @@ static int32_t lastRowScanOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogic if (FUNCTION_TYPE_LAST == funcType) { nodesWalkExpr(nodesListGetNode(pFunc->pParameterList, 0), lastRowScanOptSetColDataType, &cxt); nodesListErase(pFunc->pParameterList, nodesListGetCell(pFunc->pParameterList, 1)); - if (pFunc->hasPk) { - if (LIST_LENGTH(pFunc->pParameterList) != 2) { - planError("last func which has pk but its parameter list length is not %d", 2); - nodesClearList(cxt.pLastCols); - taosArrayDestroy(isDuplicateCol); - return TSDB_CODE_PLAN_INTERNAL_ERROR; - } - nodesWalkExpr(nodesListGetNode(pFunc->pParameterList, 1), lastRowScanOptSetColDataType, &cxt); - } + } + if (pFunc->hasPk) { + nodesListMakeAppend(&cxt.pOtherCols, nodesListGetNode(pFunc->pParameterList, LIST_LENGTH(pFunc->pParameterList) - 1)); } } else { pNode = nodesListGetNode(pFunc->pParameterList, 0);