[TD-4352]refactor duplicate insert new table actions to function
This commit is contained in:
parent
fe05c1be0f
commit
5eca4ebd27
|
@ -44,6 +44,7 @@ static int tsdbRemoveTableFromStore(STsdbRepo *pRepo, STable *pTable);
|
|||
static int tsdbRmTableFromMeta(STsdbRepo *pRepo, STable *pTable);
|
||||
static int tsdbAdjustMetaTables(STsdbRepo *pRepo, int tid);
|
||||
static int tsdbCheckTableTagVal(SKVRow *pKVRow, STSchema *pSchema);
|
||||
static int tsdbInsertNewTableAction(STsdbRepo *pRepo, STable* pTable);
|
||||
|
||||
// ------------------ OUTER FUNCTIONS ------------------
|
||||
int tsdbCreateTable(STsdbRepo *repo, STableCfg *pCfg) {
|
||||
|
@ -127,21 +128,16 @@ int tsdbCreateTable(STsdbRepo *repo, STableCfg *pCfg) {
|
|||
tsdbUnlockRepoMeta(pRepo);
|
||||
|
||||
// Write to memtable action
|
||||
// TODO: refactor duplicate codes
|
||||
int tlen = 0;
|
||||
void *pBuf = NULL;
|
||||
if (newSuper || superChanged) {
|
||||
tlen = tsdbGetTableEncodeSize(TSDB_UPDATE_META, super);
|
||||
pBuf = tsdbAllocBytes(pRepo, tlen);
|
||||
if (pBuf == NULL) goto _err;
|
||||
void *tBuf = tsdbInsertTableAct(pRepo, TSDB_UPDATE_META, pBuf, super);
|
||||
ASSERT(POINTER_DISTANCE(tBuf, pBuf) == tlen);
|
||||
// add insert new super table action
|
||||
if (tsdbInsertNewTableAction(pRepo, super) != 0) {
|
||||
goto _err;
|
||||
}
|
||||
}
|
||||
// add insert new table action
|
||||
if (tsdbInsertNewTableAction(pRepo, table) != 0) {
|
||||
goto _err;
|
||||
}
|
||||
tlen = tsdbGetTableEncodeSize(TSDB_UPDATE_META, table);
|
||||
pBuf = tsdbAllocBytes(pRepo, tlen);
|
||||
if (pBuf == NULL) goto _err;
|
||||
void *tBuf = tsdbInsertTableAct(pRepo, TSDB_UPDATE_META, pBuf, table);
|
||||
ASSERT(POINTER_DISTANCE(tBuf, pBuf) == tlen);
|
||||
|
||||
if (tsdbCheckCommit(pRepo) < 0) return -1;
|
||||
|
||||
|
@ -382,7 +378,7 @@ int tsdbUpdateTableTagValue(STsdbRepo *repo, SUpdateTableTagValMsg *pMsg) {
|
|||
tdDestroyTSchemaBuilder(&schemaBuilder);
|
||||
}
|
||||
|
||||
// Chage in memory
|
||||
// Change in memory
|
||||
if (pNewSchema != NULL) { // change super table tag schema
|
||||
TSDB_WLOCK_TABLE(pTable->pSuper);
|
||||
STSchema *pOldSchema = pTable->pSuper->tagSchema;
|
||||
|
@ -425,6 +421,21 @@ int tsdbUpdateTableTagValue(STsdbRepo *repo, SUpdateTableTagValMsg *pMsg) {
|
|||
}
|
||||
|
||||
// ------------------ INTERNAL FUNCTIONS ------------------
|
||||
static int tsdbInsertNewTableAction(STsdbRepo *pRepo, STable* pTable) {
|
||||
int tlen = 0;
|
||||
void *pBuf = NULL;
|
||||
|
||||
tlen = tsdbGetTableEncodeSize(TSDB_UPDATE_META, pTable);
|
||||
pBuf = tsdbAllocBytes(pRepo, tlen);
|
||||
if (pBuf == NULL) {
|
||||
return -1;
|
||||
}
|
||||
void *tBuf = tsdbInsertTableAct(pRepo, TSDB_UPDATE_META, pBuf, pTable);
|
||||
ASSERT(POINTER_DISTANCE(tBuf, pBuf) == tlen);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
STsdbMeta *tsdbNewMeta(STsdbCfg *pCfg) {
|
||||
STsdbMeta *pMeta = (STsdbMeta *)calloc(1, sizeof(*pMeta));
|
||||
if (pMeta == NULL) {
|
||||
|
@ -616,6 +627,7 @@ int16_t tsdbGetLastColumnsIndexByColId(STable* pTable, int16_t colId) {
|
|||
if (pTable->lastCols == NULL) {
|
||||
return -1;
|
||||
}
|
||||
// TODO: use binary search instead
|
||||
for (int16_t i = 0; i < pTable->maxColNum; ++i) {
|
||||
if (pTable->lastCols[i].colId == colId) {
|
||||
return i;
|
||||
|
@ -740,10 +752,7 @@ void tsdbUpdateTableSchema(STsdbRepo *pRepo, STable *pTable, STSchema *pSchema,
|
|||
TSDB_WUNLOCK_TABLE(pCTable);
|
||||
|
||||
if (insertAct) {
|
||||
int tlen = tsdbGetTableEncodeSize(TSDB_UPDATE_META, pCTable);
|
||||
void *buf = tsdbAllocBytes(pRepo, tlen);
|
||||
ASSERT(buf != NULL);
|
||||
tsdbInsertTableAct(pRepo, TSDB_UPDATE_META, buf, pCTable);
|
||||
ASSERT(tsdbInsertNewTableAction(pRepo, pCTable) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue