diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index d9cc2dbeb2..783b44572c 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -3199,9 +3199,8 @@ static void doHandleRemainBlockFromNewGroup(SFillOperatorInfo* pInfo, SResultInf if (taosFillHasMoreResults(pInfo->pFillInfo)) { int32_t numOfResultRows = pResultInfo->capacity - pInfo->pRes->info.rows; taosFillResultDataBlock(pInfo->pFillInfo, pInfo->pRes, numOfResultRows); - if (pInfo->pRes->info.rows > pResultInfo->threshold) { - return; - } + pInfo->pRes->info.groupId = pInfo->curGroupId; + return; } // handle the cached new group data block @@ -3220,7 +3219,7 @@ static SSDataBlock* doFillImpl(SOperatorInfo* pOperator) { blockDataCleanup(pResBlock); doHandleRemainBlockFromNewGroup(pInfo, pResultInfo, pTaskInfo); - if (pResBlock->info.rows > pResultInfo->threshold || pResBlock->info.rows > 0) { + if (pResBlock->info.rows > 0) { pResBlock->info.groupId = pInfo->curGroupId; return pResBlock; } diff --git a/source/libs/executor/src/projectoperator.c b/source/libs/executor/src/projectoperator.c index 3f3df6a8f0..f3f84746d3 100644 --- a/source/libs/executor/src/projectoperator.c +++ b/source/libs/executor/src/projectoperator.c @@ -279,7 +279,9 @@ SSDataBlock* doProjectOperation(SOperatorInfo* pOperator) { // do apply filter doFilter(pProjectInfo->pFilterNode, pFinalRes, NULL); - if (pFinalRes->info.rows > 0 || pRes->info.rows == 0) { + + // when apply the limit/offset for each group, pRes->info.rows may be 0, due to limit constraint. + if (pFinalRes->info.rows > 0 || (pOperator->status == OP_EXEC_DONE)) { break; } } else {