refact: prepare last refact
This commit is contained in:
parent
b62dae9594
commit
5e2a498660
|
@ -43,6 +43,7 @@ typedef struct STbDataIter STbDataIter;
|
||||||
typedef struct SMapData SMapData;
|
typedef struct SMapData SMapData;
|
||||||
typedef struct SBlockIdx SBlockIdx;
|
typedef struct SBlockIdx SBlockIdx;
|
||||||
typedef struct SBlock SBlock;
|
typedef struct SBlock SBlock;
|
||||||
|
typedef struct SBlockL SBlockL;
|
||||||
typedef struct SColData SColData;
|
typedef struct SColData SColData;
|
||||||
typedef struct SBlockDataHdr SBlockDataHdr;
|
typedef struct SBlockDataHdr SBlockDataHdr;
|
||||||
typedef struct SBlockData SBlockData;
|
typedef struct SBlockData SBlockData;
|
||||||
|
@ -414,6 +415,29 @@ struct SBlock {
|
||||||
SSubBlock aSubBlock[TSDB_MAX_SUBBLOCKS];
|
SSubBlock aSubBlock[TSDB_MAX_SUBBLOCKS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SBlockL {
|
||||||
|
struct {
|
||||||
|
int64_t uid;
|
||||||
|
int64_t version;
|
||||||
|
TSKEY ts;
|
||||||
|
} minKey;
|
||||||
|
struct {
|
||||||
|
int64_t uid;
|
||||||
|
int64_t version;
|
||||||
|
TSKEY ts;
|
||||||
|
} maxKey;
|
||||||
|
int64_t minVer;
|
||||||
|
int64_t maxVer;
|
||||||
|
int32_t nRow;
|
||||||
|
int8_t cmprAlg;
|
||||||
|
int64_t offset;
|
||||||
|
int32_t szBlock;
|
||||||
|
int32_t szBlockCol;
|
||||||
|
int32_t szUid;
|
||||||
|
int32_t szVer;
|
||||||
|
int32_t szTSKEY;
|
||||||
|
};
|
||||||
|
|
||||||
struct SColData {
|
struct SColData {
|
||||||
int16_t cid;
|
int16_t cid;
|
||||||
int8_t type;
|
int8_t type;
|
||||||
|
|
|
@ -36,16 +36,20 @@ typedef struct {
|
||||||
TSKEY minKey;
|
TSKEY minKey;
|
||||||
TSKEY maxKey;
|
TSKEY maxKey;
|
||||||
// commit file data
|
// commit file data
|
||||||
SDataFReader *pReader;
|
struct {
|
||||||
SArray *aBlockIdx; // SArray<SBlockIdx>
|
SDataFReader *pReader;
|
||||||
SMapData oBlockMap; // SMapData<SBlock>, read from reader
|
SArray *aBlockIdx; // SArray<SBlockIdx>
|
||||||
SBlockData oBlockData;
|
SMapData mBlock; // SMapData<SBlock>, read from reader
|
||||||
SDataFWriter *pWriter;
|
SBlockData bData;
|
||||||
SArray *aBlockIdxN; // SArray<SBlockIdx>
|
} dReader;
|
||||||
SMapData nBlockMap; // SMapData<SBlock>
|
struct {
|
||||||
SBlockData nBlockData;
|
SDataFWriter *pWriter;
|
||||||
SSkmInfo skmTable;
|
SArray *aBlockIdx; // SArray<SBlockIdx>
|
||||||
SSkmInfo skmRow;
|
SMapData mBlock; // SMapData<SBlock>
|
||||||
|
SBlockData bData;
|
||||||
|
} dWriter;
|
||||||
|
SSkmInfo skmTable;
|
||||||
|
SSkmInfo skmRow;
|
||||||
/* commit del */
|
/* commit del */
|
||||||
SDelFReader *pDelFReader;
|
SDelFReader *pDelFReader;
|
||||||
SDelFWriter *pDelFWriter;
|
SDelFWriter *pDelFWriter;
|
||||||
|
@ -276,16 +280,16 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
|
||||||
pCommitter->nextKey = TSKEY_MAX;
|
pCommitter->nextKey = TSKEY_MAX;
|
||||||
|
|
||||||
// old
|
// old
|
||||||
taosArrayClear(pCommitter->aBlockIdx);
|
taosArrayClear(pCommitter->dReader.aBlockIdx);
|
||||||
tMapDataReset(&pCommitter->oBlockMap);
|
tMapDataReset(&pCommitter->dReader.mBlock);
|
||||||
tBlockDataReset(&pCommitter->oBlockData);
|
tBlockDataReset(&pCommitter->dReader.bData);
|
||||||
pRSet = (SDFileSet *)taosArraySearch(pCommitter->fs.aDFileSet, &(SDFileSet){.fid = pCommitter->commitFid},
|
pRSet = (SDFileSet *)taosArraySearch(pCommitter->fs.aDFileSet, &(SDFileSet){.fid = pCommitter->commitFid},
|
||||||
tDFileSetCmprFn, TD_EQ);
|
tDFileSetCmprFn, TD_EQ);
|
||||||
if (pRSet) {
|
if (pRSet) {
|
||||||
code = tsdbDataFReaderOpen(&pCommitter->pReader, pTsdb, pRSet);
|
code = tsdbDataFReaderOpen(&pCommitter->dReader.pReader, pTsdb, pRSet);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
code = tsdbReadBlockIdx(pCommitter->pReader, pCommitter->aBlockIdx, NULL);
|
code = tsdbReadBlockIdx(pCommitter->dReader.pReader, pCommitter->dReader.aBlockIdx, NULL);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,9 +300,9 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
|
||||||
SSmaFile fSma;
|
SSmaFile fSma;
|
||||||
SDFileSet wSet = {.pHeadF = &fHead, .pDataF = &fData, .pLastF = &fLast, .pSmaF = &fSma};
|
SDFileSet wSet = {.pHeadF = &fHead, .pDataF = &fData, .pLastF = &fLast, .pSmaF = &fSma};
|
||||||
|
|
||||||
taosArrayClear(pCommitter->aBlockIdxN);
|
taosArrayClear(pCommitter->dWriter.aBlockIdx);
|
||||||
tMapDataReset(&pCommitter->nBlockMap);
|
tMapDataReset(&pCommitter->dWriter.mBlock);
|
||||||
tBlockDataReset(&pCommitter->nBlockData);
|
tBlockDataReset(&pCommitter->dWriter.bData);
|
||||||
if (pRSet) {
|
if (pRSet) {
|
||||||
wSet.diskId = pRSet->diskId;
|
wSet.diskId = pRSet->diskId;
|
||||||
wSet.fid = pCommitter->commitFid;
|
wSet.fid = pCommitter->commitFid;
|
||||||
|
@ -320,7 +324,7 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
|
||||||
fLast = (SLastFile){.commitID = pCommitter->commitID, .size = 0};
|
fLast = (SLastFile){.commitID = pCommitter->commitID, .size = 0};
|
||||||
fSma = (SSmaFile){.commitID = pCommitter->commitID, .size = 0};
|
fSma = (SSmaFile){.commitID = pCommitter->commitID, .size = 0};
|
||||||
}
|
}
|
||||||
code = tsdbDataFWriterOpen(&pCommitter->pWriter, pTsdb, &wSet);
|
code = tsdbDataFWriterOpen(&pCommitter->dWriter.pWriter, pTsdb, &wSet);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
@ -391,10 +395,11 @@ static int32_t tsdbCommitBlockData(SCommitter *pCommitter, SBlockData *pBlockDat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
code = tsdbWriteBlockData(pCommitter->pWriter, pBlockData, NULL, NULL, pBlockIdx, pBlock, pCommitter->cmprAlg);
|
code =
|
||||||
|
tsdbWriteBlockData(pCommitter->dWriter.pWriter, pBlockData, NULL, NULL, pBlockIdx, pBlock, pCommitter->cmprAlg);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
code = tMapDataPutItem(&pCommitter->nBlockMap, pBlock, tPutBlock);
|
code = tMapDataPutItem(&pCommitter->dWriter.mBlock, pBlock, tPutBlock);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
@ -407,8 +412,8 @@ static int32_t tsdbMergeTableData(SCommitter *pCommitter, STbDataIter *pIter, SB
|
||||||
int8_t toDataOnly) {
|
int8_t toDataOnly) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
SBlockIdx *pBlockIdx = &(SBlockIdx){.suid = pIter->pTbData->suid, .uid = pIter->pTbData->uid};
|
SBlockIdx *pBlockIdx = &(SBlockIdx){.suid = pIter->pTbData->suid, .uid = pIter->pTbData->uid};
|
||||||
SBlockData *pBlockDataMerge = &pCommitter->oBlockData;
|
SBlockData *pBlockDataMerge = &pCommitter->dReader.bData;
|
||||||
SBlockData *pBlockData = &pCommitter->nBlockData;
|
SBlockData *pBlockData = &pCommitter->dWriter.bData;
|
||||||
SBlock block;
|
SBlock block;
|
||||||
SBlock *pBlock = █
|
SBlock *pBlock = █
|
||||||
TSDBROW *pRow1;
|
TSDBROW *pRow1;
|
||||||
|
@ -416,7 +421,7 @@ static int32_t tsdbMergeTableData(SCommitter *pCommitter, STbDataIter *pIter, SB
|
||||||
TSDBROW *pRow2 = &row2;
|
TSDBROW *pRow2 = &row2;
|
||||||
|
|
||||||
// read SBlockData
|
// read SBlockData
|
||||||
code = tsdbReadBlockData(pCommitter->pReader, pBlockIdx, pBlockMerge, pBlockDataMerge, NULL, NULL);
|
code = tsdbReadBlockData(pCommitter->dReader.pReader, pBlockIdx, pBlockMerge, pBlockDataMerge, NULL, NULL);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
code = tBlockDataSetSchema(pBlockData, pCommitter->skmTable.pTSchema);
|
code = tBlockDataSetSchema(pBlockData, pCommitter->skmTable.pTSchema);
|
||||||
|
@ -513,7 +518,7 @@ static int32_t tsdbCommitTableMemData(SCommitter *pCommitter, STbDataIter *pIter
|
||||||
TSDBROW *pRow;
|
TSDBROW *pRow;
|
||||||
SBlock block;
|
SBlock block;
|
||||||
SBlock *pBlock = █
|
SBlock *pBlock = █
|
||||||
SBlockData *pBlockData = &pCommitter->nBlockData;
|
SBlockData *pBlockData = &pCommitter->dWriter.bData;
|
||||||
int64_t suid = pIter->pTbData->suid;
|
int64_t suid = pIter->pTbData->suid;
|
||||||
int64_t uid = pIter->pTbData->uid;
|
int64_t uid = pIter->pTbData->uid;
|
||||||
|
|
||||||
|
@ -575,14 +580,14 @@ static int32_t tsdbCommitTableDiskData(SCommitter *pCommitter, SBlock *pBlock, S
|
||||||
SBlock block;
|
SBlock block;
|
||||||
|
|
||||||
if (pBlock->last) {
|
if (pBlock->last) {
|
||||||
code = tsdbReadBlockData(pCommitter->pReader, pBlockIdx, pBlock, &pCommitter->oBlockData, NULL, NULL);
|
code = tsdbReadBlockData(pCommitter->dReader.pReader, pBlockIdx, pBlock, &pCommitter->dReader.bData, NULL, NULL);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
tBlockReset(&block);
|
tBlockReset(&block);
|
||||||
code = tsdbCommitBlockData(pCommitter, &pCommitter->oBlockData, &block, pBlockIdx, 0);
|
code = tsdbCommitBlockData(pCommitter, &pCommitter->dReader.bData, &block, pBlockIdx, 0);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
} else {
|
} else {
|
||||||
code = tMapDataPutItem(&pCommitter->nBlockMap, pBlock, tPutBlock);
|
code = tMapDataPutItem(&pCommitter->dWriter.mBlock, pBlock, tPutBlock);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,10 +603,10 @@ static int32_t tsdbCommitTableDataEnd(SCommitter *pCommitter, int64_t suid, int6
|
||||||
SBlockIdx blockIdx = {.suid = suid, .uid = uid};
|
SBlockIdx blockIdx = {.suid = suid, .uid = uid};
|
||||||
SBlockIdx *pBlockIdx = &blockIdx;
|
SBlockIdx *pBlockIdx = &blockIdx;
|
||||||
|
|
||||||
code = tsdbWriteBlock(pCommitter->pWriter, &pCommitter->nBlockMap, NULL, pBlockIdx);
|
code = tsdbWriteBlock(pCommitter->dWriter.pWriter, &pCommitter->dWriter.mBlock, NULL, pBlockIdx);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
if (taosArrayPush(pCommitter->aBlockIdxN, pBlockIdx) == NULL) {
|
if (taosArrayPush(pCommitter->dWriter.aBlockIdx, pBlockIdx) == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
@ -643,7 +648,7 @@ static int32_t tsdbGetOvlpNRow(STbDataIter *pIter, SBlock *pBlock) {
|
||||||
|
|
||||||
static int32_t tsdbMergeAsSubBlock(SCommitter *pCommitter, STbDataIter *pIter, SBlock *pBlock) {
|
static int32_t tsdbMergeAsSubBlock(SCommitter *pCommitter, STbDataIter *pIter, SBlock *pBlock) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
SBlockData *pBlockData = &pCommitter->nBlockData;
|
SBlockData *pBlockData = &pCommitter->dWriter.bData;
|
||||||
SBlockIdx *pBlockIdx = &(SBlockIdx){.suid = pIter->pTbData->suid, .uid = pIter->pTbData->uid};
|
SBlockIdx *pBlockIdx = &(SBlockIdx){.suid = pIter->pTbData->suid, .uid = pIter->pTbData->uid};
|
||||||
SBlock block;
|
SBlock block;
|
||||||
TSDBROW *pRow;
|
TSDBROW *pRow;
|
||||||
|
@ -711,10 +716,10 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pBlockIdx) {
|
if (pBlockIdx) {
|
||||||
code = tsdbReadBlock(pCommitter->pReader, pBlockIdx, &pCommitter->oBlockMap, NULL);
|
code = tsdbReadBlock(pCommitter->dReader.pReader, pBlockIdx, &pCommitter->dReader.mBlock, NULL);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
nBlock = pCommitter->oBlockMap.nItem;
|
nBlock = pCommitter->dReader.mBlock.nItem;
|
||||||
ASSERT(nBlock > 0);
|
ASSERT(nBlock > 0);
|
||||||
|
|
||||||
suid = pBlockIdx->suid;
|
suid = pBlockIdx->suid;
|
||||||
|
@ -726,13 +731,13 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
if (pRow == NULL && nBlock == 0) goto _exit;
|
if (pRow == NULL && nBlock == 0) goto _exit;
|
||||||
|
|
||||||
// start ===========
|
// start ===========
|
||||||
tMapDataReset(&pCommitter->nBlockMap);
|
tMapDataReset(&pCommitter->dWriter.mBlock);
|
||||||
SBlock block;
|
SBlock block;
|
||||||
SBlock *pBlock = █
|
SBlock *pBlock = █
|
||||||
|
|
||||||
iBlock = 0;
|
iBlock = 0;
|
||||||
if (iBlock < nBlock) {
|
if (iBlock < nBlock) {
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock, pBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock, pBlock, tGetBlock);
|
||||||
} else {
|
} else {
|
||||||
pBlock = NULL;
|
pBlock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -756,7 +761,7 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
if (pRow && TSDBROW_TS(pRow) > pCommitter->maxKey) pRow = NULL;
|
if (pRow && TSDBROW_TS(pRow) > pCommitter->maxKey) pRow = NULL;
|
||||||
iBlock++;
|
iBlock++;
|
||||||
if (iBlock < nBlock) {
|
if (iBlock < nBlock) {
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock, pBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock, pBlock, tGetBlock);
|
||||||
} else {
|
} else {
|
||||||
pBlock = NULL;
|
pBlock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -771,7 +776,7 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
|
|
||||||
iBlock++;
|
iBlock++;
|
||||||
if (iBlock < nBlock) {
|
if (iBlock < nBlock) {
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock, pBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock, pBlock, tGetBlock);
|
||||||
} else {
|
} else {
|
||||||
pBlock = NULL;
|
pBlock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -798,7 +803,7 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
|
|
||||||
SBlock nextBlock = {0};
|
SBlock nextBlock = {0};
|
||||||
tBlockReset(&nextBlock);
|
tBlockReset(&nextBlock);
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock + 1, &nextBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock + 1, &nextBlock, tGetBlock);
|
||||||
toKey = nextBlock.minKey;
|
toKey = nextBlock.minKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -810,7 +815,7 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
if (pRow && TSDBROW_TS(pRow) > pCommitter->maxKey) pRow = NULL;
|
if (pRow && TSDBROW_TS(pRow) > pCommitter->maxKey) pRow = NULL;
|
||||||
iBlock++;
|
iBlock++;
|
||||||
if (iBlock < nBlock) {
|
if (iBlock < nBlock) {
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock, pBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock, pBlock, tGetBlock);
|
||||||
} else {
|
} else {
|
||||||
pBlock = NULL;
|
pBlock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -822,7 +827,7 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData, SBl
|
||||||
|
|
||||||
iBlock++;
|
iBlock++;
|
||||||
if (iBlock < nBlock) {
|
if (iBlock < nBlock) {
|
||||||
tMapDataGetItemByIdx(&pCommitter->oBlockMap, iBlock, pBlock, tGetBlock);
|
tMapDataGetItemByIdx(&pCommitter->dReader.mBlock, iBlock, pBlock, tGetBlock);
|
||||||
} else {
|
} else {
|
||||||
pBlock = NULL;
|
pBlock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -857,23 +862,23 @@ static int32_t tsdbCommitFileDataEnd(SCommitter *pCommitter) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
// write blockIdx
|
// write blockIdx
|
||||||
code = tsdbWriteBlockIdx(pCommitter->pWriter, pCommitter->aBlockIdxN, NULL);
|
code = tsdbWriteBlockIdx(pCommitter->dWriter.pWriter, pCommitter->dWriter.aBlockIdx, NULL);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
// update file header
|
// update file header
|
||||||
code = tsdbUpdateDFileSetHeader(pCommitter->pWriter);
|
code = tsdbUpdateDFileSetHeader(pCommitter->dWriter.pWriter);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
// upsert SDFileSet
|
// upsert SDFileSet
|
||||||
code = tsdbFSUpsertFSet(&pCommitter->fs, &pCommitter->pWriter->wSet);
|
code = tsdbFSUpsertFSet(&pCommitter->fs, &pCommitter->dWriter.pWriter->wSet);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
// close and sync
|
// close and sync
|
||||||
code = tsdbDataFWriterClose(&pCommitter->pWriter, 1);
|
code = tsdbDataFWriterClose(&pCommitter->dWriter.pWriter, 1);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
if (pCommitter->pReader) {
|
if (pCommitter->dReader.pReader) {
|
||||||
code = tsdbDataFReaderClose(&pCommitter->pReader);
|
code = tsdbDataFReaderClose(&pCommitter->dReader.pReader);
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -898,14 +903,14 @@ static int32_t tsdbCommitFileData(SCommitter *pCommitter) {
|
||||||
int32_t iTbData = 0;
|
int32_t iTbData = 0;
|
||||||
int32_t nTbData = taosArrayGetSize(pMemTable->aTbData);
|
int32_t nTbData = taosArrayGetSize(pMemTable->aTbData);
|
||||||
int32_t iBlockIdx = 0;
|
int32_t iBlockIdx = 0;
|
||||||
int32_t nBlockIdx = taosArrayGetSize(pCommitter->aBlockIdx);
|
int32_t nBlockIdx = taosArrayGetSize(pCommitter->dReader.aBlockIdx);
|
||||||
STbData *pTbData;
|
STbData *pTbData;
|
||||||
SBlockIdx *pBlockIdx;
|
SBlockIdx *pBlockIdx;
|
||||||
|
|
||||||
ASSERT(nTbData > 0);
|
ASSERT(nTbData > 0);
|
||||||
|
|
||||||
pTbData = (STbData *)taosArrayGetP(pMemTable->aTbData, iTbData);
|
pTbData = (STbData *)taosArrayGetP(pMemTable->aTbData, iTbData);
|
||||||
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->aBlockIdx, iBlockIdx) : NULL;
|
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->dReader.aBlockIdx, iBlockIdx) : NULL;
|
||||||
while (pTbData || pBlockIdx) {
|
while (pTbData || pBlockIdx) {
|
||||||
if (pTbData && pBlockIdx) {
|
if (pTbData && pBlockIdx) {
|
||||||
int32_t c = tTABLEIDCmprFn(pTbData, pBlockIdx);
|
int32_t c = tTABLEIDCmprFn(pTbData, pBlockIdx);
|
||||||
|
@ -936,7 +941,7 @@ static int32_t tsdbCommitFileData(SCommitter *pCommitter) {
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
iBlockIdx++;
|
iBlockIdx++;
|
||||||
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->aBlockIdx, iBlockIdx) : NULL;
|
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->dReader.aBlockIdx, iBlockIdx) : NULL;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
_commit_table_mem_and_disk:
|
_commit_table_mem_and_disk:
|
||||||
|
@ -944,7 +949,7 @@ static int32_t tsdbCommitFileData(SCommitter *pCommitter) {
|
||||||
if (code) goto _err;
|
if (code) goto _err;
|
||||||
|
|
||||||
iBlockIdx++;
|
iBlockIdx++;
|
||||||
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->aBlockIdx, iBlockIdx) : NULL;
|
pBlockIdx = (iBlockIdx < nBlockIdx) ? (SBlockIdx *)taosArrayGet(pCommitter->dReader.aBlockIdx, iBlockIdx) : NULL;
|
||||||
iTbData++;
|
iTbData++;
|
||||||
pTbData = (iTbData < nTbData) ? (STbData *)taosArrayGetP(pMemTable->aTbData, iTbData) : NULL;
|
pTbData = (iTbData < nTbData) ? (STbData *)taosArrayGetP(pMemTable->aTbData, iTbData) : NULL;
|
||||||
continue;
|
continue;
|
||||||
|
@ -958,8 +963,8 @@ static int32_t tsdbCommitFileData(SCommitter *pCommitter) {
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
tsdbError("vgId:%d commit file data failed since %s", TD_VID(pTsdb->pVnode), tstrerror(code));
|
tsdbError("vgId:%d commit file data failed since %s", TD_VID(pTsdb->pVnode), tstrerror(code));
|
||||||
tsdbDataFReaderClose(&pCommitter->pReader);
|
tsdbDataFReaderClose(&pCommitter->dReader.pReader);
|
||||||
tsdbDataFWriterClose(&pCommitter->pWriter, 0);
|
tsdbDataFWriterClose(&pCommitter->dWriter.pWriter, 0);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -996,22 +1001,22 @@ _err:
|
||||||
static int32_t tsdbCommitDataStart(SCommitter *pCommitter) {
|
static int32_t tsdbCommitDataStart(SCommitter *pCommitter) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
pCommitter->aBlockIdx = taosArrayInit(0, sizeof(SBlockIdx));
|
pCommitter->dReader.aBlockIdx = taosArrayInit(0, sizeof(SBlockIdx));
|
||||||
if (pCommitter->aBlockIdx == NULL) {
|
if (pCommitter->dReader.aBlockIdx == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
pCommitter->aBlockIdxN = taosArrayInit(0, sizeof(SBlockIdx));
|
pCommitter->dWriter.aBlockIdx = taosArrayInit(0, sizeof(SBlockIdx));
|
||||||
if (pCommitter->aBlockIdxN == NULL) {
|
if (pCommitter->dWriter.aBlockIdx == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
code = tBlockDataInit(&pCommitter->oBlockData);
|
code = tBlockDataInit(&pCommitter->dReader.bData);
|
||||||
if (code) goto _exit;
|
if (code) goto _exit;
|
||||||
|
|
||||||
code = tBlockDataInit(&pCommitter->nBlockData);
|
code = tBlockDataInit(&pCommitter->dWriter.bData);
|
||||||
if (code) goto _exit;
|
if (code) goto _exit;
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
@ -1019,12 +1024,12 @@ _exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tsdbCommitDataEnd(SCommitter *pCommitter) {
|
static void tsdbCommitDataEnd(SCommitter *pCommitter) {
|
||||||
taosArrayDestroy(pCommitter->aBlockIdx);
|
taosArrayDestroy(pCommitter->dReader.aBlockIdx);
|
||||||
tMapDataClear(&pCommitter->oBlockMap);
|
tMapDataClear(&pCommitter->dReader.mBlock);
|
||||||
tBlockDataClear(&pCommitter->oBlockData, 1);
|
tBlockDataClear(&pCommitter->dReader.bData, 1);
|
||||||
taosArrayDestroy(pCommitter->aBlockIdxN);
|
taosArrayDestroy(pCommitter->dWriter.aBlockIdx);
|
||||||
tMapDataClear(&pCommitter->nBlockMap);
|
tMapDataClear(&pCommitter->dWriter.mBlock);
|
||||||
tBlockDataClear(&pCommitter->nBlockData, 1);
|
tBlockDataClear(&pCommitter->dWriter.bData, 1);
|
||||||
tTSchemaDestroy(pCommitter->skmTable.pTSchema);
|
tTSchemaDestroy(pCommitter->skmTable.pTSchema);
|
||||||
tTSchemaDestroy(pCommitter->skmRow.pTSchema);
|
tTSchemaDestroy(pCommitter->skmRow.pTSchema);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue