more code
This commit is contained in:
parent
01f6823bc1
commit
3aa1f8ca90
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue