提交 9b338ae0 编写于 作者: H Hongze Cheng

more code

上级 c7267c7c
...@@ -725,7 +725,8 @@ typedef struct { ...@@ -725,7 +725,8 @@ typedef struct {
SArray *aSkyLine; // SArray<TSDBKEY> SArray *aSkyLine; // SArray<TSDBKEY>
int32_t iDelIdx; int32_t iDelIdx;
int32_t iSkyLine; int32_t iSkyLine;
int8_t onGoing; TSDBKEY *pDKey;
TSDBKEY dKey;
// Reader // Reader
SDataFReader *pReader; SDataFReader *pReader;
...@@ -751,8 +752,7 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI ...@@ -751,8 +752,7 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
// tombstone // tombstone
for (;;) { for (;;) {
if (pCompactor->iDelIdx >= taosArrayGetSize(pCompactor->aDelIdx)) { if (pCompactor->iDelIdx >= taosArrayGetSize(pCompactor->aDelIdx)) {
if (pCompactor->aSkyLine) taosArrayClear(pCompactor->aSkyLine); pCompactor->pDKey = NULL;
pCompactor->iSkyLine = 0;
break; break;
} }
...@@ -771,10 +771,18 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI ...@@ -771,10 +771,18 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
TSDB_CHECK_CODE(code, lino, _exit); TSDB_CHECK_CODE(code, lino, _exit);
pCompactor->iSkyLine = 0; pCompactor->iSkyLine = 0;
if (pCompactor->iSkyLine < taosArrayGetSize(pCompactor->aSkyLine)) {
TSDBKEY *pKey = (TSDBKEY *)taosArrayGet(pCompactor->aSkyLine, pCompactor->iSkyLine);
pCompactor->dKey.version = 0;
pCompactor->dKey.ts = pKey->ts;
pCompactor->pDKey = &pCompactor->dKey;
} else {
pCompactor->pDKey = NULL;
}
break; break;
} else { } else {
if (pCompactor->aSkyLine) taosArrayClear(pCompactor->aSkyLine); pCompactor->pDKey = NULL;
pCompactor->iSkyLine = 0;
break; break;
} }
} }
...@@ -859,38 +867,45 @@ _exit: ...@@ -859,38 +867,45 @@ _exit:
} }
static bool tsdbCompactRowIsDeleted(STsdbCompactor *pCompactor, TSDBROW *pRow) { static bool tsdbCompactRowIsDeleted(STsdbCompactor *pCompactor, TSDBROW *pRow) {
// TSDBKEY tKey = TSDBROW_KEY(pRow); TSDBKEY tKey = TSDBROW_KEY(pRow);
// while (tKey.ts > pCompactor->sKey.ts) {
// pCompactor->sKey.version = pCompactor->aTSDBKEY[pCompactor->iKey].version;
// pCompactor->iKey++;
// if (pCompactor->iKey < taosArrayGetSize(pCompactor->aSkyLine)) {
// pCompactor->sKey.ts = pCompactor->aTSDBKEY[pCompactor->iKey].ts;
// } else {
// pCompactor->sKey.ts = TSKEY_MAX;
// }
// }
// if (tKey.ts < pCompactor->sKey.ts) { if (tKey.ts > pCompactor->pDKey->ts) {
// if (tKey.version > pCompactor->sKey.version) { while (tKey.ts > pCompactor->pDKey->ts) {
// return false; TSDBKEY *pKey = (TSDBKEY *)taosArrayGet(pCompactor->aSkyLine, pCompactor->iSkyLine);
// } else {
// return true; pCompactor->pDKey->version = pKey->version;
// } pCompactor->iSkyLine++;
// } else if (tKey.ts == pCompactor->sKey.ts) { if (pCompactor->iSkyLine < taosArrayGetSize(pCompactor->aSkyLine)) {
// int64_t version; TSDBKEY *pKey = (TSDBKEY *)taosArrayGet(pCompactor->aSkyLine, pCompactor->iSkyLine);
// if (pCompactor->iKey < taosArrayGetSize(pCompactor->aSkyLine)) {
// version = TMAX(pCompactor->sKey.version, pCompactor->aTSDBKEY[pCompactor->iKey].version); pCompactor->dKey.ts = pKey->ts;
// } else { } else {
// version = pCompactor->sKey.version; pCompactor->pDKey = NULL;
// } return false;
}
// if (tKey.version > version) { }
// return false; }
// } else {
// return true; if (tKey.ts < pCompactor->pDKey->ts) {
// } if (tKey.version > pCompactor->pDKey->version) {
// } return false;
} else {
return true;
}
} else if (tKey.ts == pCompactor->pDKey->ts) {
int64_t version;
if (pCompactor->iSkyLine < taosArrayGetSize(pCompactor->aSkyLine)) {
version = TMAX(pCompactor->pDKey->version, pCompactor->aTSDBKEY[pCompactor->iKey].version);
} else {
version = pCompactor->pDKey->version;
}
if (tKey.version > version) {
return false;
} else {
return true;
}
}
return false; return false;
} }
...@@ -919,7 +934,7 @@ static int32_t tsdbCompactWriteTableData(STsdbCompactor *pCompactor, SRowInfo *p ...@@ -919,7 +934,7 @@ static int32_t tsdbCompactWriteTableData(STsdbCompactor *pCompactor, SRowInfo *p
} }
// check if row is deleted // check if row is deleted
if (pCompactor->onGoing && tsdbCompactRowIsDeleted(pCompactor, &pRowInfo->row)) goto _exit; if (pCompactor->pDKey && tsdbCompactRowIsDeleted(pCompactor, &pRowInfo->row)) goto _exit;
code = tBlockDataUpsertRow(&pCompactor->bData, &pRowInfo->row, NULL, pRowInfo->uid); code = tBlockDataUpsertRow(&pCompactor->bData, &pRowInfo->row, NULL, pRowInfo->uid);
TSDB_CHECK_CODE(code, lino, _exit); TSDB_CHECK_CODE(code, lino, _exit);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册