diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index c4e929e3cd7dc4d4dac55b142d00092425e89d2d..453fbdc86b03729bd1fc54ed5264c3be78dc9e54 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -506,7 +506,7 @@ int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks); void tsdbAdjustCacheBlocks(STsdbCache *pCache); int32_t tsdbGetMetaFileName(char *rootDir, char *fname); int tsdbUpdateFileHeader(SFile *pFile, uint32_t version); -int tsdbUpdateTable(STable *pTable, STableCfg *pCfg); +int tsdbUpdateTable(STsdbMeta *pMeta, STable *pTable, STableCfg *pCfg); #ifdef __cplusplus } diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index ee927d0ccd5544df6a9f19d997bbff1b0c5f0a3f..8f58e5fe06e97967085ebe72fce7ba983e0faf7b 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -437,7 +437,7 @@ int tsdbUpdateTagValue(TsdbRepoT *repo, SUpdateTableTagValMsg *pMsg) { STable *super = tsdbGetTableByUid(pMeta, pTableCfg->superUid); ASSERT(super != NULL); - int32_t code = tsdbUpdateTable(super, pTableCfg); + int32_t code = tsdbUpdateTable(pMeta, super, pTableCfg); if (code != TSDB_CODE_SUCCESS) { return code; } diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index dcea9ac46b817771d9110260d5301ff3c4243819..16e034c2284f02c631379a3d97bd05eb8f950139 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -370,19 +370,29 @@ static int tsdbUpdateTableTagSchema(STable *pTable, STSchema *newSchema) { return TSDB_CODE_SUCCESS; } -int tsdbUpdateTable(STable *pTable, STableCfg *pCfg) { +int tsdbUpdateTable(STsdbMeta *pMeta, STable *pTable, STableCfg *pCfg) { ASSERT(pTable->type != TSDB_CHILD_TABLE); + bool isChanged = false; if (pTable->type == TSDB_SUPER_TABLE) { if (schemaVersion(pTable->tagSchema) < schemaVersion(pCfg->tagSchema)) { int32_t code = tsdbUpdateTableTagSchema(pTable, pCfg->tagSchema); if (code != TSDB_CODE_SUCCESS) return code; } + isChanged = true; } { // TODO: try to update the data schema } + if (isChanged) { + char *buf = malloc(1024 * 1024); + int bufLen = 0; + tsdbEncodeTable(pTable, buf, &bufLen); + tsdbInsertMetaRecord(pMeta->mfh, pTable->tableId.uid, buf, bufLen); + free(buf); + } + return TSDB_CODE_SUCCESS; } @@ -411,7 +421,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { } else { if (super->type != TSDB_SUPER_TABLE) return -1; if (super->tableId.uid != pCfg->superUid) return -1; - tsdbUpdateTable(super, pCfg); + tsdbUpdateTable(pMeta, super, pCfg); } }