fix(query): fix bug in limit/offset.
This commit is contained in:
parent
bd8fa53371
commit
f021f29f02
|
@ -3199,10 +3199,9 @@ static void doHandleRemainBlockFromNewGroup(SFillOperatorInfo* pInfo, SResultInf
|
||||||
if (taosFillHasMoreResults(pInfo->pFillInfo)) {
|
if (taosFillHasMoreResults(pInfo->pFillInfo)) {
|
||||||
int32_t numOfResultRows = pResultInfo->capacity - pInfo->pRes->info.rows;
|
int32_t numOfResultRows = pResultInfo->capacity - pInfo->pRes->info.rows;
|
||||||
taosFillResultDataBlock(pInfo->pFillInfo, pInfo->pRes, numOfResultRows);
|
taosFillResultDataBlock(pInfo->pFillInfo, pInfo->pRes, numOfResultRows);
|
||||||
if (pInfo->pRes->info.rows > pResultInfo->threshold) {
|
pInfo->pRes->info.groupId = pInfo->curGroupId;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// handle the cached new group data block
|
// handle the cached new group data block
|
||||||
if (pInfo->existNewGroupBlock) {
|
if (pInfo->existNewGroupBlock) {
|
||||||
|
@ -3220,7 +3219,7 @@ static SSDataBlock* doFillImpl(SOperatorInfo* pOperator) {
|
||||||
blockDataCleanup(pResBlock);
|
blockDataCleanup(pResBlock);
|
||||||
|
|
||||||
doHandleRemainBlockFromNewGroup(pInfo, pResultInfo, pTaskInfo);
|
doHandleRemainBlockFromNewGroup(pInfo, pResultInfo, pTaskInfo);
|
||||||
if (pResBlock->info.rows > pResultInfo->threshold || pResBlock->info.rows > 0) {
|
if (pResBlock->info.rows > 0) {
|
||||||
pResBlock->info.groupId = pInfo->curGroupId;
|
pResBlock->info.groupId = pInfo->curGroupId;
|
||||||
return pResBlock;
|
return pResBlock;
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,7 +279,9 @@ SSDataBlock* doProjectOperation(SOperatorInfo* pOperator) {
|
||||||
|
|
||||||
// do apply filter
|
// do apply filter
|
||||||
doFilter(pProjectInfo->pFilterNode, pFinalRes, NULL);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue