fix(query): fix bug in tsdbread
This commit is contained in:
parent
515e8d36b0
commit
09ffcd2e13
|
@ -1428,16 +1428,20 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == tsLast) {
|
if (minKey == tsLast) {
|
||||||
if (!init) {
|
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
||||||
|
if (init) {
|
||||||
|
tRowMerge(&merge, &fRow1);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
|
||||||
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
||||||
}
|
}
|
||||||
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == k.ts) {
|
if (minKey == k.ts) {
|
||||||
if (!init) {
|
if (init) {
|
||||||
|
tRowMerge(&merge, pRow);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(pRow), pReader, pBlockScanInfo->uid);
|
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(pRow), pReader, pBlockScanInfo->uid);
|
||||||
tRowMergerInit(&merge, pRow, pSchema);
|
tRowMergerInit(&merge, pRow, pSchema);
|
||||||
|
@ -1453,16 +1457,20 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == tsLast) {
|
if (minKey == tsLast) {
|
||||||
if (!init) {
|
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
||||||
|
if (init) {
|
||||||
|
tRowMerge(&merge, &fRow1);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
|
||||||
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
||||||
}
|
}
|
||||||
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == key) {
|
if (minKey == key) {
|
||||||
if (!init) {
|
if (init) {
|
||||||
|
tRowMerge(&merge, &fRow);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
tRowMergerInit(&merge, &fRow, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow, pReader->pSchema);
|
||||||
}
|
}
|
||||||
|
@ -1620,16 +1628,20 @@ static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == tsLast) {
|
if (minKey == tsLast) {
|
||||||
if (!init) {
|
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
||||||
|
if (init) {
|
||||||
|
tRowMerge(&merge, &fRow1);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
|
||||||
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
||||||
}
|
}
|
||||||
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == ik.ts) {
|
if (minKey == ik.ts) {
|
||||||
if (!init) {
|
if (init) {
|
||||||
|
tRowMerge(&merge, piRow);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(piRow), pReader, pBlockScanInfo->uid);
|
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(piRow), pReader, pBlockScanInfo->uid);
|
||||||
tRowMergerInit(&merge, piRow, pSchema);
|
tRowMergerInit(&merge, piRow, pSchema);
|
||||||
|
@ -1638,7 +1650,9 @@ static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == k.ts) {
|
if (minKey == k.ts) {
|
||||||
if (!init) {
|
if (init) {
|
||||||
|
tRowMerge(&merge, pRow);
|
||||||
|
} else {
|
||||||
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(pRow), pReader, pBlockScanInfo->uid);
|
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(pRow), pReader, pBlockScanInfo->uid);
|
||||||
tRowMergerInit(&merge, pRow, pSchema);
|
tRowMergerInit(&merge, pRow, pSchema);
|
||||||
}
|
}
|
||||||
|
@ -1653,7 +1667,9 @@ static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == ik.ts) {
|
if (minKey == ik.ts) {
|
||||||
if (!init) {
|
if (init) {
|
||||||
|
tRowMerge(&merge, piRow);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(piRow), pReader, pBlockScanInfo->uid);
|
STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(piRow), pReader, pBlockScanInfo->uid);
|
||||||
tRowMergerInit(&merge, piRow, pSchema);
|
tRowMergerInit(&merge, piRow, pSchema);
|
||||||
|
@ -1662,19 +1678,22 @@ static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == tsLast) {
|
if (minKey == tsLast) {
|
||||||
if (!init) {
|
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
||||||
|
if (init) {
|
||||||
|
tRowMerge(&merge, &fRow1);
|
||||||
|
} else {
|
||||||
init = true;
|
init = true;
|
||||||
TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex);
|
|
||||||
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow1, pReader->pSchema);
|
||||||
}
|
}
|
||||||
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
doMergeRowsInLastBlock(pLastBlockReader, tsLast, &merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minKey == key) {
|
if (minKey == key) {
|
||||||
|
TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex);
|
||||||
if (!init) {
|
if (!init) {
|
||||||
init = true;
|
|
||||||
TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex);
|
|
||||||
tRowMergerInit(&merge, &fRow, pReader->pSchema);
|
tRowMergerInit(&merge, &fRow, pReader->pSchema);
|
||||||
|
} else {
|
||||||
|
tRowMerge(&merge, &fRow);
|
||||||
}
|
}
|
||||||
doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge);
|
doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge);
|
||||||
}
|
}
|
||||||
|
@ -1885,11 +1904,12 @@ static bool nextRowInLastBlock(SLastBlockReader *pLastBlockReader) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool asc = ASCENDING_TRAVERSE(pLastBlockReader->order);
|
||||||
*(pLastBlockReader->rowIndex) += step;
|
*(pLastBlockReader->rowIndex) += step;
|
||||||
|
|
||||||
SBlockData* pBlockData = &pLastBlockReader->lastBlockData;
|
SBlockData* pBlockData = &pLastBlockReader->lastBlockData;
|
||||||
for(int32_t i = *(pLastBlockReader->rowIndex); i < pBlockData->nRow && i >= 0; i += step) {
|
for(int32_t i = *(pLastBlockReader->rowIndex); i < pBlockData->nRow && i >= 0; i += step) {
|
||||||
if (pBlockData->aUid[i] != pLastBlockReader->uid) {
|
if (pBlockData->aUid != NULL && pBlockData->aUid[i] != pLastBlockReader->uid) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1901,15 +1921,14 @@ static bool nextRowInLastBlock(SLastBlockReader *pLastBlockReader) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// no data any more
|
// no data any more, todo opt handle desc case
|
||||||
if (pBlockData->aTSKEY[i] > pLastBlockReader->window.ekey) {
|
if (pBlockData->aTSKEY[i] > pLastBlockReader->window.ekey) {
|
||||||
setAllRowsChecked(pLastBlockReader);
|
continue;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo opt handle desc case
|
||||||
if (pBlockData->aVersion[i] > pLastBlockReader->verRange.maxVer) {
|
if (pBlockData->aVersion[i] > pLastBlockReader->verRange.maxVer) {
|
||||||
setAllRowsChecked(pLastBlockReader);
|
continue;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*(pLastBlockReader->rowIndex) = i;
|
*(pLastBlockReader->rowIndex) = i;
|
||||||
|
@ -2076,7 +2095,7 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) {
|
||||||
{
|
{
|
||||||
bool hasBlockData = false;
|
bool hasBlockData = false;
|
||||||
|
|
||||||
while (pBlockData->nRow > 0) {
|
while (pBlockData->nRow > 0) { // find the first qualified row in data block
|
||||||
if (isValidFileBlockRow(pBlockData, pDumpInfo, pBlockScanInfo, pReader)) {
|
if (isValidFileBlockRow(pBlockData, pDumpInfo, pBlockScanInfo, pReader)) {
|
||||||
hasBlockData = true;
|
hasBlockData = true;
|
||||||
break;
|
break;
|
||||||
|
@ -2119,8 +2138,7 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) {
|
||||||
setComposedBlockFlag(pReader, true);
|
setComposedBlockFlag(pReader, true);
|
||||||
int64_t et = taosGetTimestampUs();
|
int64_t et = taosGetTimestampUs();
|
||||||
|
|
||||||
tsdbDebug("%p uid:%" PRIu64 ", composed data block created, brange:%" PRIu64 "-%" PRIu64
|
tsdbDebug("%p uid:%" PRIu64 ", composed data block created, brange:%" PRIu64 "-%" PRIu64 " rows:%d, elapsed time:%.2f ms %s",
|
||||||
" rows:%d, elapsed time:%.2f ms %s",
|
|
||||||
pReader, pBlockScanInfo->uid, pResBlock->info.window.skey, pResBlock->info.window.ekey,
|
pReader, pBlockScanInfo->uid, pResBlock->info.window.skey, pResBlock->info.window.ekey,
|
||||||
pResBlock->info.rows, (et - st) / 1000.0, pReader->idStr);
|
pResBlock->info.rows, (et - st) / 1000.0, pReader->idStr);
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ if $data00 != @15-08-18 00:00:00.000@ then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data01 != 2.068333156 then
|
if $data01 != 2.068333156 then
|
||||||
|
print expect 2.068333156, actual: $data01
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data02 != 2.063999891 then
|
if $data02 != 2.063999891 then
|
||||||
|
|
Loading…
Reference in New Issue