diff --git a/src/mnode/src/mnodeTable.c b/src/mnode/src/mnodeTable.c index a30b359970adb40f8fce1777d9a96fed10dcf6ce..93ee96a67455b43b0386d2d4a6f02d8bb77ec036 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -182,14 +182,19 @@ static int32_t mnodeChildTableActionUpdate(SSdbOper *pOper) { SChildTableObj *pNew = pOper->pObj; SChildTableObj *pTable = mnodeGetChildTable(pNew->info.tableId); if (pTable != pNew) { - void *oldTableId = pTable->info.tableId; + void *oldTableId = pTable->info.tableId; void *oldSql = pTable->sql; void *oldSchema = pTable->schema; + void *oldSTable = pTable->superTable; int32_t oldRefCount = pTable->refCount; + memcpy(pTable, pNew, sizeof(SChildTableObj)); + pTable->refCount = oldRefCount; pTable->sql = pNew->sql; pTable->schema = pNew->schema; + pTable->superTable = oldSTable; + free(pNew); free(oldSql); free(oldSchema); diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index efa823d5311eb0272076f98a719b2baf12b86e68..10dfb2a28a7bbc21ffcbaa134f83bbbc9226563e 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -149,17 +149,8 @@ static int32_t mnodeVgroupActionUpdate(SSdbOper *pOper) { } } - void *idPool = pVgroup->idPool; - void *tableList = pVgroup->tableList; - int32_t oldRefCount = pVgroup->refCount; - - memcpy(pVgroup, pNew, sizeof(SVgObj)); - - free(pNew); - pVgroup->refCount = oldRefCount; - pVgroup->idPool = idPool; - pVgroup->tableList = tableList; - + memcpy(pVgroup, pNew, tsVgUpdateSize); + for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { SDnodeObj *pDnode = mnodeGetDnode(pVgroup->vnodeGid[i].dnodeId); pVgroup->vnodeGid[i].pDnode = pDnode;