[TD-225]refactor codes.
This commit is contained in:
parent
52648e9327
commit
5757003fa3
|
@ -24,10 +24,6 @@ extern "C" {
|
||||||
#include "tstoken.h"
|
#include "tstoken.h"
|
||||||
#include "tsclient.h"
|
#include "tsclient.h"
|
||||||
|
|
||||||
#define VALIDNUMOFCOLS(x) ((x) >= TSDB_MIN_COLUMNS && (x) <= TSDB_MAX_COLUMNS)
|
|
||||||
|
|
||||||
#define VALIDNUMOFTAGS(x) ((x) >= 0 && (x) <= TSDB_MAX_TAGS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the number of tags of this table
|
* get the number of tags of this table
|
||||||
* @param pTableMeta
|
* @param pTableMeta
|
||||||
|
@ -79,26 +75,6 @@ SSchema *tscGetTableColumnSchema(const STableMeta *pMeta, int32_t colIndex);
|
||||||
*/
|
*/
|
||||||
SSchema* tscGetColumnSchemaById(STableMeta* pTableMeta, int16_t colId);
|
SSchema* tscGetColumnSchemaById(STableMeta* pTableMeta, int16_t colId);
|
||||||
|
|
||||||
/**
|
|
||||||
* check if the schema is valid or not, including following aspects:
|
|
||||||
* 1. number of columns
|
|
||||||
* 2. column types
|
|
||||||
* 3. column length
|
|
||||||
* 4. column names
|
|
||||||
* 5. total length
|
|
||||||
*
|
|
||||||
* @param pSchema
|
|
||||||
* @param numOfCols
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the schema for the "tbname" column. it is a built column
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
SSchema tscGetTbnameColumnSchema();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create the table meta from the msg
|
* create the table meta from the msg
|
||||||
* @param pTableMetaMsg
|
* @param pTableMetaMsg
|
||||||
|
|
|
@ -66,68 +66,6 @@ STableComInfo tscGetTableInfo(const STableMeta* pTableMeta) {
|
||||||
return pTableMeta->tableInfo;
|
return pTableMeta->tableInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool doValidateSchema(SSchema* pSchema, int32_t numOfCols, int32_t maxLen) {
|
|
||||||
int32_t rowLen = 0;
|
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfCols; ++i) {
|
|
||||||
// 1. valid types
|
|
||||||
if (!isValidDataType(pSchema[i].type)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. valid length for each type
|
|
||||||
if (pSchema[i].type == TSDB_DATA_TYPE_BINARY) {
|
|
||||||
if (pSchema[i].bytes > TSDB_MAX_BINARY_LEN) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (pSchema[i].type == TSDB_DATA_TYPE_NCHAR) {
|
|
||||||
if (pSchema[i].bytes > TSDB_MAX_NCHAR_LEN) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (pSchema[i].bytes != tDataTypes[pSchema[i].type].bytes) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. valid column names
|
|
||||||
for (int32_t j = i + 1; j < numOfCols; ++j) {
|
|
||||||
if (strncasecmp(pSchema[i].name, pSchema[j].name, sizeof(pSchema[i].name) - 1) == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rowLen += pSchema[i].bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rowLen <= maxLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags) {
|
|
||||||
if (!VALIDNUMOFCOLS(numOfCols)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!VALIDNUMOFTAGS(numOfTags)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* first column must be the timestamp, which is a primary key */
|
|
||||||
if (pSchema[0].type != TSDB_DATA_TYPE_TIMESTAMP) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!doValidateSchema(pSchema, numOfCols, TSDB_MAX_BYTES_PER_ROW)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!doValidateSchema(&pSchema[numOfCols], numOfTags, TSDB_MAX_TAGS_LEN)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
SSchema* tscGetTableColumnSchema(const STableMeta* pTableMeta, int32_t colIndex) {
|
SSchema* tscGetTableColumnSchema(const STableMeta* pTableMeta, int32_t colIndex) {
|
||||||
assert(pTableMeta != NULL);
|
assert(pTableMeta != NULL);
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,6 @@
|
||||||
#include "ttimer.h"
|
#include "ttimer.h"
|
||||||
#include "tlockfree.h"
|
#include "tlockfree.h"
|
||||||
|
|
||||||
///SRpcCorEpSet tscMgmtEpSet;
|
|
||||||
|
|
||||||
int (*tscBuildMsg[TSDB_SQL_MAX])(SSqlObj *pSql, SSqlInfo *pInfo) = {0};
|
int (*tscBuildMsg[TSDB_SQL_MAX])(SSqlObj *pSql, SSqlInfo *pInfo) = {0};
|
||||||
|
|
||||||
int (*tscProcessMsgRsp[TSDB_SQL_MAX])(SSqlObj *pSql);
|
int (*tscProcessMsgRsp[TSDB_SQL_MAX])(SSqlObj *pSql);
|
||||||
|
@ -1157,7 +1155,7 @@ int32_t tscBuildDropTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
|
|
||||||
SCMDropTableMsg *pDropTableMsg = (SCMDropTableMsg*)pCmd->payload;
|
SCMDropTableMsg *pDropTableMsg = (SCMDropTableMsg*)pCmd->payload;
|
||||||
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0);
|
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0);
|
||||||
strcpy(pDropTableMsg->tableId, pTableMetaInfo->name);
|
strcpy(pDropTableMsg->tableFname, pTableMetaInfo->name);
|
||||||
pDropTableMsg->igNotExists = pInfo->pDCLInfo->existsCheck ? 1 : 0;
|
pDropTableMsg->igNotExists = pInfo->pDCLInfo->existsCheck ? 1 : 0;
|
||||||
|
|
||||||
pCmd->msgType = TSDB_MSG_TYPE_CM_DROP_TABLE;
|
pCmd->msgType = TSDB_MSG_TYPE_CM_DROP_TABLE;
|
||||||
|
@ -1347,7 +1345,7 @@ int tscBuildCreateTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
pMsg += sizeof(SCreateTableMsg);
|
pMsg += sizeof(SCreateTableMsg);
|
||||||
|
|
||||||
SCreatedTableInfo* p = taosArrayGet(list, i);
|
SCreatedTableInfo* p = taosArrayGet(list, i);
|
||||||
strcpy(pCreate->tableId, p->fullname);
|
strcpy(pCreate->tableFname, p->fullname);
|
||||||
pCreate->igExists = (p->igExist)? 1 : 0;
|
pCreate->igExists = (p->igExist)? 1 : 0;
|
||||||
|
|
||||||
// use dbinfo from table id without modifying current db info
|
// use dbinfo from table id without modifying current db info
|
||||||
|
@ -1360,7 +1358,7 @@ int tscBuildCreateTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
} else { // create (super) table
|
} else { // create (super) table
|
||||||
pCreateTableMsg->numOfTables = htonl(1); // only one table will be created
|
pCreateTableMsg->numOfTables = htonl(1); // only one table will be created
|
||||||
|
|
||||||
strcpy(pCreateMsg->tableId, pTableMetaInfo->name);
|
strcpy(pCreateMsg->tableFname, pTableMetaInfo->name);
|
||||||
|
|
||||||
// use dbinfo from table id without modifying current db info
|
// use dbinfo from table id without modifying current db info
|
||||||
tscGetDBInfoFromTableFullName(pTableMetaInfo->name, pCreateMsg->db);
|
tscGetDBInfoFromTableFullName(pTableMetaInfo->name, pCreateMsg->db);
|
||||||
|
@ -1431,7 +1429,7 @@ int tscBuildAlterTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
SAlterTableMsg *pAlterTableMsg = (SAlterTableMsg *)pCmd->payload;
|
SAlterTableMsg *pAlterTableMsg = (SAlterTableMsg *)pCmd->payload;
|
||||||
tscGetDBInfoFromTableFullName(pTableMetaInfo->name, pAlterTableMsg->db);
|
tscGetDBInfoFromTableFullName(pTableMetaInfo->name, pAlterTableMsg->db);
|
||||||
|
|
||||||
strcpy(pAlterTableMsg->tableId, pTableMetaInfo->name);
|
strcpy(pAlterTableMsg->tableFname, pTableMetaInfo->name);
|
||||||
pAlterTableMsg->type = htons(pAlterInfo->type);
|
pAlterTableMsg->type = htons(pAlterInfo->type);
|
||||||
|
|
||||||
pAlterTableMsg->numOfCols = htons(tscNumOfFields(pQueryInfo));
|
pAlterTableMsg->numOfCols = htons(tscNumOfFields(pQueryInfo));
|
||||||
|
@ -1630,7 +1628,7 @@ int tscBuildTableMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||||
|
|
||||||
STableInfoMsg *pInfoMsg = (STableInfoMsg *)pCmd->payload;
|
STableInfoMsg *pInfoMsg = (STableInfoMsg *)pCmd->payload;
|
||||||
strcpy(pInfoMsg->tableId, pTableMetaInfo->name);
|
strcpy(pInfoMsg->tableFname, pTableMetaInfo->name);
|
||||||
pInfoMsg->createFlag = htons(pSql->cmd.autoCreated ? 1 : 0);
|
pInfoMsg->createFlag = htons(pSql->cmd.autoCreated ? 1 : 0);
|
||||||
|
|
||||||
char *pMsg = (char *)pInfoMsg + sizeof(STableInfoMsg);
|
char *pMsg = (char *)pInfoMsg + sizeof(STableInfoMsg);
|
||||||
|
@ -1799,7 +1797,7 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
|
||||||
if ((pMetaMsg->tableType != TSDB_SUPER_TABLE) &&
|
if ((pMetaMsg->tableType != TSDB_SUPER_TABLE) &&
|
||||||
(pMetaMsg->tid <= 0 || pMetaMsg->vgroup.vgId < 2 || pMetaMsg->vgroup.numOfEps <= 0)) {
|
(pMetaMsg->tid <= 0 || pMetaMsg->vgroup.vgId < 2 || pMetaMsg->vgroup.numOfEps <= 0)) {
|
||||||
tscError("invalid value in table numOfEps:%d, vgId:%d tid:%d, name:%s", pMetaMsg->vgroup.numOfEps, pMetaMsg->vgroup.vgId,
|
tscError("invalid value in table numOfEps:%d, vgId:%d tid:%d, name:%s", pMetaMsg->vgroup.numOfEps, pMetaMsg->vgroup.vgId,
|
||||||
pMetaMsg->tid, pMetaMsg->tableId);
|
pMetaMsg->tid, pMetaMsg->tableFname);
|
||||||
return TSDB_CODE_TSC_INVALID_VALUE;
|
return TSDB_CODE_TSC_INVALID_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1832,11 +1830,15 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
|
||||||
pSchema++;
|
pSchema++;
|
||||||
}
|
}
|
||||||
|
|
||||||
STableMeta* pTableMeta = tscCreateTableMetaFromMsg(pMetaMsg);
|
|
||||||
|
|
||||||
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0);
|
STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0);
|
||||||
assert(pTableMetaInfo->pTableMeta == NULL);
|
assert(pTableMetaInfo->pTableMeta == NULL);
|
||||||
|
|
||||||
|
STableMeta* pTableMeta = tscCreateTableMetaFromMsg(pMetaMsg);
|
||||||
|
if (!isValidSchema(pTableMeta->schema, pTableMeta->tableInfo.numOfColumns, pTableMeta->tableInfo.numOfTags)) {
|
||||||
|
tscError("%p invalid table meta from mnode, name:%s", pSql, pTableMetaInfo->name);
|
||||||
|
return TSDB_CODE_TSC_INVALID_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (pTableMeta->tableType == TSDB_CHILD_TABLE) {
|
if (pTableMeta->tableType == TSDB_CHILD_TABLE) {
|
||||||
// check if super table hashmap or not
|
// check if super table hashmap or not
|
||||||
int32_t len = (int32_t) strnlen(pTableMeta->sTableName, TSDB_TABLE_FNAME_LEN);
|
int32_t len = (int32_t) strnlen(pTableMeta->sTableName, TSDB_TABLE_FNAME_LEN);
|
||||||
|
|
|
@ -39,4 +39,18 @@ SColumnFilterInfo* tscFilterInfoClone(const SColumnFilterInfo* src, int32_t numO
|
||||||
|
|
||||||
SSchema tscGetTbnameColumnSchema();
|
SSchema tscGetTbnameColumnSchema();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check if the schema is valid or not, including following aspects:
|
||||||
|
* 1. number of columns
|
||||||
|
* 2. column types
|
||||||
|
* 3. column length
|
||||||
|
* 4. column names
|
||||||
|
* 5. total length
|
||||||
|
*
|
||||||
|
* @param pSchema
|
||||||
|
* @param numOfCols
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags);
|
||||||
|
|
||||||
#endif // TDENGINE_NAME_H
|
#endif // TDENGINE_NAME_H
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
#include "ttokendef.h"
|
#include "ttokendef.h"
|
||||||
#include "tvariant.h"
|
#include "tvariant.h"
|
||||||
|
|
||||||
|
#define VALIDNUMOFCOLS(x) ((x) >= TSDB_MIN_COLUMNS && (x) <= TSDB_MAX_COLUMNS)
|
||||||
|
|
||||||
|
#define VALIDNUMOFTAGS(x) ((x) >= 0 && (x) <= TSDB_MAX_TAGS)
|
||||||
|
|
||||||
// todo refactor
|
// todo refactor
|
||||||
UNUSED_FUNC static FORCE_INLINE const char* skipSegments(const char* input, char delim, int32_t num) {
|
UNUSED_FUNC static FORCE_INLINE const char* skipSegments(const char* input, char delim, int32_t num) {
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
|
@ -206,3 +210,65 @@ SSchema tscGetTbnameColumnSchema() {
|
||||||
strcpy(s.name, TSQL_TBNAME_L);
|
strcpy(s.name, TSQL_TBNAME_L);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool doValidateSchema(SSchema* pSchema, int32_t numOfCols, int32_t maxLen) {
|
||||||
|
int32_t rowLen = 0;
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
|
// 1. valid types
|
||||||
|
if (!isValidDataType(pSchema[i].type)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. valid length for each type
|
||||||
|
if (pSchema[i].type == TSDB_DATA_TYPE_BINARY) {
|
||||||
|
if (pSchema[i].bytes > TSDB_MAX_BINARY_LEN) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (pSchema[i].type == TSDB_DATA_TYPE_NCHAR) {
|
||||||
|
if (pSchema[i].bytes > TSDB_MAX_NCHAR_LEN) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (pSchema[i].bytes != tDataTypes[pSchema[i].type].bytes) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. valid column names
|
||||||
|
for (int32_t j = i + 1; j < numOfCols; ++j) {
|
||||||
|
if (strncasecmp(pSchema[i].name, pSchema[j].name, sizeof(pSchema[i].name) - 1) == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rowLen += pSchema[i].bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rowLen <= maxLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags) {
|
||||||
|
if (!VALIDNUMOFCOLS(numOfCols)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!VALIDNUMOFTAGS(numOfTags)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* first column must be the timestamp, which is a primary key */
|
||||||
|
if (pSchema[0].type != TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doValidateSchema(pSchema, numOfCols, TSDB_MAX_BYTES_PER_ROW)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doValidateSchema(&pSchema[numOfCols], numOfTags, TSDB_MAX_TAGS_LEN)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -216,7 +216,7 @@ void *dnodeSendCfgTableToRecv(int32_t vgId, int32_t tid) {
|
||||||
int16_t numOfTags = htons(pTable->numOfTags);
|
int16_t numOfTags = htons(pTable->numOfTags);
|
||||||
int32_t tableId = htonl(pTable->tid);
|
int32_t tableId = htonl(pTable->tid);
|
||||||
uint64_t uid = htobe64(pTable->uid);
|
uint64_t uid = htobe64(pTable->uid);
|
||||||
dInfo("table:%s, numOfColumns:%d numOfTags:%d tid:%d uid:%" PRIu64, pTable->tableId, numOfColumns, numOfTags, tableId, uid);
|
dInfo("table:%s, numOfColumns:%d numOfTags:%d tid:%d uid:%" PRIu64, pTable->tableFname, numOfColumns, numOfTags, tableId, uid);
|
||||||
|
|
||||||
return rpcRsp.pCont;
|
return rpcRsp.pCont;
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,14 +260,14 @@ typedef struct {
|
||||||
uint64_t uid;
|
uint64_t uid;
|
||||||
uint64_t superTableUid;
|
uint64_t superTableUid;
|
||||||
uint64_t createdTime;
|
uint64_t createdTime;
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
char superTableId[TSDB_TABLE_FNAME_LEN];
|
char stableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
char data[];
|
char data[];
|
||||||
} SMDCreateTableMsg;
|
} SMDCreateTableMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t len; // one create table message
|
int32_t len; // one create table message
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
|
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
|
||||||
int8_t igExists;
|
int8_t igExists;
|
||||||
int8_t getMeta;
|
int8_t getMeta;
|
||||||
|
@ -284,12 +284,12 @@ typedef struct {
|
||||||
} SCMCreateTableMsg;
|
} SCMCreateTableMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
int8_t igNotExists;
|
int8_t igNotExists;
|
||||||
} SCMDropTableMsg;
|
} SCMDropTableMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
|
char db[TSDB_ACCT_ID_LEN + TSDB_DB_NAME_LEN];
|
||||||
int16_t type; /* operation type */
|
int16_t type; /* operation type */
|
||||||
int16_t numOfCols; /* number of schema */
|
int16_t numOfCols; /* number of schema */
|
||||||
|
@ -369,14 +369,14 @@ typedef struct {
|
||||||
int32_t vgId;
|
int32_t vgId;
|
||||||
int32_t tid;
|
int32_t tid;
|
||||||
uint64_t uid;
|
uint64_t uid;
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
} SMDDropTableMsg;
|
} SMDDropTableMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t contLen;
|
int32_t contLen;
|
||||||
int32_t vgId;
|
int32_t vgId;
|
||||||
uint64_t uid;
|
uint64_t uid;
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
} SDropSTableMsg;
|
} SDropSTableMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -688,7 +688,7 @@ typedef struct {
|
||||||
} SCreateVnodeMsg, SAlterVnodeMsg;
|
} SCreateVnodeMsg, SAlterVnodeMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
int16_t createFlag;
|
int16_t createFlag;
|
||||||
char tags[];
|
char tags[];
|
||||||
} STableInfoMsg;
|
} STableInfoMsg;
|
||||||
|
@ -726,7 +726,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct STableMetaMsg {
|
typedef struct STableMetaMsg {
|
||||||
int32_t contLen;
|
int32_t contLen;
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN]; // table id
|
char tableFname[TSDB_TABLE_FNAME_LEN]; // table id
|
||||||
uint8_t numOfTags;
|
uint8_t numOfTags;
|
||||||
uint8_t precision;
|
uint8_t precision;
|
||||||
uint8_t tableType;
|
uint8_t tableType;
|
||||||
|
@ -847,7 +847,7 @@ typedef struct {
|
||||||
uint64_t uid;
|
uint64_t uid;
|
||||||
uint64_t stime; // stream starting time
|
uint64_t stime; // stream starting time
|
||||||
int32_t status;
|
int32_t status;
|
||||||
char tableId[TSDB_TABLE_FNAME_LEN];
|
char tableFname[TSDB_TABLE_FNAME_LEN];
|
||||||
} SAlterStreamMsg;
|
} SAlterStreamMsg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -195,7 +195,7 @@ static int32_t mnodeGetClusterMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
pMeta->numOfColumns = htons(cols);
|
pMeta->numOfColumns = htons(cols);
|
||||||
strcpy(pMeta->tableId, "show cluster");
|
strcpy(pMeta->tableFname, "show cluster");
|
||||||
pShow->numOfColumns = cols;
|
pShow->numOfColumns = cols;
|
||||||
|
|
||||||
pShow->offset[0] = 0;
|
pShow->offset[0] = 0;
|
||||||
|
|
|
@ -750,7 +750,7 @@ void mnodeDestroySubMsg(SMnodeMsg *pSubMsg) {
|
||||||
static int32_t mnodeValidateCreateTableMsg(SCreateTableMsg *pCreateTable, SMnodeMsg *pMsg) {
|
static int32_t mnodeValidateCreateTableMsg(SCreateTableMsg *pCreateTable, SMnodeMsg *pMsg) {
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCreateTable->db);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCreateTable->db);
|
||||||
if (pMsg->pDb == NULL) {
|
if (pMsg->pDb == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, db not selected", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, db not selected", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableFname);
|
||||||
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,28 +759,28 @@ static int32_t mnodeValidateCreateTableMsg(SCreateTableMsg *pCreateTable, SMnode
|
||||||
return TSDB_CODE_MND_DB_IN_DROPPING;
|
return TSDB_CODE_MND_DB_IN_DROPPING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreateTable->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreateTable->tableFname);
|
||||||
if (pMsg->pTable != NULL && pMsg->retry == 0) {
|
if (pMsg->pTable != NULL && pMsg->retry == 0) {
|
||||||
if (pCreateTable->getMeta) {
|
if (pCreateTable->getMeta) {
|
||||||
mDebug("msg:%p, app:%p table:%s, continue to get meta", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableId);
|
mDebug("msg:%p, app:%p table:%s, continue to get meta", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableFname);
|
||||||
return mnodeGetChildTableMeta(pMsg);
|
return mnodeGetChildTableMeta(pMsg);
|
||||||
} else if (pCreateTable->igExists) {
|
} else if (pCreateTable->igExists) {
|
||||||
mDebug("msg:%p, app:%p table:%s, is already exist", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableId);
|
mDebug("msg:%p, app:%p table:%s, is already exist", pMsg, pMsg->rpcMsg.ahandle, pCreateTable->tableFname);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, table already exist", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to create, table already exist", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreateTable->tableId);
|
pCreateTable->tableFname);
|
||||||
return TSDB_CODE_MND_TABLE_ALREADY_EXIST;
|
return TSDB_CODE_MND_TABLE_ALREADY_EXIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pCreateTable->numOfTags != 0) {
|
if (pCreateTable->numOfTags != 0) {
|
||||||
mDebug("msg:%p, app:%p table:%s, create stable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, create stable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreateTable->tableId, pMsg->rpcMsg.handle);
|
pCreateTable->tableFname, pMsg->rpcMsg.handle);
|
||||||
return mnodeProcessCreateSuperTableMsg(pMsg);
|
return mnodeProcessCreateSuperTableMsg(pMsg);
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, create ctable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, create ctable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreateTable->tableId, pMsg->rpcMsg.handle);
|
pCreateTable->tableFname, pMsg->rpcMsg.handle);
|
||||||
return mnodeProcessCreateChildTableMsg(pMsg);
|
return mnodeProcessCreateChildTableMsg(pMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -862,7 +862,7 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) {
|
||||||
SCreateTableMsg *p = (SCreateTableMsg*)((char*) pCreate + sizeof(SCMCreateTableMsg));
|
SCreateTableMsg *p = (SCreateTableMsg*)((char*) pCreate + sizeof(SCMCreateTableMsg));
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(p->db);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(p->db);
|
||||||
if (pMsg->pDb == NULL) {
|
if (pMsg->pDb == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, db not selected", pMsg, pMsg->rpcMsg.ahandle, p->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, db not selected", pMsg, pMsg->rpcMsg.ahandle, p->tableFname);
|
||||||
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -871,38 +871,37 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) {
|
||||||
return TSDB_CODE_MND_DB_IN_DROPPING;
|
return TSDB_CODE_MND_DB_IN_DROPPING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(p->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(p->tableFname);
|
||||||
if (pMsg->pTable != NULL && pMsg->retry == 0) {
|
if (pMsg->pTable != NULL && pMsg->retry == 0) {
|
||||||
if (p->getMeta) {
|
if (p->getMeta) {
|
||||||
mDebug("msg:%p, app:%p table:%s, continue to get meta", pMsg, pMsg->rpcMsg.ahandle, p->tableId);
|
mDebug("msg:%p, app:%p table:%s, continue to get meta", pMsg, pMsg->rpcMsg.ahandle, p->tableFname);
|
||||||
return mnodeGetChildTableMeta(pMsg);
|
return mnodeGetChildTableMeta(pMsg);
|
||||||
} else if (p->igExists) {
|
} else if (p->igExists) {
|
||||||
mDebug("msg:%p, app:%p table:%s, is already exist", pMsg, pMsg->rpcMsg.ahandle, p->tableId);
|
mDebug("msg:%p, app:%p table:%s, is already exist", pMsg, pMsg->rpcMsg.ahandle, p->tableFname);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, table already exist", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to create, table already exist", pMsg, pMsg->rpcMsg.ahandle, p->tableFname);
|
||||||
p->tableId);
|
|
||||||
return TSDB_CODE_MND_TABLE_ALREADY_EXIST;
|
return TSDB_CODE_MND_TABLE_ALREADY_EXIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p->numOfTags != 0) {
|
if (p->numOfTags != 0) {
|
||||||
mDebug("msg:%p, app:%p table:%s, create stable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, create stable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
p->tableId, pMsg->rpcMsg.handle);
|
p->tableFname, pMsg->rpcMsg.handle);
|
||||||
return mnodeProcessCreateSuperTableMsg(pMsg);
|
return mnodeProcessCreateSuperTableMsg(pMsg);
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, create ctable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, create ctable msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
p->tableId, pMsg->rpcMsg.handle);
|
p->tableFname, pMsg->rpcMsg.handle);
|
||||||
return mnodeProcessCreateChildTableMsg(pMsg);
|
return mnodeProcessCreateChildTableMsg(pMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
|
static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
|
||||||
SCMDropTableMsg *pDrop = pMsg->rpcMsg.pCont;
|
SCMDropTableMsg *pDrop = pMsg->rpcMsg.pCont;
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pDrop->tableId);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pDrop->tableFname);
|
||||||
if (pMsg->pDb == NULL) {
|
if (pMsg->pDb == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to drop table, db not selected or db in dropping", pMsg,
|
mError("msg:%p, app:%p table:%s, failed to drop table, db not selected or db in dropping", pMsg,
|
||||||
pMsg->rpcMsg.ahandle, pDrop->tableId);
|
pMsg->rpcMsg.ahandle, pDrop->tableFname);
|
||||||
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -913,17 +912,17 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
|
||||||
|
|
||||||
if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) {
|
if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to drop table, in monitor database", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to drop table, in monitor database", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pDrop->tableId);
|
pDrop->tableFname);
|
||||||
return TSDB_CODE_MND_MONITOR_DB_FORBIDDEN;
|
return TSDB_CODE_MND_MONITOR_DB_FORBIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pDrop->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pDrop->tableFname);
|
||||||
if (pMsg->pTable == NULL) {
|
if (pMsg->pTable == NULL) {
|
||||||
if (pDrop->igNotExists) {
|
if (pDrop->igNotExists) {
|
||||||
mDebug("msg:%p, app:%p table:%s is not exist, treat as success", pMsg, pMsg->rpcMsg.ahandle, pDrop->tableId);
|
mDebug("msg:%p, app:%p table:%s is not exist, treat as success", pMsg, pMsg->rpcMsg.ahandle, pDrop->tableFname);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
mError("msg:%p, app:%p table:%s, failed to drop, table not exist", pMsg, pMsg->rpcMsg.ahandle, pDrop->tableId);
|
mError("msg:%p, app:%p table:%s, failed to drop, table not exist", pMsg, pMsg->rpcMsg.ahandle, pDrop->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -931,12 +930,12 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
|
||||||
if (pMsg->pTable->type == TSDB_SUPER_TABLE) {
|
if (pMsg->pTable->type == TSDB_SUPER_TABLE) {
|
||||||
SSTableObj *pSTable = (SSTableObj *)pMsg->pTable;
|
SSTableObj *pSTable = (SSTableObj *)pMsg->pTable;
|
||||||
mInfo("msg:%p, app:%p table:%s, start to drop stable, uid:%" PRIu64 ", numOfChildTables:%d, sizeOfVgList:%d", pMsg,
|
mInfo("msg:%p, app:%p table:%s, start to drop stable, uid:%" PRIu64 ", numOfChildTables:%d, sizeOfVgList:%d", pMsg,
|
||||||
pMsg->rpcMsg.ahandle, pDrop->tableId, pSTable->uid, pSTable->numOfTables, taosHashGetSize(pSTable->vgHash));
|
pMsg->rpcMsg.ahandle, pDrop->tableFname, pSTable->uid, pSTable->numOfTables, taosHashGetSize(pSTable->vgHash));
|
||||||
return mnodeProcessDropSuperTableMsg(pMsg);
|
return mnodeProcessDropSuperTableMsg(pMsg);
|
||||||
} else {
|
} else {
|
||||||
SCTableObj *pCTable = (SCTableObj *)pMsg->pTable;
|
SCTableObj *pCTable = (SCTableObj *)pMsg->pTable;
|
||||||
mInfo("msg:%p, app:%p table:%s, start to drop ctable, vgId:%d tid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
mInfo("msg:%p, app:%p table:%s, start to drop ctable, vgId:%d tid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pDrop->tableId, pCTable->vgId, pCTable->tid, pCTable->uid);
|
pDrop->tableFname, pCTable->vgId, pCTable->tid, pCTable->uid);
|
||||||
return mnodeProcessDropChildTableMsg(pMsg);
|
return mnodeProcessDropChildTableMsg(pMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -945,12 +944,12 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) {
|
||||||
STableInfoMsg *pInfo = pMsg->rpcMsg.pCont;
|
STableInfoMsg *pInfo = pMsg->rpcMsg.pCont;
|
||||||
pInfo->createFlag = htons(pInfo->createFlag);
|
pInfo->createFlag = htons(pInfo->createFlag);
|
||||||
mDebug("msg:%p, app:%p table:%s, table meta msg is received from thandle:%p, createFlag:%d", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, table meta msg is received from thandle:%p, createFlag:%d", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId, pMsg->rpcMsg.handle, pInfo->createFlag);
|
pInfo->tableFname, pMsg->rpcMsg.handle, pInfo->createFlag);
|
||||||
|
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pInfo->tableId);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pInfo->tableFname);
|
||||||
if (pMsg->pDb == NULL) {
|
if (pMsg->pDb == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to get table meta, db not selected", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to get table meta, db not selected", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId);
|
pInfo->tableFname);
|
||||||
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -959,15 +958,15 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) {
|
||||||
return TSDB_CODE_MND_DB_IN_DROPPING;
|
return TSDB_CODE_MND_DB_IN_DROPPING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pInfo->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pInfo->tableFname);
|
||||||
if (pMsg->pTable == NULL) {
|
if (pMsg->pTable == NULL) {
|
||||||
if (!pInfo->createFlag) {
|
if (!pInfo->createFlag) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to get table meta, table not exist", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to get table meta, table not exist", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId);
|
pInfo->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, failed to get table meta, start auto create table ", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, failed to get table meta, start auto create table ", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId);
|
pInfo->tableFname);
|
||||||
return mnodeAutoCreateChildTable(pMsg);
|
return mnodeAutoCreateChildTable(pMsg);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1007,12 +1006,12 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
|
||||||
|
|
||||||
SSTableObj * pStable = calloc(1, sizeof(SSTableObj));
|
SSTableObj * pStable = calloc(1, sizeof(SSTableObj));
|
||||||
if (pStable == NULL) {
|
if (pStable == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, no enough memory", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, no enough memory", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t us = taosGetTimestampUs();
|
int64_t us = taosGetTimestampUs();
|
||||||
pStable->info.tableId = strdup(pCreate->tableId);
|
pStable->info.tableId = strdup(pCreate->tableFname);
|
||||||
pStable->info.type = TSDB_SUPER_TABLE;
|
pStable->info.type = TSDB_SUPER_TABLE;
|
||||||
pStable->createdTime = taosGetTimestampMs();
|
pStable->createdTime = taosGetTimestampMs();
|
||||||
pStable->uid = (us << 24) + ((sdbGetVersion() & ((1ul << 16) - 1ul)) << 8) + (taosRand() & ((1ul << 8) - 1ul));
|
pStable->uid = (us << 24) + ((sdbGetVersion() & ((1ul << 16) - 1ul)) << 8) + (taosRand() & ((1ul << 8) - 1ul));
|
||||||
|
@ -1026,41 +1025,27 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
|
||||||
pStable->schema = (SSchema *)calloc(1, schemaSize);
|
pStable->schema = (SSchema *)calloc(1, schemaSize);
|
||||||
if (pStable->schema == NULL) {
|
if (pStable->schema == NULL) {
|
||||||
free(pStable);
|
free(pStable);
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, no schema input", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, no schema input", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(pStable->schema, pCreate->schema, numOfCols * sizeof(SSchema));
|
memcpy(pStable->schema, pCreate->schema, numOfCols * sizeof(SSchema));
|
||||||
|
|
||||||
if (pStable->numOfColumns > TSDB_MAX_COLUMNS || pStable->numOfTags > TSDB_MAX_TAGS) {
|
if (pStable->numOfColumns > TSDB_MAX_COLUMNS || pStable->numOfTags > TSDB_MAX_TAGS) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, too many columns", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, too many columns", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
pStable->nextColId = 0;
|
pStable->nextColId = 0;
|
||||||
|
|
||||||
// TODO extract method to valid the schema
|
|
||||||
int32_t schemaLen = 0;
|
|
||||||
int32_t tagLen = 0;
|
|
||||||
for (int32_t col = 0; col < numOfCols; col++) {
|
for (int32_t col = 0; col < numOfCols; col++) {
|
||||||
SSchema *tschema = pStable->schema;
|
SSchema *tschema = pStable->schema;
|
||||||
tschema[col].colId = pStable->nextColId++;
|
tschema[col].colId = pStable->nextColId++;
|
||||||
tschema[col].bytes = htons(tschema[col].bytes);
|
tschema[col].bytes = htons(tschema[col].bytes);
|
||||||
|
|
||||||
if (col < pStable->numOfTables) {
|
|
||||||
schemaLen += tschema[col].bytes;
|
|
||||||
} else {
|
|
||||||
tagLen += tschema[col].bytes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isValidDataType(tschema[col].type)) {
|
if (!isValidSchema(pStable->schema, pStable->numOfColumns, pStable->numOfTags)) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, invalid data type in schema", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create table, invalid schema", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_CREATE_TABLE_MSG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (schemaLen > (TSDB_MAX_BYTES_PER_ROW || tagLen > TSDB_MAX_TAGS_LEN)) {
|
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, schema is too long", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
|
||||||
return TSDB_CODE_MND_INVALID_CREATE_TABLE_MSG;
|
return TSDB_CODE_MND_INVALID_CREATE_TABLE_MSG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1080,7 +1065,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
|
||||||
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_MND_ACTION_IN_PROGRESS) {
|
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_MND_ACTION_IN_PROGRESS) {
|
||||||
mnodeDestroySuperTable(pStable);
|
mnodeDestroySuperTable(pStable);
|
||||||
pMsg->pTable = NULL;
|
pMsg->pTable = NULL;
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, sdb error", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to create, sdb error", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
}
|
}
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
@ -1115,7 +1100,7 @@ static int32_t mnodeProcessDropSuperTableMsg(SMnodeMsg *pMsg) {
|
||||||
pDrop->contLen = htonl(sizeof(SDropSTableMsg));
|
pDrop->contLen = htonl(sizeof(SDropSTableMsg));
|
||||||
pDrop->vgId = htonl(pVgroup->vgId);
|
pDrop->vgId = htonl(pVgroup->vgId);
|
||||||
pDrop->uid = htobe64(pStable->uid);
|
pDrop->uid = htobe64(pStable->uid);
|
||||||
mnodeExtractTableName(pStable->info.tableId, pDrop->tableId);
|
mnodeExtractTableName(pStable->info.tableId, pDrop->tableFname);
|
||||||
|
|
||||||
mInfo("msg:%p, app:%p stable:%s, send drop stable msg to vgId:%d, hash:%p sizeOfVgList:%d", pMsg,
|
mInfo("msg:%p, app:%p stable:%s, send drop stable msg to vgId:%d, hash:%p sizeOfVgList:%d", pMsg,
|
||||||
pMsg->rpcMsg.ahandle, pStable->info.tableId, pVgroup->vgId, pStable->vgHash,
|
pMsg->rpcMsg.ahandle, pStable->info.tableId, pVgroup->vgId, pStable->vgHash,
|
||||||
|
@ -1655,7 +1640,7 @@ static int32_t mnodeGetSuperTableMeta(SMnodeMsg *pMsg) {
|
||||||
pMeta->numOfColumns = htons((int16_t)pTable->numOfColumns);
|
pMeta->numOfColumns = htons((int16_t)pTable->numOfColumns);
|
||||||
pMeta->tableType = pTable->info.type;
|
pMeta->tableType = pTable->info.type;
|
||||||
pMeta->contLen = sizeof(STableMetaMsg) + mnodeSetSchemaFromSuperTable(pMeta->schema, pTable);
|
pMeta->contLen = sizeof(STableMetaMsg) + mnodeSetSchemaFromSuperTable(pMeta->schema, pTable);
|
||||||
tstrncpy(pMeta->tableId, pTable->info.tableId, sizeof(pMeta->tableId));
|
tstrncpy(pMeta->tableFname, pTable->info.tableId, sizeof(pMeta->tableFname));
|
||||||
|
|
||||||
pMsg->rpcRsp.len = pMeta->contLen;
|
pMsg->rpcRsp.len = pMeta->contLen;
|
||||||
pMeta->contLen = htons(pMeta->contLen);
|
pMeta->contLen = htons(pMeta->contLen);
|
||||||
|
@ -1798,7 +1783,7 @@ static void *mnodeBuildCreateChildTableMsg(SCMCreateTableMsg *pCreateMsg, SCTabl
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mnodeExtractTableName(pTable->info.tableId, pCreate->tableId);
|
mnodeExtractTableName(pTable->info.tableId, pCreate->tableFname);
|
||||||
pCreate->contLen = htonl(contLen);
|
pCreate->contLen = htonl(contLen);
|
||||||
pCreate->vgId = htonl(pTable->vgId);
|
pCreate->vgId = htonl(pTable->vgId);
|
||||||
pCreate->tableType = pTable->info.type;
|
pCreate->tableType = pTable->info.type;
|
||||||
|
@ -1808,7 +1793,7 @@ static void *mnodeBuildCreateChildTableMsg(SCMCreateTableMsg *pCreateMsg, SCTabl
|
||||||
pCreate->uid = htobe64(pTable->uid);
|
pCreate->uid = htobe64(pTable->uid);
|
||||||
|
|
||||||
if (pTable->info.type == TSDB_CHILD_TABLE) {
|
if (pTable->info.type == TSDB_CHILD_TABLE) {
|
||||||
mnodeExtractTableName(pTable->superTable->info.tableId, pCreate->superTableId);
|
mnodeExtractTableName(pTable->superTable->info.tableId, pCreate->stableFname);
|
||||||
pCreate->numOfColumns = htons(pTable->superTable->numOfColumns);
|
pCreate->numOfColumns = htons(pTable->superTable->numOfColumns);
|
||||||
pCreate->numOfTags = htons(pTable->superTable->numOfTags);
|
pCreate->numOfTags = htons(pTable->superTable->numOfTags);
|
||||||
pCreate->sversion = htonl(pTable->superTable->sversion);
|
pCreate->sversion = htonl(pTable->superTable->sversion);
|
||||||
|
@ -1922,12 +1907,12 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
|
||||||
|
|
||||||
SCTableObj *pTable = calloc(1, sizeof(SCTableObj));
|
SCTableObj *pTable = calloc(1, sizeof(SCTableObj));
|
||||||
if (pTable == NULL) {
|
if (pTable == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to alloc memory", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mError("msg:%p, app:%p table:%s, failed to alloc memory", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
pTable->info.type = (pCreate->numOfColumns == 0)? TSDB_CHILD_TABLE:TSDB_NORMAL_TABLE;
|
pTable->info.type = (pCreate->numOfColumns == 0)? TSDB_CHILD_TABLE:TSDB_NORMAL_TABLE;
|
||||||
pTable->info.tableId = strdup(pCreate->tableId);
|
pTable->info.tableId = strdup(pCreate->tableFname);
|
||||||
pTable->createdTime = taosGetTimestampMs();
|
pTable->createdTime = taosGetTimestampMs();
|
||||||
pTable->tid = tid;
|
pTable->tid = tid;
|
||||||
pTable->vgId = pVgroup->vgId;
|
pTable->vgId = pVgroup->vgId;
|
||||||
|
@ -1943,7 +1928,7 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
|
||||||
size_t prefixLen = tableIdPrefix(pMsg->pDb->name, prefix, 64);
|
size_t prefixLen = tableIdPrefix(pMsg->pDb->name, prefix, 64);
|
||||||
if (0 != strncasecmp(prefix, stableName, prefixLen)) {
|
if (0 != strncasecmp(prefix, stableName, prefixLen)) {
|
||||||
mError("msg:%p, app:%p table:%s, corresponding super table:%s not in this db", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, corresponding super table:%s not in this db", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreate->tableId, stableName);
|
pCreate->tableFname, stableName);
|
||||||
mnodeDestroyChildTable(pTable);
|
mnodeDestroyChildTable(pTable);
|
||||||
return TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
|
return TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
|
||||||
}
|
}
|
||||||
|
@ -1951,7 +1936,7 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
|
||||||
if (pMsg->pSTable == NULL) pMsg->pSTable = mnodeGetSuperTable(stableName);
|
if (pMsg->pSTable == NULL) pMsg->pSTable = mnodeGetSuperTable(stableName);
|
||||||
if (pMsg->pSTable == NULL) {
|
if (pMsg->pSTable == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, corresponding super table:%s does not exist", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, corresponding super table:%s does not exist", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreate->tableId, stableName);
|
pCreate->tableFname, stableName);
|
||||||
mnodeDestroyChildTable(pTable);
|
mnodeDestroyChildTable(pTable);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
}
|
}
|
||||||
|
@ -2018,7 +2003,7 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
|
||||||
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_MND_ACTION_IN_PROGRESS) {
|
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_MND_ACTION_IN_PROGRESS) {
|
||||||
mnodeDestroyChildTable(pTable);
|
mnodeDestroyChildTable(pTable);
|
||||||
pMsg->pTable = NULL;
|
pMsg->pTable = NULL;
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, reason:%s", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId,
|
mError("msg:%p, app:%p table:%s, failed to create, reason:%s", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname,
|
||||||
tstrerror(code));
|
tstrerror(code));
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, allocated in vgroup, vgId:%d sid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, allocated in vgroup, vgId:%d sid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
||||||
|
@ -2035,7 +2020,7 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) {
|
||||||
int32_t code = grantCheck(TSDB_GRANT_TIMESERIES);
|
int32_t code = grantCheck(TSDB_GRANT_TIMESERIES);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create, grant timeseries failed", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to create, grant timeseries failed", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreate->tableId);
|
pCreate->tableFname);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2046,7 +2031,7 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) {
|
||||||
code = mnodeGetAvailableVgroup(pMsg, &pVgroup, &tid);
|
code = mnodeGetAvailableVgroup(pMsg, &pVgroup, &tid);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
mDebug("msg:%p, app:%p table:%s, failed to get available vgroup, reason:%s", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, failed to get available vgroup, reason:%s", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pCreate->tableId, tstrerror(code));
|
pCreate->tableFname, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2060,15 +2045,15 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) {
|
||||||
return mnodeDoCreateChildTable(pMsg, tid);
|
return mnodeDoCreateChildTable(pMsg, tid);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreate->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pCreate->tableFname);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) {
|
if (pMsg->pTable == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, object not found, retry:%d reason:%s", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId, pMsg->retry,
|
mError("msg:%p, app:%p table:%s, object not found, retry:%d reason:%s", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname, pMsg->retry,
|
||||||
tstrerror(terrno));
|
tstrerror(terrno));
|
||||||
return terrno;
|
return terrno;
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, send create msg to vnode again", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableId);
|
mDebug("msg:%p, app:%p table:%s, send create msg to vnode again", pMsg, pMsg->rpcMsg.ahandle, pCreate->tableFname);
|
||||||
return mnodeDoCreateChildTableFp(pMsg);
|
return mnodeDoCreateChildTableFp(pMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2084,7 +2069,7 @@ static int32_t mnodeSendDropChildTableMsg(SMnodeMsg *pMsg, bool needReturn) {
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
tstrncpy(pDrop->tableId, pTable->info.tableId, TSDB_TABLE_FNAME_LEN);
|
tstrncpy(pDrop->tableFname, pTable->info.tableId, TSDB_TABLE_FNAME_LEN);
|
||||||
pDrop->vgId = htonl(pTable->vgId);
|
pDrop->vgId = htonl(pTable->vgId);
|
||||||
pDrop->contLen = htonl(sizeof(SMDDropTableMsg));
|
pDrop->contLen = htonl(sizeof(SMDDropTableMsg));
|
||||||
pDrop->tid = htonl(pTable->tid);
|
pDrop->tid = htonl(pTable->tid);
|
||||||
|
@ -2093,7 +2078,7 @@ static int32_t mnodeSendDropChildTableMsg(SMnodeMsg *pMsg, bool needReturn) {
|
||||||
SRpcEpSet epSet = mnodeGetEpSetFromVgroup(pMsg->pVgroup);
|
SRpcEpSet epSet = mnodeGetEpSetFromVgroup(pMsg->pVgroup);
|
||||||
|
|
||||||
mInfo("msg:%p, app:%p ctable:%s, send drop ctable msg, vgId:%d sid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
mInfo("msg:%p, app:%p ctable:%s, send drop ctable msg, vgId:%d sid:%d uid:%" PRIu64, pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pDrop->tableId, pTable->vgId, pTable->tid, pTable->uid);
|
pDrop->tableFname, pTable->vgId, pTable->tid, pTable->uid);
|
||||||
|
|
||||||
SRpcMsg rpcMsg = {
|
SRpcMsg rpcMsg = {
|
||||||
.ahandle = pMsg,
|
.ahandle = pMsg,
|
||||||
|
@ -2335,7 +2320,7 @@ static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) {
|
||||||
pMeta->tid = htonl(pTable->tid);
|
pMeta->tid = htonl(pTable->tid);
|
||||||
pMeta->precision = pDb->cfg.precision;
|
pMeta->precision = pDb->cfg.precision;
|
||||||
pMeta->tableType = pTable->info.type;
|
pMeta->tableType = pTable->info.type;
|
||||||
tstrncpy(pMeta->tableId, pTable->info.tableId, TSDB_TABLE_FNAME_LEN);
|
tstrncpy(pMeta->tableFname, pTable->info.tableId, TSDB_TABLE_FNAME_LEN);
|
||||||
|
|
||||||
if (pTable->info.type == TSDB_CHILD_TABLE) {
|
if (pTable->info.type == TSDB_CHILD_TABLE) {
|
||||||
assert(pTable->superTable != NULL);
|
assert(pTable->superTable != NULL);
|
||||||
|
@ -2383,7 +2368,7 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
|
||||||
|
|
||||||
if (pMsg->rpcMsg.contLen <= sizeof(*pInfo)) {
|
if (pMsg->rpcMsg.contLen <= sizeof(*pInfo)) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to auto create child table, tags not exist", pMsg, pMsg->rpcMsg.ahandle,
|
mError("msg:%p, app:%p table:%s, failed to auto create child table, tags not exist", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId);
|
pInfo->tableFname);
|
||||||
return TSDB_CODE_MND_TAG_NOT_EXIST;
|
return TSDB_CODE_MND_TAG_NOT_EXIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2398,7 +2383,7 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
|
||||||
int32_t totalLen = nameLen + tagLen + sizeof(int32_t)*2;
|
int32_t totalLen = nameLen + tagLen + sizeof(int32_t)*2;
|
||||||
if (tagLen == 0 || nameLen == 0) {
|
if (tagLen == 0 || nameLen == 0) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create table on demand for super table is empty, tagLen:%d", pMsg,
|
mError("msg:%p, app:%p table:%s, failed to create table on demand for super table is empty, tagLen:%d", pMsg,
|
||||||
pMsg->rpcMsg.ahandle, pInfo->tableId, tagLen);
|
pMsg->rpcMsg.ahandle, pInfo->tableFname, tagLen);
|
||||||
return TSDB_CODE_MND_INVALID_STABLE_NAME;
|
return TSDB_CODE_MND_INVALID_STABLE_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2406,14 +2391,14 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
|
||||||
SCMCreateTableMsg *pCreateMsg = calloc(1, contLen);
|
SCMCreateTableMsg *pCreateMsg = calloc(1, contLen);
|
||||||
if (pCreateMsg == NULL) {
|
if (pCreateMsg == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to create table while get meta info, no enough memory", pMsg,
|
mError("msg:%p, app:%p table:%s, failed to create table while get meta info, no enough memory", pMsg,
|
||||||
pMsg->rpcMsg.ahandle, pInfo->tableId);
|
pMsg->rpcMsg.ahandle, pInfo->tableFname);
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCreateTableMsg* pCreate = (SCreateTableMsg*) ((char*) pCreateMsg + sizeof(SCMCreateTableMsg));
|
SCreateTableMsg* pCreate = (SCreateTableMsg*) ((char*) pCreateMsg + sizeof(SCMCreateTableMsg));
|
||||||
|
|
||||||
size_t size = tListLen(pInfo->tableId);
|
size_t size = tListLen(pInfo->tableFname);
|
||||||
tstrncpy(pCreate->tableId, pInfo->tableId, size);
|
tstrncpy(pCreate->tableFname, pInfo->tableFname, size);
|
||||||
tstrncpy(pCreate->db, pMsg->pDb->name, sizeof(pCreate->db));
|
tstrncpy(pCreate->db, pMsg->pDb->name, sizeof(pCreate->db));
|
||||||
pCreate->igExists = 1;
|
pCreate->igExists = 1;
|
||||||
pCreate->getMeta = 1;
|
pCreate->getMeta = 1;
|
||||||
|
@ -2427,7 +2412,7 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
|
||||||
memcpy(name, pInfo->tags + sizeof(int32_t), nameLen);
|
memcpy(name, pInfo->tags + sizeof(int32_t), nameLen);
|
||||||
|
|
||||||
mDebug("msg:%p, app:%p table:%s, start to create on demand, tagLen:%d stable:%s", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, start to create on demand, tagLen:%d stable:%s", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pInfo->tableId, tagLen, name);
|
pInfo->tableFname, tagLen, name);
|
||||||
|
|
||||||
if (pMsg->rpcMsg.pCont != pMsg->pCont) {
|
if (pMsg->rpcMsg.pCont != pMsg->pCont) {
|
||||||
tfree(pMsg->rpcMsg.pCont);
|
tfree(pMsg->rpcMsg.pCont);
|
||||||
|
@ -3001,11 +2986,11 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows
|
||||||
static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
||||||
SAlterTableMsg *pAlter = pMsg->rpcMsg.pCont;
|
SAlterTableMsg *pAlter = pMsg->rpcMsg.pCont;
|
||||||
mDebug("msg:%p, app:%p table:%s, alter table msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
mDebug("msg:%p, app:%p table:%s, alter table msg is received from thandle:%p", pMsg, pMsg->rpcMsg.ahandle,
|
||||||
pAlter->tableId, pMsg->rpcMsg.handle);
|
pAlter->tableFname, pMsg->rpcMsg.handle);
|
||||||
|
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pAlter->tableId);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDbByTableId(pAlter->tableFname);
|
||||||
if (pMsg->pDb == NULL) {
|
if (pMsg->pDb == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to alter table, db not selected", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId);
|
mError("msg:%p, app:%p table:%s, failed to alter table, db not selected", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname);
|
||||||
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3015,13 +3000,13 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) {
|
if (mnodeCheckIsMonitorDB(pMsg->pDb->name, tsMonitorDbName)) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to alter table, its log db", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId);
|
mError("msg:%p, app:%p table:%s, failed to alter table, its log db", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname);
|
||||||
return TSDB_CODE_MND_MONITOR_DB_FORBIDDEN;
|
return TSDB_CODE_MND_MONITOR_DB_FORBIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pAlter->tableId);
|
if (pMsg->pTable == NULL) pMsg->pTable = mnodeGetTable(pAlter->tableFname);
|
||||||
if (pMsg->pTable == NULL) {
|
if (pMsg->pTable == NULL) {
|
||||||
mError("msg:%p, app:%p table:%s, failed to alter table, table not exist", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId);
|
mError("msg:%p, app:%p table:%s, failed to alter table, table not exist", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname);
|
||||||
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
return TSDB_CODE_MND_INVALID_TABLE_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3030,7 +3015,7 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
||||||
pAlter->tagValLen = htonl(pAlter->tagValLen);
|
pAlter->tagValLen = htonl(pAlter->tagValLen);
|
||||||
|
|
||||||
if (pAlter->numOfCols > 2) {
|
if (pAlter->numOfCols > 2) {
|
||||||
mError("msg:%p, app:%p table:%s, error numOfCols:%d in alter table", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId,
|
mError("msg:%p, app:%p table:%s, error numOfCols:%d in alter table", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname,
|
||||||
pAlter->numOfCols);
|
pAlter->numOfCols);
|
||||||
return TSDB_CODE_MND_APP_ERROR;
|
return TSDB_CODE_MND_APP_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3041,7 +3026,7 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
||||||
|
|
||||||
int32_t code = TSDB_CODE_COM_OPS_NOT_SUPPORT;
|
int32_t code = TSDB_CODE_COM_OPS_NOT_SUPPORT;
|
||||||
if (pMsg->pTable->type == TSDB_SUPER_TABLE) {
|
if (pMsg->pTable->type == TSDB_SUPER_TABLE) {
|
||||||
mDebug("msg:%p, app:%p table:%s, start to alter stable", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId);
|
mDebug("msg:%p, app:%p table:%s, start to alter stable", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname);
|
||||||
if (pAlter->type == TSDB_ALTER_TABLE_ADD_TAG_COLUMN) {
|
if (pAlter->type == TSDB_ALTER_TABLE_ADD_TAG_COLUMN) {
|
||||||
code = mnodeAddSuperTableTag(pMsg, pAlter->schema, 1);
|
code = mnodeAddSuperTableTag(pMsg, pAlter->schema, 1);
|
||||||
} else if (pAlter->type == TSDB_ALTER_TABLE_DROP_TAG_COLUMN) {
|
} else if (pAlter->type == TSDB_ALTER_TABLE_DROP_TAG_COLUMN) {
|
||||||
|
@ -3057,7 +3042,7 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mDebug("msg:%p, app:%p table:%s, start to alter ctable", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableId);
|
mDebug("msg:%p, app:%p table:%s, start to alter ctable", pMsg, pMsg->rpcMsg.ahandle, pAlter->tableFname);
|
||||||
if (pAlter->type == TSDB_ALTER_TABLE_UPDATE_TAG_VAL) {
|
if (pAlter->type == TSDB_ALTER_TABLE_UPDATE_TAG_VAL) {
|
||||||
return TSDB_CODE_COM_OPS_NOT_SUPPORT;
|
return TSDB_CODE_COM_OPS_NOT_SUPPORT;
|
||||||
} else if (pAlter->type == TSDB_ALTER_TABLE_ADD_COLUMN) {
|
} else if (pAlter->type == TSDB_ALTER_TABLE_ADD_COLUMN) {
|
||||||
|
|
|
@ -337,7 +337,7 @@ static int32_t mnodeGetUserMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
pMeta->numOfColumns = htons(cols);
|
pMeta->numOfColumns = htons(cols);
|
||||||
strcpy(pMeta->tableId, "show users");
|
strcpy(pMeta->tableFname, "show users");
|
||||||
pShow->numOfColumns = cols;
|
pShow->numOfColumns = cols;
|
||||||
|
|
||||||
pShow->offset[0] = 0;
|
pShow->offset[0] = 0;
|
||||||
|
|
|
@ -253,7 +253,7 @@ STableCfg *tsdbCreateTableCfgFromMsg(SMDCreateTableMsg *pMsg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tsdbTableSetSchema(pCfg, tdGetSchemaFromBuilder(&schemaBuilder), false) < 0) goto _err;
|
if (tsdbTableSetSchema(pCfg, tdGetSchemaFromBuilder(&schemaBuilder), false) < 0) goto _err;
|
||||||
if (tsdbTableSetName(pCfg, pMsg->tableId, true) < 0) goto _err;
|
if (tsdbTableSetName(pCfg, pMsg->tableFname, true) < 0) goto _err;
|
||||||
|
|
||||||
if (numOfTags > 0) {
|
if (numOfTags > 0) {
|
||||||
// Decode tag schema
|
// Decode tag schema
|
||||||
|
@ -265,7 +265,7 @@ STableCfg *tsdbCreateTableCfgFromMsg(SMDCreateTableMsg *pMsg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tsdbTableSetTagSchema(pCfg, tdGetSchemaFromBuilder(&schemaBuilder), false) < 0) goto _err;
|
if (tsdbTableSetTagSchema(pCfg, tdGetSchemaFromBuilder(&schemaBuilder), false) < 0) goto _err;
|
||||||
if (tsdbTableSetSName(pCfg, pMsg->superTableId, true) < 0) goto _err;
|
if (tsdbTableSetSName(pCfg, pMsg->stableFname, true) < 0) goto _err;
|
||||||
if (tsdbTableSetSuperUid(pCfg, htobe64(pMsg->superTableUid)) < 0) goto _err;
|
if (tsdbTableSetSuperUid(pCfg, htobe64(pMsg->superTableUid)) < 0) goto _err;
|
||||||
|
|
||||||
int32_t tagDataLen = htonl(pMsg->tagDataLen);
|
int32_t tagDataLen = htonl(pMsg->tagDataLen);
|
||||||
|
|
|
@ -174,7 +174,7 @@ static int32_t vnodeProcessDropTableMsg(SVnodeObj *pVnode, void *pCont, SRspRet
|
||||||
SMDDropTableMsg *pTable = pCont;
|
SMDDropTableMsg *pTable = pCont;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
vDebug("vgId:%d, table:%s, start to drop", pVnode->vgId, pTable->tableId);
|
vDebug("vgId:%d, table:%s, start to drop", pVnode->vgId, pTable->tableFname);
|
||||||
STableId tableId = {.uid = htobe64(pTable->uid), .tid = htonl(pTable->tid)};
|
STableId tableId = {.uid = htobe64(pTable->uid), .tid = htonl(pTable->tid)};
|
||||||
|
|
||||||
if (tsdbDropTable(pVnode->tsdb, tableId) < 0) code = terrno;
|
if (tsdbDropTable(pVnode->tsdb, tableId) < 0) code = terrno;
|
||||||
|
@ -197,13 +197,13 @@ static int32_t vnodeProcessDropStableMsg(SVnodeObj *pVnode, void *pCont, SRspRet
|
||||||
SDropSTableMsg *pTable = pCont;
|
SDropSTableMsg *pTable = pCont;
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
vDebug("vgId:%d, stable:%s, start to drop", pVnode->vgId, pTable->tableId);
|
vDebug("vgId:%d, stable:%s, start to drop", pVnode->vgId, pTable->tableFname);
|
||||||
|
|
||||||
STableId stableId = {.uid = htobe64(pTable->uid), .tid = -1};
|
STableId stableId = {.uid = htobe64(pTable->uid), .tid = -1};
|
||||||
|
|
||||||
if (tsdbDropTable(pVnode->tsdb, stableId) < 0) code = terrno;
|
if (tsdbDropTable(pVnode->tsdb, stableId) < 0) code = terrno;
|
||||||
|
|
||||||
vDebug("vgId:%d, stable:%s, drop stable result:%s", pVnode->vgId, pTable->tableId, tstrerror(code));
|
vDebug("vgId:%d, stable:%s, drop stable result:%s", pVnode->vgId, pTable->tableFname, tstrerror(code));
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue