tsdbCache: update tsdbReadBlockIdx interface usings

This commit is contained in:
Minglei Jin 2022-06-30 14:39:50 +08:00
parent ceaa37e430
commit 1c868f7b2a
1 changed files with 44 additions and 19 deletions

View File

@ -406,8 +406,10 @@ typedef struct SFSNextRowIter {
int32_t iFileSet; int32_t iFileSet;
SArray *aDFileSet; SArray *aDFileSet;
SDataFReader *pDataFReader; SDataFReader *pDataFReader;
SMapData blockIdxMap; SArray *aBlockIdx;
SBlockIdx blockIdx; // SMapData blockIdxMap;
// SBlockIdx blockIdx;
SBlockIdx *pBlockIdx;
SMapData blockMap; SMapData blockMap;
int32_t nBlock; int32_t nBlock;
int32_t iBlock; int32_t iBlock;
@ -439,17 +441,29 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
code = tsdbDataFReaderOpen(&state->pDataFReader, state->pTsdb, pFileSet); code = tsdbDataFReaderOpen(&state->pDataFReader, state->pTsdb, pFileSet);
if (code) goto _err; if (code) goto _err;
/*
tMapDataReset(&state->blockIdxMap); // tMapDataReset(&state->blockIdxMap);
code = tsdbReadBlockIdx(state->pDataFReader, &state->blockIdxMap, NULL); // code = tsdbReadBlockIdx(state->pDataFReader, &state->blockIdxMap, NULL);
if (!state->aBlockIdx) {
state->aBlockIdx = taosArrayInit(0, sizeof(SBlockIdx));
} else {
taosArrayClear(state->aBlockIdx);
}
code = tsdbReadBlockIdx(state->pDataFReader, state->aBlockIdx, NULL);
if (code) goto _err; if (code) goto _err;
tBlockIdxReset(&state->blockIdx); /* if (state->pBlockIdx) { */
code = tMapDataSearch(&state->blockIdxMap, state->pBlockIdxExp, tGetBlockIdx, tCmprBlockIdx, &state->blockIdx); /* tBlockIdxReset(state->blockIdx); */
if (code) goto _err; /* } */
/* tBlockIdxReset(state->blockIdx); */
/* code = tMapDataSearch(&state->blockIdxMap, state->pBlockIdxExp, tGetBlockIdx, tCmprBlockIdx, &state->blockIdx);
*/ */
state->pBlockIdx = taosArraySearch(state->aBlockIdx, state->pBlockIdxExp, tCmprBlockIdx, TD_EQ);
if (code) goto _err;
tMapDataReset(&state->blockMap); tMapDataReset(&state->blockMap);
code = tsdbReadBlock(state->pDataFReader, &state->blockIdx, &state->blockMap, NULL); code = tsdbReadBlock(state->pDataFReader, state->pBlockIdx, &state->blockMap, NULL);
/* code = tsdbReadBlock(state->pDataFReader, &state->blockIdx, &state->blockMap, NULL); */
if (code) goto _err; if (code) goto _err;
state->nBlock = state->blockMap.nItem; state->nBlock = state->blockMap.nItem;
@ -463,7 +477,8 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
tBlockDataReset(&state->blockData); tBlockDataReset(&state->blockData);
tMapDataGetItemByIdx(&state->blockMap, state->iBlock, &block, tGetBlock); tMapDataGetItemByIdx(&state->blockMap, state->iBlock, &block, tGetBlock);
code = tsdbReadBlockData(state->pDataFReader, &state->blockIdx, &block, &state->blockData, NULL, NULL); /* code = tsdbReadBlockData(state->pDataFReader, &state->blockIdx, &block, &state->blockData, NULL, NULL); */
code = tsdbReadBlockData(state->pDataFReader, state->pBlockIdx, &block, &state->blockData, NULL, NULL);
if (code) goto _err; if (code) goto _err;
state->nRow = state->blockData.nRow; state->nRow = state->blockData.nRow;
@ -480,7 +495,9 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
state->state = SFSNEXTROW_BLOCKDATA; state->state = SFSNEXTROW_BLOCKDATA;
if (--state->iBlock < 0) { if (--state->iBlock < 0) {
tsdbDataFReaderClose(&state->pDataFReader); tsdbDataFReaderClose(&state->pDataFReader);
if (state->aBlockIdx) {
taosArrayDestroy(state->aBlockIdx);
}
state->state = SFSNEXTROW_FILESET; state->state = SFSNEXTROW_FILESET;
} }
} }
@ -493,7 +510,15 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
} }
_err: _err:
if (state->pDataFReader) {
tsdbDataFReaderClose(&state->pDataFReader);
}
if (state->aBlockIdx) {
taosArrayDestroy(state->aBlockIdx);
}
*ppRow = NULL; *ppRow = NULL;
return code; return code;
} }