Merge pull request #17342 from taosdata/fix/TD-19468
fix: close merge tree for each file set
This commit is contained in:
commit
5a5cdb318c
|
@ -429,7 +429,8 @@ typedef struct {
|
||||||
SDataFReader *pDataFReader;
|
SDataFReader *pDataFReader;
|
||||||
TSDBROW row;
|
TSDBROW row;
|
||||||
|
|
||||||
SMergeTree mergeTree;
|
SMergeTree mergeTree;
|
||||||
|
SMergeTree *pMergeTree;
|
||||||
} SFSLastNextRowIter;
|
} SFSLastNextRowIter;
|
||||||
|
|
||||||
static int32_t getNextRowFromFSLast(void *iter, TSDBROW **ppRow) {
|
static int32_t getNextRowFromFSLast(void *iter, TSDBROW **ppRow) {
|
||||||
|
@ -444,11 +445,14 @@ static int32_t getNextRowFromFSLast(void *iter, TSDBROW **ppRow) {
|
||||||
case SFSLASTNEXTROW_FILESET: {
|
case SFSLASTNEXTROW_FILESET: {
|
||||||
SDFileSet *pFileSet = NULL;
|
SDFileSet *pFileSet = NULL;
|
||||||
_next_fileset:
|
_next_fileset:
|
||||||
|
if (state->pMergeTree != NULL) {
|
||||||
|
tMergeTreeClose(state->pMergeTree);
|
||||||
|
state->pMergeTree = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (--state->iFileSet >= 0) {
|
if (--state->iFileSet >= 0) {
|
||||||
pFileSet = (SDFileSet *)taosArrayGet(state->aDFileSet, state->iFileSet);
|
pFileSet = (SDFileSet *)taosArrayGet(state->aDFileSet, state->iFileSet);
|
||||||
} else {
|
} else {
|
||||||
tMergeTreeClose(&state->mergeTree);
|
|
||||||
|
|
||||||
*ppRow = NULL;
|
*ppRow = NULL;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -460,10 +464,10 @@ static int32_t getNextRowFromFSLast(void *iter, TSDBROW **ppRow) {
|
||||||
tMergeTreeOpen(&state->mergeTree, 1, state->pDataFReader, state->suid, state->uid,
|
tMergeTreeOpen(&state->mergeTree, 1, state->pDataFReader, state->suid, state->uid,
|
||||||
&(STimeWindow){.skey = TSKEY_MIN, .ekey = TSKEY_MAX},
|
&(STimeWindow){.skey = TSKEY_MIN, .ekey = TSKEY_MAX},
|
||||||
&(SVersionRange){.minVer = 0, .maxVer = UINT64_MAX}, pLoadInfo, true, NULL);
|
&(SVersionRange){.minVer = 0, .maxVer = UINT64_MAX}, pLoadInfo, true, NULL);
|
||||||
|
state->pMergeTree = &state->mergeTree;
|
||||||
bool hasVal = tMergeTreeNext(&state->mergeTree);
|
bool hasVal = tMergeTreeNext(&state->mergeTree);
|
||||||
if (!hasVal) {
|
if (!hasVal) {
|
||||||
state->state = SFSLASTNEXTROW_FILESET;
|
state->state = SFSLASTNEXTROW_FILESET;
|
||||||
tMergeTreeClose(&state->mergeTree);
|
|
||||||
goto _next_fileset;
|
goto _next_fileset;
|
||||||
}
|
}
|
||||||
state->state = SFSLASTNEXTROW_BLOCKROW;
|
state->state = SFSLASTNEXTROW_BLOCKROW;
|
||||||
|
@ -475,6 +479,7 @@ static int32_t getNextRowFromFSLast(void *iter, TSDBROW **ppRow) {
|
||||||
if (!hasVal) {
|
if (!hasVal) {
|
||||||
state->state = SFSLASTNEXTROW_FILESET;
|
state->state = SFSLASTNEXTROW_FILESET;
|
||||||
}
|
}
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
|
@ -486,6 +491,11 @@ _err:
|
||||||
tsdbDataFReaderClose(&state->pDataFReader);
|
tsdbDataFReaderClose(&state->pDataFReader);
|
||||||
state->pDataFReader = NULL;
|
state->pDataFReader = NULL;
|
||||||
}
|
}
|
||||||
|
if (state->pMergeTree != NULL) {
|
||||||
|
tMergeTreeClose(state->pMergeTree);
|
||||||
|
state->pMergeTree = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
*ppRow = NULL;
|
*ppRow = NULL;
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
@ -504,6 +514,11 @@ int32_t clearNextRowFromFSLast(void *iter) {
|
||||||
state->pDataFReader = NULL;
|
state->pDataFReader = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state->pMergeTree != NULL) {
|
||||||
|
tMergeTreeClose(state->pMergeTree);
|
||||||
|
state->pMergeTree = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue