finish more code
This commit is contained in:
parent
79041d0393
commit
f1d5c3f338
|
@ -540,65 +540,80 @@ static void tsdbStopStream(STsdbRepo *pRepo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tsdbRestoreInfo(STsdbRepo *pRepo) {
|
static int tsdbRestoreInfo(STsdbRepo *pRepo) {
|
||||||
// TODO: add restore meta
|
SFSIter fsiter;
|
||||||
return 0;
|
SReadH readh;
|
||||||
#if 0
|
SDFileSet *pSet;
|
||||||
STsdbMeta * pMeta = pRepo->tsdbMeta;
|
STsdbMeta *pMeta = pRepo->tsdbMeta;
|
||||||
STsdbFileH *pFileH = pRepo->tsdbFileH;
|
STsdbCfg * pCfg = REPO_CFG(pRepo);
|
||||||
SFileGroup *pFGroup = NULL;
|
SBlock * pBlock;
|
||||||
STsdbCfg * pCfg = &(pRepo->config);
|
|
||||||
SBlock * pBlock = NULL;
|
|
||||||
|
|
||||||
SFileGroupIter iter;
|
if (tsdbInitReadH(&readh, pRepo) < 0) {
|
||||||
SRWHelper rhelper = {0};
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (tsdbInitReadHelper(&rhelper, pRepo) < 0) goto _err;
|
tsdbFSIterInit(&fsiter, REPO_FS(pRepo), TSDB_FS_ITER_BACKWARD);
|
||||||
|
|
||||||
|
while ((pSet = tsdbFSIterNext(&fsiter)) != NULL) {
|
||||||
|
if (tsdbSetAndOpenReadFSet(&readh, pSet) < 0) {
|
||||||
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tsdbLoadBlockIdx(&readh) < 0) {
|
||||||
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
tsdbInitFileGroupIter(pFileH, &iter, TSDB_ORDER_DESC);
|
|
||||||
while ((pFGroup = tsdbGetFileGroupNext(&iter)) != NULL) {
|
|
||||||
if (pFGroup->state) continue;
|
|
||||||
if (tsdbSetAndOpenHelperFile(&rhelper, pFGroup) < 0) goto _err;
|
|
||||||
if (tsdbLoadCompIdx(&rhelper, NULL) < 0) goto _err;
|
|
||||||
for (int i = 1; i < pMeta->maxTables; i++) {
|
for (int i = 1; i < pMeta->maxTables; i++) {
|
||||||
STable *pTable = pMeta->tables[i];
|
STable *pTable = pMeta->tables[i];
|
||||||
if (pTable == NULL) continue;
|
if (pTable == NULL) continue;
|
||||||
if (tsdbSetHelperTable(&rhelper, pTable, pRepo) < 0) goto _err;
|
|
||||||
SBlockIdx *pIdx = &(rhelper.curCompIdx);
|
|
||||||
|
|
||||||
TSKEY lastKey = tsdbGetTableLastKeyImpl(pTable);
|
if (tsdbSetReadTable(&readh, pTable) < 0) {
|
||||||
if (pIdx->offset > 0 && lastKey < pIdx->maxKey) {
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
TSKEY lastKey = tsdbGetTableLastKeyImpl(pTable);
|
||||||
|
SBlockIdx *pIdx = readh.pBlkIdx;
|
||||||
|
if (pIdx && lastKey < pIdx->maxKey) {
|
||||||
pTable->lastKey = pIdx->maxKey;
|
pTable->lastKey = pIdx->maxKey;
|
||||||
if (pCfg->cacheLastRow) { // load the block of data
|
|
||||||
if (tsdbLoadCompInfo(&rhelper, NULL) < 0) goto _err;
|
|
||||||
|
|
||||||
pBlock = rhelper.pCompInfo->blocks + pIdx->numOfBlocks - 1;
|
if (pCfg->cacheLastRow) {
|
||||||
if (tsdbLoadBlockData(&rhelper, pBlock, NULL) < 0) goto _err;
|
if (tsdbLoadBlockInfo(&readh, NULL) < 0) {
|
||||||
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// construct the data row
|
pBlock = readh.pBlkInfo->blocks + pIdx->numOfBlocks - 1;
|
||||||
|
|
||||||
|
if (tsdbLoadBlockData(&readh, pBlock, NULL) < 0) {
|
||||||
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the data in row
|
||||||
ASSERT(pTable->lastRow == NULL);
|
ASSERT(pTable->lastRow == NULL);
|
||||||
STSchema *pSchema = tsdbGetTableSchema(pTable);
|
STSchema *pSchema = tsdbGetTableSchema(pTable);
|
||||||
pTable->lastRow = taosTMalloc(schemaTLen(pSchema));
|
pTable->lastRow = taosTMalloc(schemaTLen(pSchema));
|
||||||
if (pTable->lastRow == NULL) {
|
if (pTable->lastRow == NULL) {
|
||||||
goto _err;
|
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
|
||||||
|
tsdbDestroyReadH(&readh);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tdInitDataRow(pTable->lastRow, pSchema);
|
tdInitDataRow(pTable->lastRow, pSchema);
|
||||||
for (int icol = 0; icol < schemaNCols(pSchema); icol++) {
|
for (int icol = 0; icol < schemaNCols(pSchema); icol++) {
|
||||||
STColumn *pCol = schemaColAt(pSchema, icol);
|
STColumn *pCol = schemaColAt(pSchema, icol);
|
||||||
SDataCol *pDataCol = rhelper.pDataCols[0]->cols + icol;
|
SDataCol *pDataCol = readh.pDCols[0]->cols + icol;
|
||||||
tdAppendColVal(pTable->lastRow, tdGetColDataOfRow(pDataCol, pBlock->numOfRows - 1), pCol->type, pCol->bytes,
|
tdAppendColVal(pTable->lastRow, tdGetColDataOfRow(pDataCol, pBlock->numOfRows - 1), pCol->type, pCol->bytes,
|
||||||
pCol->offset);
|
pCol->offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tsdbDestroyHelper(&rhelper);
|
tsdbDestroyReadH(&readh);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
_err:
|
|
||||||
tsdbDestroyHelper(&rhelper);
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue