提交 1c868f7b 编写于 作者: M Minglei Jin

tsdbCache: update tsdbReadBlockIdx interface usings

上级 ceaa37e4
...@@ -406,16 +406,18 @@ typedef struct SFSNextRowIter { ...@@ -406,16 +406,18 @@ 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;
SMapData blockMap; // SBlockIdx blockIdx;
int32_t nBlock; SBlockIdx *pBlockIdx;
int32_t iBlock; SMapData blockMap;
SBlock block; int32_t nBlock;
SBlockData blockData; int32_t iBlock;
int32_t nRow; SBlock block;
int32_t iRow; SBlockData blockData;
TSDBROW row; int32_t nRow;
int32_t iRow;
TSDBROW row;
} SFSNextRowIter; } SFSNextRowIter;
static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) { static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
...@@ -439,17 +441,29 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) { ...@@ -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); */
/* } */
/* 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; 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) { ...@@ -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) { ...@@ -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) { ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册