more code

This commit is contained in:
Hongze Cheng 2022-12-29 16:34:41 +08:00
parent 01f6823bc1
commit 3aa1f8ca90
1 changed files with 58 additions and 60 deletions

View File

@ -519,32 +519,54 @@ static int32_t tsdbCompactNextRow(STsdbCompactor *pCompactor) {
if (pCompactor->pIter) { if (pCompactor->pIter) {
SRowInfo *pRowInfo = &pCompactor->pIter->rowInfo; SRowInfo *pRowInfo = &pCompactor->pIter->rowInfo;
// Table exists if (pRowInfo->uid != pCompactor->tbSkm.uid) {
if (pRowInfo->uid == pCompactor->tbSkm.uid) { SMetaInfo info;
if (pCompactor->aTSDBKEY) { if (pRowInfo->suid) { // child table
// TODO: check if the row is deleted. if deleted, continue, else break
ASSERT(0);
} else {
break;
}
}
SMetaInfo info; // check if super table exists
if (pRowInfo->suid) { // child table if (pRowInfo->suid != pCompactor->tbSkm.suid) {
if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) {
excludeTableId.suid = pRowInfo->suid;
excludeTableId.uid = 0;
pExcludeTableId = &excludeTableId;
continue;
}
// check if super table exists // super table exists
if (pRowInfo->suid != pCompactor->tbSkm.suid) { pCompactor->tbSkm.suid = pRowInfo->suid;
pCompactor->tbSkm.uid = 0;
tDestroyTSchema(pCompactor->tbSkm.pTSchema);
pCompactor->tbSkm.pTSchema = metaGetTbTSchema(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->suid, -1, 1);
if (pCompactor->tbSkm.pTSchema == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY;
TSDB_CHECK_CODE(code, lino, _exit);
}
}
// check if table exists
if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) { if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) {
excludeTableId.suid = pRowInfo->suid; excludeTableId.suid = pRowInfo->suid;
excludeTableId.uid = 0; excludeTableId.uid = pRowInfo->uid;
pExcludeTableId = &excludeTableId; pExcludeTableId = &excludeTableId;
continue; continue;
} }
// super table exists // table exists
pCompactor->tbSkm.uid = pRowInfo->uid;
} else { // normal table
// check if table exists
if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) {
excludeTableId.suid = pRowInfo->suid;
excludeTableId.uid = pRowInfo->uid;
pExcludeTableId = &excludeTableId;
continue;
}
// table exists
pCompactor->tbSkm.suid = pRowInfo->suid; pCompactor->tbSkm.suid = pRowInfo->suid;
pCompactor->tbSkm.uid = 0; pCompactor->tbSkm.uid = pRowInfo->uid;
tDestroyTSchema(pCompactor->tbSkm.pTSchema); tDestroyTSchema(pCompactor->tbSkm.pTSchema);
pCompactor->tbSkm.pTSchema = metaGetTbTSchema(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->suid, -1, 1); pCompactor->tbSkm.pTSchema = metaGetTbTSchema(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->suid, -1, 1);
if (pCompactor->tbSkm.pTSchema == NULL) { if (pCompactor->tbSkm.pTSchema == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY; code = TSDB_CODE_OUT_OF_MEMORY;
@ -552,57 +574,33 @@ static int32_t tsdbCompactNextRow(STsdbCompactor *pCompactor) {
} }
} }
// check if table exists // load delData and build the skyline
if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) { if (pCompactor->pDelFReader) {
excludeTableId.suid = pRowInfo->suid; SDelIdx *pDelIdx =
excludeTableId.uid = pRowInfo->uid; taosArraySearch(pCompactor->aDelIdx, &(SDelIdx){.suid = pRowInfo->suid, .uid = pRowInfo->uid},
pExcludeTableId = &excludeTableId; (__compar_fn_t)tDelIdxCmprFn, TD_EQ);
continue; if (pDelIdx) {
} code = tsdbReadDelData(pCompactor->pDelFReader, pDelIdx, pCompactor->aDelData);
TSDB_CHECK_CODE(code, lino, _exit);
// table exists code = tsdbBuildDeleteSkyline(pCompactor->aDelData, 0, taosArrayGetSize(pCompactor->aDelData) - 1,
pCompactor->tbSkm.uid = pRowInfo->uid; pCompactor->aSkyLine);
} else { // normal table TSDB_CHECK_CODE(code, lino, _exit);
// check if table exists
if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) {
excludeTableId.suid = pRowInfo->suid;
excludeTableId.uid = pRowInfo->uid;
pExcludeTableId = &excludeTableId;
continue;
}
// table exists pCompactor->aTSDBKEY = (TSDBKEY *)TARRAY_DATA(pCompactor->aSkyLine);
pCompactor->tbSkm.suid = pRowInfo->suid; } else {
pCompactor->tbSkm.uid = pRowInfo->uid; pCompactor->aTSDBKEY = NULL;
tDestroyTSchema(pCompactor->tbSkm.pTSchema); }
pCompactor->tbSkm.pTSchema = metaGetTbTSchema(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->suid, -1, 1);
if (pCompactor->tbSkm.pTSchema == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY;
TSDB_CHECK_CODE(code, lino, _exit);
} }
} }
// load delData and build the skyline ASSERT(pRowInfo->uid == pCompactor->tbSkm.uid);
if (pCompactor->pDelFReader) {
SDelIdx *pDelIdx =
taosArraySearch(pCompactor->aDelIdx, &(SDelIdx){.suid = pRowInfo->suid, .uid = pRowInfo->uid},
(__compar_fn_t)tDelIdxCmprFn, TD_EQ);
if (pDelIdx) {
code = tsdbReadDelData(pCompactor->pDelFReader, pDelIdx, pCompactor->aDelData);
TSDB_CHECK_CODE(code, lino, _exit);
code = tsdbBuildDeleteSkyline(pCompactor->aDelData, 0, taosArrayGetSize(pCompactor->aDelData) - 1, if (pCompactor->aTSDBKEY && 0 /* TODO: the row is deleted */) {
pCompactor->aSkyLine); continue;
TSDB_CHECK_CODE(code, lino, _exit); } else {
break;
pCompactor->aTSDBKEY = (TSDBKEY *)TARRAY_DATA(pCompactor->aDelData);
} else {
pCompactor->aTSDBKEY = NULL;
}
} }
break;
} else { } else {
// iter end, just break out // iter end, just break out
break; break;