more work

This commit is contained in:
Hongze Cheng 2022-07-07 05:40:49 +00:00
parent 089d5e6150
commit 4edcd7011e
1 changed files with 19 additions and 22 deletions

View File

@ -316,6 +316,7 @@ struct STsdbSnapWriter {
SDataFReader* pDataFReader; SDataFReader* pDataFReader;
SArray* aBlockIdx; SArray* aBlockIdx;
int32_t iBlockIdx; int32_t iBlockIdx;
SBlockIdx* pBlockIdx;
SMapData mBlock; SMapData mBlock;
int32_t iBlock; int32_t iBlock;
SBlockData blockData; SBlockData blockData;
@ -432,37 +433,33 @@ static int32_t tsdbSnapWriteData(STsdbSnapWriter* pWriter, uint8_t* pData, uint3
} }
// process // process
TABLEID id = {0}; // TODO TABLEID id = {0}; // TODO
TSKEY minKey = 0; // TODO
TSKEY maxKey = 0; // TODO
while (true) { while (true) {
SBlockIdx* pBlockIdx = NULL; if (pWriter->pBlockIdx == NULL) {
// TODO
if (pWriter->iBlockIdx < taosArrayGetSize(pWriter->aBlockIdx)) { } else {
pBlockIdx = (SBlockIdx*)taosArrayGet(pWriter->aBlockIdx, pWriter->iBlockIdx); int32_t c = tTABLEIDCmprFn(&id, pWriter->pBlockIdx);
}
if (pBlockIdx) {
int32_t c = tTABLEIDCmprFn(&id, pBlockIdx);
if (c == 0) { if (c == 0) {
// merge
} else if (c < 0) { } else if (c < 0) {
code = tsdbSnapWriteAppendData(pWriter, pData, nData); // keep merge
if (code) goto _err;
break;
} else { } else {
// commit the block code = tsdbSnapWriteTableDataEnd(pWriter);
code = tsdbReadBlock(pWriter->pDataFReader, pBlockIdx, &pWriter->mBlock, NULL);
if (code) goto _err; if (code) goto _err;
SBlockIdx blockIdx = {.suid = pBlockIdx->suid, .uid = pBlockIdx->uid}; pWriter->iBlockIdx++;
code = tsdbWriteBlock(pWriter->pDataFWriter, &pWriter->mBlock, NULL, &blockIdx); if (pWriter->iBlockIdx < taosArrayGetSize(pWriter->aBlockIdx)) {
if (code) goto _err; pWriter->pBlockIdx = (SBlockIdx*)taosArrayGet(pWriter->aBlockIdx, pWriter->iBlockIdx);
} else {
pWriter->pBlockIdx = NULL;
}
if (taosArrayPush(pWriter->aBlockIdxN, &blockIdx) == NULL) { if (pWriter->pBlockIdx) {
code = TSDB_CODE_OUT_OF_MEMORY; code = tsdbReadBlock(pWriter->pDataFReader, pWriter->pBlockIdx, &pWriter->mBlock, NULL);
goto _err; if (code) goto _err;
} }
} }
} }