add the test code for hashtable
This commit is contained in:
parent
5012ecc1a5
commit
d65299430a
|
@ -1616,6 +1616,9 @@ static void doCheckQueryCompleted(SQueryRuntimeEnv *pRuntimeEnv, TSKEY lastKey,
|
||||||
|
|
||||||
for (i = 0; i < pWindowResInfo->size; ++i) {
|
for (i = 0; i < pWindowResInfo->size; ++i) {
|
||||||
SWindowResult *pResult = &pWindowResInfo->pResult[i];
|
SWindowResult *pResult = &pWindowResInfo->pResult[i];
|
||||||
|
if (pResult->status.closed) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ((pResult->window.ekey <= lastKey && QUERY_IS_ASC_QUERY(pQuery)) ||
|
if ((pResult->window.ekey <= lastKey && QUERY_IS_ASC_QUERY(pQuery)) ||
|
||||||
(pResult->window.skey >= lastKey && !QUERY_IS_ASC_QUERY(pQuery))) {
|
(pResult->window.skey >= lastKey && !QUERY_IS_ASC_QUERY(pQuery))) {
|
||||||
|
@ -1632,7 +1635,6 @@ static void doCheckQueryCompleted(SQueryRuntimeEnv *pRuntimeEnv, TSKEY lastKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
pWindowResInfo->prevSKey = skey;
|
pWindowResInfo->prevSKey = skey;
|
||||||
assert(skey != 0);
|
|
||||||
|
|
||||||
// the number of completed slots are larger than the threshold, dump to client immediately.
|
// the number of completed slots are larger than the threshold, dump to client immediately.
|
||||||
int32_t v = numOfClosedSlidingWindow(pWindowResInfo);
|
int32_t v = numOfClosedSlidingWindow(pWindowResInfo);
|
||||||
|
@ -2321,9 +2323,6 @@ static int32_t rowwiseApplyAllFunctions(SQueryRuntimeEnv *pRuntimeEnv, int32_t *
|
||||||
|
|
||||||
free(sasArray);
|
free(sasArray);
|
||||||
|
|
||||||
lastKey = (QUERY_IS_ASC_QUERY(pQuery)) ? pBlockInfo->keyLast : pBlockInfo->keyFirst;
|
|
||||||
doCheckQueryCompleted(pRuntimeEnv, lastKey, pWindowResInfo);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No need to calculate the number of output results for group-by normal columns, interval query
|
* No need to calculate the number of output results for group-by normal columns, interval query
|
||||||
* because the results of group by normal column is put into intermediate buffer.
|
* because the results of group by normal column is put into intermediate buffer.
|
||||||
|
@ -2437,6 +2436,9 @@ static int32_t applyFunctionsOnBlock(SQueryRuntimeEnv *pRuntimeEnv, SBlockInfo *
|
||||||
pWindowResInfo, searchFn);
|
pWindowResInfo, searchFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TSKEY lastKey = (QUERY_IS_ASC_QUERY(pQuery)) ? pBlockInfo->keyLast : pBlockInfo->keyFirst;
|
||||||
|
doCheckQueryCompleted(pRuntimeEnv, lastKey, pWindowResInfo);
|
||||||
|
|
||||||
assert(*numOfRes >= 0);
|
assert(*numOfRes >= 0);
|
||||||
|
|
||||||
// check if buffer is large enough for accommodating all qualified points
|
// check if buffer is large enough for accommodating all qualified points
|
||||||
|
@ -5150,7 +5152,6 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
||||||
|
|
||||||
__block_search_fn_t searchFn = vnodeSearchKeyFunc[pMeterObj->searchAlgorithm];
|
__block_search_fn_t searchFn = vnodeSearchKeyFunc[pMeterObj->searchAlgorithm];
|
||||||
int32_t blockLoadStatus = DISK_DATA_LOADED;
|
int32_t blockLoadStatus = DISK_DATA_LOADED;
|
||||||
SQueryCostSummary * pSummary = &pRuntimeEnv->summary;
|
|
||||||
|
|
||||||
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pQuery->order.order);
|
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pQuery->order.order);
|
||||||
|
|
||||||
|
@ -5193,32 +5194,33 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
||||||
* 1. interval query.
|
* 1. interval query.
|
||||||
* 2. multi-output query that may cause buffer overflow.
|
* 2. multi-output query that may cause buffer overflow.
|
||||||
*/
|
*/
|
||||||
if (pQuery->intervalTime > 0 ||
|
// if (pQuery->intervalTime > 0 || Q_STATUS_EQUAL(pQuery->over, QUERY_RESBUF_FULL)) {
|
||||||
(Q_STATUS_EQUAL(pQuery->over, QUERY_RESBUF_FULL)/* && pQuery->checkBufferInLoop == 1*/)) {
|
|
||||||
if (nextPos >= blockInfo.size || nextPos < 0) {
|
if (nextPos >= blockInfo.size || nextPos < 0) {
|
||||||
moveToNextBlock(pRuntimeEnv, step, searchFn, !LOAD_DATA);
|
moveToNextBlock(pRuntimeEnv, step, searchFn, !LOAD_DATA);
|
||||||
|
|
||||||
if (!Q_STATUS_EQUAL(pQuery->over, QUERY_NO_DATA_TO_CHECK|QUERY_COMPLETED)) {
|
// if (!Q_STATUS_EQUAL(pQuery->over, QUERY_NO_DATA_TO_CHECK|QUERY_COMPLETED)) {
|
||||||
// slot/pos/fileId is updated in moveToNextBlock function
|
// slot/pos/fileId is updated in moveToNextBlock function
|
||||||
savePointPosition(&pRuntimeEnv->nextPos, pQuery->fileId, pQuery->slot, pQuery->pos);
|
savePointPosition(&pRuntimeEnv->nextPos, pQuery->fileId, pQuery->slot, pQuery->pos);
|
||||||
|
|
||||||
// check next block
|
// // check next block
|
||||||
void *pNextBlock = getGenericDataBlock(pMeterObj, pRuntimeEnv, pQuery->slot);
|
// void *pNextBlock = getGenericDataBlock(pMeterObj, pRuntimeEnv, pQuery->slot);
|
||||||
|
//
|
||||||
int32_t blockType = (IS_DISK_DATA_BLOCK(pQuery)) ? BLK_FILE_BLOCK : BLK_CACHE_BLOCK;
|
// int32_t blockType = (IS_DISK_DATA_BLOCK(pQuery)) ? BLK_FILE_BLOCK : BLK_CACHE_BLOCK;
|
||||||
blockInfo = getBlockBasicInfo(pRuntimeEnv, pNextBlock, blockType);
|
// blockInfo = getBlockBasicInfo(pRuntimeEnv, pNextBlock, blockType);
|
||||||
|
//
|
||||||
// check if need to close window result or not
|
// // check if need to close window result or not
|
||||||
if (pQuery->intervalTime > 0 && pQuery->slidingTime > 0) {
|
// if (pQuery->intervalTime > 0 && pQuery->slidingTime > 0) {
|
||||||
TSKEY t = (QUERY_IS_ASC_QUERY(pQuery))? blockInfo.keyFirst:blockInfo.keyLast;
|
// TSKEY t = (QUERY_IS_ASC_QUERY(pQuery))? blockInfo.keyFirst:blockInfo.keyLast;
|
||||||
doCheckQueryCompleted(pRuntimeEnv, t, &pRuntimeEnv->windowResInfo);
|
// doCheckQueryCompleted(pRuntimeEnv, t, &pRuntimeEnv->windowResInfo);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
savePointPosition(&pRuntimeEnv->nextPos, pQuery->fileId, pQuery->slot, accessPos + step);
|
savePointPosition(&pRuntimeEnv->nextPos, pQuery->fileId, pQuery->slot, accessPos + step);
|
||||||
}
|
}
|
||||||
}
|
// } else {
|
||||||
|
// assert(0);
|
||||||
|
// }
|
||||||
break;
|
break;
|
||||||
} else { // query not completed, move to next block
|
} else { // query not completed, move to next block
|
||||||
blockLoadStatus = moveToNextBlock(pRuntimeEnv, step, searchFn, LOAD_DATA);
|
blockLoadStatus = moveToNextBlock(pRuntimeEnv, step, searchFn, LOAD_DATA);
|
||||||
|
@ -5240,11 +5242,11 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if need to close window result or not
|
// // check if need to close window result or not
|
||||||
if (pQuery->intervalTime > 0 && pQuery->slidingTime > 0) {
|
// if (pQuery->intervalTime > 0 && pQuery->slidingTime > 0) {
|
||||||
TSKEY t = (QUERY_IS_ASC_QUERY(pQuery))? blockInfo.keyFirst:blockInfo.keyLast;
|
// TSKEY t = (QUERY_IS_ASC_QUERY(pQuery))? blockInfo.keyFirst:blockInfo.keyLast;
|
||||||
doCheckQueryCompleted(pRuntimeEnv, t, &pRuntimeEnv->windowResInfo);
|
// doCheckQueryCompleted(pRuntimeEnv, t, &pRuntimeEnv->windowResInfo);
|
||||||
}
|
// }
|
||||||
|
|
||||||
if(Q_STATUS_EQUAL(pQuery->over, QUERY_RESBUF_FULL)) {
|
if(Q_STATUS_EQUAL(pQuery->over, QUERY_RESBUF_FULL)) {
|
||||||
break;
|
break;
|
||||||
|
@ -5252,6 +5254,21 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
|
||||||
|
|
||||||
} // while(1)
|
} // while(1)
|
||||||
|
|
||||||
|
if (pQuery->intervalTime > 0) {
|
||||||
|
if (Q_STATUS_EQUAL(pQuery->over, QUERY_COMPLETED|QUERY_NO_DATA_TO_CHECK)) {
|
||||||
|
closeAllSlidingWindow(&pRuntimeEnv->windowResInfo);
|
||||||
|
} else if (Q_STATUS_EQUAL(pQuery->over, QUERY_RESBUF_FULL)) { // check if window needs to be closed
|
||||||
|
void *pNextBlock = getGenericDataBlock(pMeterObj, pRuntimeEnv, pQuery->slot);
|
||||||
|
|
||||||
|
int32_t blockType = (IS_DISK_DATA_BLOCK(pQuery)) ? BLK_FILE_BLOCK : BLK_CACHE_BLOCK;
|
||||||
|
SBlockInfo blockInfo = getBlockBasicInfo(pRuntimeEnv, pNextBlock, blockType);
|
||||||
|
|
||||||
|
// check if need to close window result or not
|
||||||
|
TSKEY t = (QUERY_IS_ASC_QUERY(pQuery))? blockInfo.keyFirst:blockInfo.keyLast;
|
||||||
|
doCheckQueryCompleted(pRuntimeEnv, t, &pRuntimeEnv->windowResInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue