fix: whole block error
This commit is contained in:
parent
6ca92a3d92
commit
5c9edce538
|
@ -3660,7 +3660,7 @@ SSDataBlock* getSortedTableMergeScanBlockData(SSortHandle* pHandle, SSDataBlock*
|
||||||
terrno = TSDB_CODE_TSC_QUERY_CANCELLED;
|
terrno = TSDB_CODE_TSC_QUERY_CANCELLED;
|
||||||
T_LONG_JMP(pOperator->pTaskInfo->env, terrno);
|
T_LONG_JMP(pOperator->pTaskInfo->env, terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool limitReached = applyLimitOffset(&pInfo->limitInfo, pResBlock, pTaskInfo);
|
bool limitReached = applyLimitOffset(&pInfo->limitInfo, pResBlock, pTaskInfo);
|
||||||
qDebug("%s get sorted row block, rows:%" PRId64 ", limit:%" PRId64, GET_TASKID(pTaskInfo), pResBlock->info.rows,
|
qDebug("%s get sorted row block, rows:%" PRId64 ", limit:%" PRId64, GET_TASKID(pTaskInfo), pResBlock->info.rows,
|
||||||
pInfo->limitInfo.numOfOutputRows);
|
pInfo->limitInfo.numOfOutputRows);
|
||||||
|
|
|
@ -885,7 +885,7 @@ static int32_t appendDataBlockToPageBuf(SSortHandle* pHandle, SSDataBlock* blk,
|
||||||
|
|
||||||
int32_t size = blockDataGetSize(blk) + sizeof(int32_t) + taosArrayGetSize(blk->pDataBlock) * sizeof(int32_t);
|
int32_t size = blockDataGetSize(blk) + sizeof(int32_t) + taosArrayGetSize(blk->pDataBlock) * sizeof(int32_t);
|
||||||
ASSERT(size <= getBufPageSize(pHandle->pBuf));
|
ASSERT(size <= getBufPageSize(pHandle->pBuf));
|
||||||
|
|
||||||
blockDataToBuf(pPage, blk);
|
blockDataToBuf(pPage, blk);
|
||||||
|
|
||||||
setBufPageDirty(pPage, true);
|
setBufPageDirty(pPage, true);
|
||||||
|
@ -1041,7 +1041,6 @@ static int32_t sortBlocksToExtSource(SSortHandle* pHandle, SArray* aBlk, SBlockO
|
||||||
}
|
}
|
||||||
|
|
||||||
static SSDataBlock* getRowsBlockWithinMergeLimit(const SSortHandle* pHandle, SSHashObj* mTableNumRows, SSDataBlock* pOrigBlk, bool* pExtractedBlock) {
|
static SSDataBlock* getRowsBlockWithinMergeLimit(const SSortHandle* pHandle, SSHashObj* mTableNumRows, SSDataBlock* pOrigBlk, bool* pExtractedBlock) {
|
||||||
int64_t keepRows = pOrigBlk->info.rows;
|
|
||||||
int64_t nRows = 0;
|
int64_t nRows = 0;
|
||||||
int64_t prevRows = 0;
|
int64_t prevRows = 0;
|
||||||
void* pNum = tSimpleHashGet(mTableNumRows, &pOrigBlk->info.id.uid, sizeof(pOrigBlk->info.id.uid));
|
void* pNum = tSimpleHashGet(mTableNumRows, &pOrigBlk->info.id.uid, sizeof(pOrigBlk->info.id.uid));
|
||||||
|
@ -1055,15 +1054,18 @@ static SSDataBlock* getRowsBlockWithinMergeLimit(const SSortHandle* pHandle, SSH
|
||||||
nRows = *(int64_t*)pNum;
|
nRows = *(int64_t*)pNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t keepRows = pOrigBlk->info.rows;
|
||||||
if (nRows >= pHandle->mergeLimit) {
|
if (nRows >= pHandle->mergeLimit) {
|
||||||
keepRows = pHandle->mergeLimit - prevRows;
|
keepRows = pHandle->mergeLimit - prevRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
SSDataBlock* pBlock = NULL;
|
SSDataBlock* pBlock = NULL;
|
||||||
if (keepRows != pOrigBlk->info.rows) {
|
if (keepRows != pOrigBlk->info.rows) {
|
||||||
pBlock = blockDataExtractBlock(pOrigBlk, 0, keepRows);
|
pBlock = blockDataExtractBlock(pOrigBlk, 0, keepRows);
|
||||||
*pExtractedBlock = true;
|
*pExtractedBlock = true;
|
||||||
} else {
|
} else {
|
||||||
*pExtractedBlock = false;
|
*pExtractedBlock = false;
|
||||||
|
pBlock = pOrigBlk;
|
||||||
}
|
}
|
||||||
return pBlock;
|
return pBlock;
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,6 +129,7 @@ endi
|
||||||
|
|
||||||
$offset = $tbNum * $rowNum
|
$offset = $tbNum * $rowNum
|
||||||
$offset = $offset - 1
|
$offset = $offset - 1
|
||||||
|
print select * from $stb order by ts limit 2 offset $offset
|
||||||
sql select * from $stb order by ts limit 2 offset $offset
|
sql select * from $stb order by ts limit 2 offset $offset
|
||||||
if $rows != 1 then
|
if $rows != 1 then
|
||||||
return -1
|
return -1
|
||||||
|
|
Loading…
Reference in New Issue