未验证 提交 ee56a739 编写于 作者: S Shengliang Guan 提交者: GitHub

Merge pull request #3510 from taosdata/hotfix/TD-1431

fix TD-1431
...@@ -27,7 +27,8 @@ static int tsdbCompareSchemaVersion(const void *key1, const void *key2); ...@@ -27,7 +27,8 @@ static int tsdbCompareSchemaVersion(const void *key1, const void *key2);
static int tsdbRestoreTable(void *pHandle, void *cont, int contLen); static int tsdbRestoreTable(void *pHandle, void *cont, int contLen);
static void tsdbOrgMeta(void *pHandle); static void tsdbOrgMeta(void *pHandle);
static char * getTagIndexKey(const void *pData); static char * getTagIndexKey(const void *pData);
static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper); static STable *tsdbNewTable();
static STable *tsdbCreateTableFromCfg(STableCfg *pCfg, bool isSuper);
static void tsdbFreeTable(STable *pTable); static void tsdbFreeTable(STable *pTable);
static int tsdbAddTableToMeta(STsdbRepo *pRepo, STable *pTable, bool addIdx, bool lock); static int tsdbAddTableToMeta(STsdbRepo *pRepo, STable *pTable, bool addIdx, bool lock);
static void tsdbRemoveTableFromMeta(STsdbRepo *pRepo, STable *pTable, bool rmFromIdx, bool lock); static void tsdbRemoveTableFromMeta(STsdbRepo *pRepo, STable *pTable, bool rmFromIdx, bool lock);
...@@ -92,7 +93,7 @@ int tsdbCreateTable(TSDB_REPO_T *repo, STableCfg *pCfg) { ...@@ -92,7 +93,7 @@ int tsdbCreateTable(TSDB_REPO_T *repo, STableCfg *pCfg) {
super = tsdbGetTableByUid(pMeta, pCfg->superUid); super = tsdbGetTableByUid(pMeta, pCfg->superUid);
if (super == NULL) { // super table not exists, try to create it if (super == NULL) { // super table not exists, try to create it
newSuper = 1; newSuper = 1;
super = tsdbNewTable(pCfg, true); super = tsdbCreateTableFromCfg(pCfg, true);
if (super == NULL) goto _err; if (super == NULL) goto _err;
} else { } else {
if (TABLE_TYPE(super) != TSDB_SUPER_TABLE || TABLE_UID(super) != pCfg->superUid) { if (TABLE_TYPE(super) != TSDB_SUPER_TABLE || TABLE_UID(super) != pCfg->superUid) {
...@@ -102,7 +103,7 @@ int tsdbCreateTable(TSDB_REPO_T *repo, STableCfg *pCfg) { ...@@ -102,7 +103,7 @@ int tsdbCreateTable(TSDB_REPO_T *repo, STableCfg *pCfg) {
} }
} }
table = tsdbNewTable(pCfg, false); table = tsdbCreateTableFromCfg(pCfg, false);
if (table == NULL) goto _err; if (table == NULL) goto _err;
// Register to meta // Register to meta
...@@ -654,16 +655,25 @@ static char *getTagIndexKey(const void *pData) { ...@@ -654,16 +655,25 @@ static char *getTagIndexKey(const void *pData) {
return res; return res;
} }
static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { static STable *tsdbNewTable() {
STable *pTable = NULL; STable *pTable = (STable *)calloc(1, sizeof(*pTable));
size_t tsize = 0;
pTable = (STable *)calloc(1, sizeof(STable));
if (pTable == NULL) { if (pTable == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY; terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
goto _err; return NULL;
} }
pTable->lastKey = TSKEY_INITIAL_VAL;
return pTable;
}
static STable *tsdbCreateTableFromCfg(STableCfg *pCfg, bool isSuper) {
STable *pTable = NULL;
size_t tsize = 0;
pTable = tsdbNewTable();
if (pTable == NULL) goto _err;
if (isSuper) { if (isSuper) {
pTable->type = TSDB_SUPER_TABLE; pTable->type = TSDB_SUPER_TABLE;
tsize = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN - 1); tsize = strnlen(pCfg->sname, TSDB_TABLE_NAME_LEN - 1);
...@@ -731,8 +741,6 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) { ...@@ -731,8 +741,6 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) {
} }
} }
} }
pTable->lastKey = TSKEY_INITIAL_VAL;
} }
T_REF_INC(pTable); T_REF_INC(pTable);
...@@ -1139,11 +1147,9 @@ static int tsdbEncodeTable(void **buf, STable *pTable) { ...@@ -1139,11 +1147,9 @@ static int tsdbEncodeTable(void **buf, STable *pTable) {
} }
static void *tsdbDecodeTable(void *buf, STable **pRTable) { static void *tsdbDecodeTable(void *buf, STable **pRTable) {
STable *pTable = (STable *)calloc(1, sizeof(STable)); STable *pTable = tsdbNewTable();
if (pTable == NULL) { if (pTable == NULL) return NULL;
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
return NULL;
}
uint8_t type = 0; uint8_t type = 0;
buf = taosDecodeFixedU8(buf, &type); buf = taosDecodeFixedU8(buf, &type);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册