提交 3aa1f8ca 编写于 作者: H Hongze Cheng

more code

上级 01f6823b
...@@ -519,32 +519,54 @@ static int32_t tsdbCompactNextRow(STsdbCompactor *pCompactor) { ...@@ -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); // check if super table exists
} else { if (pRowInfo->suid != pCompactor->tbSkm.suid) {
break; if (metaGetInfo(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->uid, &info, NULL) != TSDB_CODE_SUCCESS) {
} excludeTableId.suid = pRowInfo->suid;
} excludeTableId.uid = 0;
pExcludeTableId = &excludeTableId;
continue;
}
SMetaInfo info; // super table exists
if (pRowInfo->suid) { // child table 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) {
excludeTableId.suid = pRowInfo->suid;
excludeTableId.uid = pRowInfo->uid;
pExcludeTableId = &excludeTableId;
continue;
}
// check if super table exists // table exists
if (pRowInfo->suid != pCompactor->tbSkm.suid) { 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) { 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.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) { ...@@ -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
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 code = tsdbBuildDeleteSkyline(pCompactor->aDelData, 0, taosArrayGetSize(pCompactor->aDelData) - 1,
pCompactor->tbSkm.suid = pRowInfo->suid; pCompactor->aSkyLine);
pCompactor->tbSkm.uid = pRowInfo->uid; TSDB_CHECK_CODE(code, lino, _exit);
tDestroyTSchema(pCompactor->tbSkm.pTSchema);
pCompactor->tbSkm.pTSchema = metaGetTbTSchema(pCompactor->pTsdb->pVnode->pMeta, pRowInfo->suid, -1, 1); pCompactor->aTSDBKEY = (TSDBKEY *)TARRAY_DATA(pCompactor->aSkyLine);
if (pCompactor->tbSkm.pTSchema == NULL) { } else {
code = TSDB_CODE_OUT_OF_MEMORY; pCompactor->aTSDBKEY = NULL;
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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册