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