fix(tsdb): fix error in tsdbread.
This commit is contained in:
parent
b39198a53a
commit
ba4d726af6
|
@ -545,7 +545,7 @@ static int32_t doLoadFileBlock(STsdbReader* pReader, SArray* pIndexList, SBlockN
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uid < pRecord->uid) { // forward the table uid index
|
if (uid < pRecord->uid) { // forward the table uid index
|
||||||
while (pReader->status.uidList.tableUidList[k] < pRecord->uid && k < numOfTables) {
|
while (k < numOfTables && pReader->status.uidList.tableUidList[k] < pRecord->uid) {
|
||||||
k += 1;
|
k += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -453,48 +453,8 @@ bool blockIteratorNext(SDataBlockIter* pBlockIter, const char* idStr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// load tomb data API
|
// load tomb data API
|
||||||
//static int32_t checkTombBlockRecords(SArray* pData, STombBlock* pBlock, uint64_t suid, uint64_t uid, int64_t maxVer);
|
static int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STsdbReader* pReader,
|
||||||
|
void* pFileReader, bool isFile) {
|
||||||
//int32_t loadSttTombData(SArray* pLDataIterList, uint64_t suid, STableBlockScanInfo* pScanInfo, uint64_t maxVer) {
|
|
||||||
// int32_t size = taosArrayGetSize(pLDataIterList);
|
|
||||||
// if (size <= 0) {
|
|
||||||
// return TSDB_CODE_SUCCESS;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// uint64_t uid = pScanInfo->uid;
|
|
||||||
// if (pScanInfo->pfileDelData == NULL) {
|
|
||||||
// pScanInfo->pfileDelData = taosArrayInit(4, sizeof(SDelData));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// for (int32_t i = 0; i < size; ++i) {
|
|
||||||
// SArray* pLeveledLDataIter = taosArrayGetP(pLDataIterList, i);
|
|
||||||
//
|
|
||||||
// int32_t numOfIter = taosArrayGetSize(pLeveledLDataIter);
|
|
||||||
// if (numOfIter == 0) {
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// for (int32_t f = 0; f < numOfIter; ++f) {
|
|
||||||
// SLDataIter* pIter = taosArrayGetP(pLeveledLDataIter, f);
|
|
||||||
//
|
|
||||||
// SArray* pTombBlockArray = pIter->pBlockLoadInfo->pTombBlockArray;
|
|
||||||
// int32_t numOfBlocks = taosArrayGetSize(pTombBlockArray);
|
|
||||||
// for (int32_t k = 0; k < numOfBlocks; ++k) {
|
|
||||||
// STombBlock* pBlock = taosArrayGetP(pTombBlockArray, k);
|
|
||||||
//
|
|
||||||
// int32_t code = checkTombBlockRecords(pScanInfo->pfileDelData, pBlock, suid, uid, maxVer);
|
|
||||||
// if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
// return code;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return TSDB_CODE_SUCCESS;
|
|
||||||
//}
|
|
||||||
|
|
||||||
int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STsdbReader* pReader,
|
|
||||||
SDataFileReader* pFileReader, SSttFileReader* pSttReader, bool isFile) {
|
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
STableUidList* pList = &pReader->status.uidList;
|
STableUidList* pList = &pReader->status.uidList;
|
||||||
|
@ -524,7 +484,7 @@ int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STsdbReade
|
||||||
|
|
||||||
STombBlock block = {0};
|
STombBlock block = {0};
|
||||||
code = isFile ? tsdbDataFileReadTombBlock(pFileReader, &pTombBlkArray->data[i], &block)
|
code = isFile ? tsdbDataFileReadTombBlock(pFileReader, &pTombBlkArray->data[i], &block)
|
||||||
: tsdbSttFileReadTombBlock(pSttReader, &pTombBlkArray->data[i], &block);
|
: tsdbSttFileReadTombBlock(pFileReader, &pTombBlkArray->data[i], &block);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -540,6 +500,7 @@ int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STsdbReade
|
||||||
for (int32_t k = 0; k < TARRAY2_SIZE(block.suid); ++k) {
|
for (int32_t k = 0; k < TARRAY2_SIZE(block.suid); ++k) {
|
||||||
code = tTombBlockGet(&block, k, &record);
|
code = tTombBlockGet(&block, k, &record);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
tTombBlockDestroy(&block);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,7 +515,7 @@ int32_t doLoadTombDataFromTombBlk(const TTombBlkArray* pTombBlkArray, STsdbReade
|
||||||
|
|
||||||
bool newTable = false;
|
bool newTable = false;
|
||||||
if (uid < record.uid) {
|
if (uid < record.uid) {
|
||||||
while (pReader->status.uidList.tableUidList[j] < record.uid && j < numOfTables) {
|
while (j < numOfTables && pReader->status.uidList.tableUidList[j] < record.uid) {
|
||||||
j += 1;
|
j += 1;
|
||||||
newTable = true;
|
newTable = true;
|
||||||
}
|
}
|
||||||
|
@ -605,7 +566,7 @@ int32_t loadDataFileTombDataForAll(STsdbReader* pReader) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
return doLoadTombDataFromTombBlk(pBlkArray, pReader, pReader->pFileReader, NULL, true);
|
return doLoadTombDataFromTombBlk(pBlkArray, pReader, pReader->pFileReader, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t loadSttTombDataForAll(STsdbReader* pReader, SSttFileReader* pSttFileReader, SSttBlockLoadInfo* pLoadInfo) {
|
int32_t loadSttTombDataForAll(STsdbReader* pReader, SSttFileReader* pSttFileReader, SSttBlockLoadInfo* pLoadInfo) {
|
||||||
|
@ -619,7 +580,7 @@ int32_t loadSttTombDataForAll(STsdbReader* pReader, SSttFileReader* pSttFileRead
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
return doLoadTombDataFromTombBlk(pBlkArray, pReader, NULL, pSttFileReader, false);
|
return doLoadTombDataFromTombBlk(pBlkArray, pReader, pSttFileReader, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadMemTombData(STableBlockScanInfo* pScanInfo, STbData* pMemTbData, STbData* piMemTbData, int64_t ver) {
|
void loadMemTombData(STableBlockScanInfo* pScanInfo, STbData* pMemTbData, STbData* piMemTbData, int64_t ver) {
|
||||||
|
@ -649,32 +610,3 @@ void loadMemTombData(STableBlockScanInfo* pScanInfo, STbData* pMemTbData, STbDat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t checkTombBlockRecords(SArray* pData, STombBlock* pBlock, uint64_t suid, uint64_t uid, int64_t maxVer) {
|
|
||||||
STombRecord record = {0};
|
|
||||||
for (int32_t j = 0; j < pBlock->suid->size; ++j) {
|
|
||||||
int32_t code = tTombBlockGet(pBlock, j, &record);
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (record.suid < suid) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (record.suid > suid || (record.suid == suid && record.uid > uid)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (record.uid < uid) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (record.version <= maxVer) {
|
|
||||||
SDelData delData = {.version = record.version, .sKey = record.skey, .eKey = record.ekey};
|
|
||||||
taosArrayPush(pData, &delData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
|
@ -253,7 +253,6 @@ int32_t initBlockIterator(STsdbReader* pReader, SDataBlockIter* pBlockIter, int3
|
||||||
bool blockIteratorNext(SDataBlockIter* pBlockIter, const char* idStr);
|
bool blockIteratorNext(SDataBlockIter* pBlockIter, const char* idStr);
|
||||||
|
|
||||||
// load tomb data API (stt/mem only for one table each, tomb data from data files are load for all tables at one time)
|
// load tomb data API (stt/mem only for one table each, tomb data from data files are load for all tables at one time)
|
||||||
//int32_t loadSttTombData(SArray* pLDataIterList, uint64_t suid, STableBlockScanInfo* pScanInfo, uint64_t maxVer);
|
|
||||||
void loadMemTombData(STableBlockScanInfo* pScanInfo, STbData* pMemTbData, STbData* piMemTbData, int64_t ver);
|
void loadMemTombData(STableBlockScanInfo* pScanInfo, STbData* pMemTbData, STbData* piMemTbData, int64_t ver);
|
||||||
int32_t loadDataFileTombDataForAll(STsdbReader* pReader);
|
int32_t loadDataFileTombDataForAll(STsdbReader* pReader);
|
||||||
int32_t loadSttTombDataForAll(STsdbReader* pReader, SSttFileReader* pSttFileReader, SSttBlockLoadInfo* pLoadInfo);
|
int32_t loadSttTombDataForAll(STsdbReader* pReader, SSttFileReader* pSttFileReader, SSttBlockLoadInfo* pLoadInfo);
|
||||||
|
|
Loading…
Reference in New Issue