提交 b2e06d1c 编写于 作者: weixin_48148422's avatar weixin_48148422

Minor improvement to 'setErrMsg'

1. code like `char msg[] = "xxxxxx"` unnecessarily copied the string to stack, changed to `const char* msg = "xxxxxx"`.
2. the 2rd argument of `setErrMsg` is changed from `char*` to `const char*`.
3. the 3rd argument of `setErrMsg` is removed as `strncpy` stops copying at the end of source string.
上级 4dcf8d7f
...@@ -348,7 +348,7 @@ int32_t tsParseOneColumnData(SSchema* pSchema, char* value, int valuelen, char* ...@@ -348,7 +348,7 @@ int32_t tsParseOneColumnData(SSchema* pSchema, char* value, int valuelen, char*
// todo merge the error msg function with tSQLParser // todo merge the error msg function with tSQLParser
static void setErrMsg(char* msg, char* sql) { static void setErrMsg(char* msg, char* sql) {
char msgFormat[] = "near \"%s\" syntax error"; const char* msgFormat = "near \"%s\" syntax error";
const int32_t BACKWARD_CHAR_STEP = 15; const int32_t BACKWARD_CHAR_STEP = 15;
// only extract part of sql string,avoid too long sql string cause stack over flow // only extract part of sql string,avoid too long sql string cause stack over flow
......
...@@ -76,7 +76,7 @@ static int32_t insertResultField(SSqlCmd* pCmd, int32_t fieldIDInResult, SColumn ...@@ -76,7 +76,7 @@ static int32_t insertResultField(SSqlCmd* pCmd, int32_t fieldIDInResult, SColumn
int8_t type, char* fieldName); int8_t type, char* fieldName);
static int32_t changeFunctionID(int32_t optr, int16_t* pExpr); static int32_t changeFunctionID(int32_t optr, int16_t* pExpr);
static void setErrMsg(SSqlCmd* pCmd, char* pzErrMsg, int32_t maxLen); static void setErrMsg(SSqlCmd* pCmd, const char* pzErrMsg);
static int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMetric); static int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMetric);
...@@ -140,7 +140,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -140,7 +140,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSqlCmd* pCmd = &(pSql->cmd); SSqlCmd* pCmd = &(pSql->cmd);
if (!pInfo->validSql) { if (!pInfo->validSql) {
setErrMsg(pCmd, pInfo->pzErrMsg, tListLen(pInfo->pzErrMsg)); setErrMsg(pCmd, pInfo->pzErrMsg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -153,13 +153,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -153,13 +153,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case DROP_USER: case DROP_USER:
case DROP_ACCOUNT: case DROP_ACCOUNT:
case DROP_DATABASE: { case DROP_DATABASE: {
char msg[] = "param name too long"; const char* msg = "param name too long";
char msg1[] = "invalid ip address"; const char* msg1 = "invalid ip address";
char msg2[] = "invalid name"; const char* msg2 = "invalid name";
SSQLToken* pzName = &pInfo->pDCLInfo->a[0]; SSQLToken* pzName = &pInfo->pDCLInfo->a[0];
if ((pInfo->sqlType != DROP_DNODE) && (tscValidateName(pzName) != TSDB_CODE_SUCCESS)) { if ((pInfo->sqlType != DROP_DNODE) && (tscValidateName(pzName) != TSDB_CODE_SUCCESS)) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -171,7 +171,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -171,7 +171,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t code = setObjFullName(pCmd->name, getAccountId(pSql), pzName, NULL, NULL); int32_t code = setObjFullName(pCmd->name, getAccountId(pSql), pzName, NULL, NULL);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
} }
return code; return code;
...@@ -183,12 +183,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -183,12 +183,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t ret = setMeterID(pSql, pzName); int32_t ret = setMeterID(pSql, pzName);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
} }
return ret; return ret;
} else { } else {
if (pzName->n > TSDB_USER_LEN) { if (pzName->n > TSDB_USER_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -202,19 +202,19 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -202,19 +202,19 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
case USE_DATABASE: { case USE_DATABASE: {
char msg[] = "db name too long"; const char* msg = "db name too long";
pCmd->command = TSDB_SQL_USE_DB; pCmd->command = TSDB_SQL_USE_DB;
SSQLToken* pToken = &pInfo->pDCLInfo->a[0]; SSQLToken* pToken = &pInfo->pDCLInfo->a[0];
if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) { if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) {
char msg1[] = "invalid db name"; const char* msg1 = "invalid db name";
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pToken->n > TSDB_DB_NAME_LEN) { if (pToken->n > TSDB_DB_NAME_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -247,8 +247,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -247,8 +247,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case ALTER_DATABASE: case ALTER_DATABASE:
case CREATE_DATABASE: { case CREATE_DATABASE: {
char msg2[] = "name too long"; const char* msg2 = "name too long";
char msg3[] = "invalid db name"; const char* msg3 = "invalid db name";
if (pInfo->sqlType == ALTER_DATABASE) { if (pInfo->sqlType == ALTER_DATABASE) {
pCmd->command = TSDB_SQL_ALTER_DB; pCmd->command = TSDB_SQL_ALTER_DB;
...@@ -259,13 +259,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -259,13 +259,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SCreateDBInfo* pCreateDB = &(pInfo->pDCLInfo->dbOpt); SCreateDBInfo* pCreateDB = &(pInfo->pDCLInfo->dbOpt);
if (tscValidateName(&pCreateDB->dbname) != TSDB_CODE_SUCCESS) { if (tscValidateName(&pCreateDB->dbname) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
int32_t ret = setObjFullName(pCmd->name, getAccountId(pSql), &(pCreateDB->dbname), NULL, NULL); int32_t ret = setObjFullName(pCmd->name, getAccountId(pSql), &(pCreateDB->dbname), NULL, NULL);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return ret; return ret;
} }
...@@ -280,14 +280,14 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -280,14 +280,14 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->command = (pInfo->sqlType == CREATE_USER) ? TSDB_SQL_CREATE_USER : TSDB_SQL_CREATE_ACCT; pCmd->command = (pInfo->sqlType == CREATE_USER) ? TSDB_SQL_CREATE_USER : TSDB_SQL_CREATE_ACCT;
assert(pInfo->pDCLInfo->nTokens >= 2); assert(pInfo->pDCLInfo->nTokens >= 2);
char msg[] = "name or password too long"; const char* msg = "name or password too long";
char msg1[] = "password can not be empty"; const char* msg1 = "password can not be empty";
char msg2[] = "invalid user/account name"; const char* msg2 = "invalid user/account name";
char msg3[] = "password needs single quote marks enclosed"; const char* msg3 = "password needs single quote marks enclosed";
char msg4[] = "invalid state option, available options[no, r, w, all]"; const char* msg4 = "invalid state option, available options[no, r, w, all]";
if (pInfo->pDCLInfo->a[1].type != TK_STRING) { if (pInfo->pDCLInfo->a[1].type != TK_STRING) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -296,17 +296,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -296,17 +296,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pInfo->pDCLInfo->a[1].n = strlen(pInfo->pDCLInfo->a[1].z); pInfo->pDCLInfo->a[1].n = strlen(pInfo->pDCLInfo->a[1].z);
if (pInfo->pDCLInfo->a[1].n <= 0) { if (pInfo->pDCLInfo->a[1].n <= 0) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pInfo->pDCLInfo->a[0].n > TSDB_USER_LEN || pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) { if (pInfo->pDCLInfo->a[0].n > TSDB_USER_LEN || pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (tscValidateName(&pInfo->pDCLInfo->a[0]) != TSDB_CODE_SUCCESS) { if (tscValidateName(&pInfo->pDCLInfo->a[0]) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -319,15 +319,15 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -319,15 +319,15 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t num = pInfo->pDCLInfo->nTokens; int32_t num = pInfo->pDCLInfo->nTokens;
assert(num >= 1 && num <= 2); assert(num >= 1 && num <= 2);
char msg[] = "password too long"; const char* msg = "password too long";
char msg1[] = "password can not be empty"; const char* msg1 = "password can not be empty";
char msg2[] = "invalid user/account name"; const char* msg2 = "invalid user/account name";
char msg3[] = "password needs single quote marks enclosed"; const char* msg3 = "password needs single quote marks enclosed";
char msg4[] = "invalid state option, available options[no, r, w, all]"; const char* msg4 = "invalid state option, available options[no, r, w, all]";
if (num == 2) { if (num == 2) {
if (pInfo->pDCLInfo->a[1].type != TK_STRING) { if (pInfo->pDCLInfo->a[1].type != TK_STRING) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -336,12 +336,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -336,12 +336,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pInfo->pDCLInfo->a[1].n = strlen(pInfo->pDCLInfo->a[1].z); pInfo->pDCLInfo->a[1].n = strlen(pInfo->pDCLInfo->a[1].z);
if (pInfo->pDCLInfo->a[1].n <= 0) { if (pInfo->pDCLInfo->a[1].n <= 0) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) { if (pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -349,12 +349,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -349,12 +349,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (pInfo->pDCLInfo->a[0].n > TSDB_USER_LEN) { if (pInfo->pDCLInfo->a[0].n > TSDB_USER_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (tscValidateName(&pInfo->pDCLInfo->a[0]) != TSDB_CODE_SUCCESS) { if (tscValidateName(&pInfo->pDCLInfo->a[0]) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -385,7 +385,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -385,7 +385,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} else if (strncmp(pAcctOpt->stat.z, "no", 2) == 0 && pAcctOpt->stat.n == 2) { } else if (strncmp(pAcctOpt->stat.z, "no", 2) == 0 && pAcctOpt->stat.n == 2) {
pCmd->defaultVal[8] = 0; pCmd->defaultVal[8] = 0;
} else { } else {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -395,21 +395,21 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -395,21 +395,21 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->command = TSDB_SQL_DESCRIBE_TABLE; pCmd->command = TSDB_SQL_DESCRIBE_TABLE;
SSQLToken* pToken = &pInfo->pDCLInfo->a[0]; SSQLToken* pToken = &pInfo->pDCLInfo->a[0];
char msg[] = "table name is too long"; const char* msg = "table name is too long";
if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) { if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) {
char msg1[] = "invalid table name"; const char* msg1 = "invalid table name";
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pToken->n > TSDB_METER_NAME_LEN) { if (pToken->n > TSDB_METER_NAME_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (setMeterID(pSql, pToken) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, pToken) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -427,10 +427,10 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -427,10 +427,10 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tDCLSQL* pDCL = pInfo->pDCLInfo; tDCLSQL* pDCL = pInfo->pDCLInfo;
char msg[] = "parameters too long"; const char* msg = "parameters too long";
char msg1[] = "invalid ip address"; const char* msg1 = "invalid ip address";
char msg2[] = "invalid configure options or values"; const char* msg2 = "invalid configure options or values";
char msg3[] = "password can not be empty"; const char* msg3 = "password can not be empty";
if (pInfo->sqlType != ALTER_DNODE) { if (pInfo->sqlType != ALTER_DNODE) {
strdequote(pDCL->a[1].z); strdequote(pDCL->a[1].z);
...@@ -439,12 +439,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -439,12 +439,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (pDCL->a[1].n <= 0) { if (pDCL->a[1].n <= 0) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pDCL->a[0].n > TSDB_METER_NAME_LEN || pDCL->a[1].n > TSDB_PASSWORD_LEN) { if (pDCL->a[0].n > TSDB_METER_NAME_LEN || pDCL->a[1].n > TSDB_PASSWORD_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -454,7 +454,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -454,7 +454,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
/* validate the ip address */ /* validate the ip address */
if (!validateIpAddress(ip)) { if (!validateIpAddress(ip)) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -462,7 +462,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -462,7 +462,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
/* validate the parameter names and options */ /* validate the parameter names and options */
if (validateDNodeConfig(pDCL) != TSDB_CODE_SUCCESS) { if (validateDNodeConfig(pDCL) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -473,8 +473,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -473,8 +473,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
strncpy(&pCmd->payload[pDCL->a[1].n + 1], pDCL->a[2].z, pDCL->a[2].n); strncpy(&pCmd->payload[pDCL->a[1].n + 1], pDCL->a[2].z, pDCL->a[2].n);
} }
} else { } else {
char msg[] = "invalid user rights"; const char* msg = "invalid user rights";
char msg1[] = "password can not be empty or larger than 24 characters"; const char* msg1 = "password can not be empty or larger than 24 characters";
strncpy(pCmd->name, pDCL->a[0].z, pDCL->a[0].n); strncpy(pCmd->name, pDCL->a[0].z, pDCL->a[0].n);
...@@ -487,7 +487,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -487,7 +487,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (pDCL->a[1].n <= 0 || pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) { if (pDCL->a[1].n <= 0 || pInfo->pDCLInfo->a[1].n > TSDB_PASSWORD_LEN) {
/* password cannot be empty string */ /* password cannot be empty string */
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -502,7 +502,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -502,7 +502,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} else if (strncasecmp(pDCL->a[1].z, "write", 5) == 0 && pDCL->a[1].n == 5) { } else if (strncasecmp(pDCL->a[1].z, "write", 5) == 0 && pDCL->a[1].n == 5) {
pCmd->count = 3; pCmd->count = 3;
} else { } else {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else { } else {
...@@ -513,9 +513,9 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -513,9 +513,9 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
case ALTER_LOCAL: { case ALTER_LOCAL: {
pCmd->command = TSDB_SQL_CFG_LOCAL; pCmd->command = TSDB_SQL_CFG_LOCAL;
char msg[] = "parameter too long"; const char* msg = "parameter too long";
if (pInfo->pDCLInfo->a[0].n > TSDB_METER_ID_LEN) { if (pInfo->pDCLInfo->a[0].n > TSDB_METER_ID_LEN) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -524,8 +524,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -524,8 +524,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
case TSQL_CREATE_NORMAL_METER: case TSQL_CREATE_NORMAL_METER:
case TSQL_CREATE_NORMAL_METRIC: { case TSQL_CREATE_NORMAL_METRIC: {
char msg[] = "table name too long"; const char* msg = "table name too long";
char msg1[] = "invalid table name"; const char* msg1 = "invalid table name";
tFieldList* pFieldList = pInfo->pCreateTableInfo->colInfo.pColumns; tFieldList* pFieldList = pInfo->pCreateTableInfo->colInfo.pColumns;
tFieldList* pTagList = pInfo->pCreateTableInfo->colInfo.pTagColumns; tFieldList* pTagList = pInfo->pCreateTableInfo->colInfo.pTagColumns;
...@@ -538,12 +538,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -538,12 +538,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken* pzTableName = &(pInfo->pCreateTableInfo->name); SSQLToken* pzTableName = &(pInfo->pCreateTableInfo->name);
if (tscValidateName(pzTableName) != TSDB_CODE_SUCCESS) { if (tscValidateName(pzTableName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (setMeterID(pSql, pzTableName) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, pzTableName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -571,16 +571,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -571,16 +571,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->command = TSDB_SQL_CREATE_TABLE; pCmd->command = TSDB_SQL_CREATE_TABLE;
pCmd->existsCheck = pInfo->pCreateTableInfo->existCheck; pCmd->existsCheck = pInfo->pCreateTableInfo->existCheck;
char msg[] = "invalid table name"; const char* msg = "invalid table name";
char msg1[] = "illegal value or data overflow"; const char* msg1 = "illegal value or data overflow";
char msg2[] = "illegal number of tags"; const char* msg2 = "illegal number of tags";
// table name // table name
// metric name, create table by using dst // metric name, create table by using dst
SSQLToken* pToken = &(pInfo->pCreateTableInfo->usingInfo.metricName); SSQLToken* pToken = &(pInfo->pCreateTableInfo->usingInfo.metricName);
if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) { if (tscValidateName(pToken) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -601,7 +601,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -601,7 +601,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (pSql->cmd.pMeterMeta->numOfTags != pList->nExpr) { if (pSql->cmd.pMeterMeta->numOfTags != pList->nExpr) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -612,7 +612,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -612,7 +612,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
for (int32_t i = 0; i < pList->nExpr; ++i) { for (int32_t i = 0; i < pList->nExpr; ++i) {
int32_t ret = tVariantDump(&(pList->a[i].pVar), tagVal, pTagSchema[i].type); int32_t ret = tVariantDump(&(pList->a[i].pVar), tagVal, pTagSchema[i].type);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -620,7 +620,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -620,7 +620,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (tscValidateName(&pInfo->pCreateTableInfo->name) != TSDB_CODE_SUCCESS) { if (tscValidateName(&pInfo->pCreateTableInfo->name) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -635,26 +635,26 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -635,26 +635,26 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
case TSQL_CREATE_STREAM: { case TSQL_CREATE_STREAM: {
pCmd->command = TSDB_SQL_CREATE_TABLE; pCmd->command = TSDB_SQL_CREATE_TABLE;
char msg[] = "table name too long"; const char* msg = "table name too long";
char msg1[] = "invalid table name"; const char* msg1 = "invalid table name";
// if sql specifies db, use it, otherwise use default db // if sql specifies db, use it, otherwise use default db
SSQLToken* pzTableName = &(pInfo->pCreateTableInfo->name); SSQLToken* pzTableName = &(pInfo->pCreateTableInfo->name);
SQuerySQL* pQuerySql = pInfo->pCreateTableInfo->pSelect; SQuerySQL* pQuerySql = pInfo->pCreateTableInfo->pSelect;
if (tscValidateName(pzTableName) != TSDB_CODE_SUCCESS) { if (tscValidateName(pzTableName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
SSQLToken* pSrcMeterName = &pInfo->pCreateTableInfo->pSelect->from; SSQLToken* pSrcMeterName = &pInfo->pCreateTableInfo->pSelect->from;
if (tscValidateName(pSrcMeterName) != TSDB_CODE_SUCCESS) { if (tscValidateName(pSrcMeterName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (setMeterID(pSql, pSrcMeterName) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, pSrcMeterName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -689,7 +689,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -689,7 +689,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// set the created table[stream] name // set the created table[stream] name
if (setMeterID(pSql, pzTableName) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, pzTableName) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -698,8 +698,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -698,8 +698,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
strncpy(pCmd->payload, pQuerySql->selectToken.z, pQuerySql->selectToken.n); strncpy(pCmd->payload, pQuerySql->selectToken.z, pQuerySql->selectToken.n);
if (pQuerySql->selectToken.n > TSDB_MAX_SAVED_SQL_LEN) { if (pQuerySql->selectToken.n > TSDB_MAX_SAVED_SQL_LEN) {
char msg4[] = "sql too long"; // todo ADD support const char* msg4 = "sql too long"; // todo ADD support
setErrMsg(pCmd, msg, tListLen(msg4)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -718,8 +718,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -718,8 +718,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
*/ */
if (pQuerySql->fillType != NULL) { if (pQuerySql->fillType != NULL) {
if (pCmd->nAggTimeInterval == 0) { if (pCmd->nAggTimeInterval == 0) {
char msg1[] = "fill only available for interval query"; const char* msg1 = "fill only available for interval query";
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -728,8 +728,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -728,8 +728,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) { if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
if (!((strncmp(pItem->pVar.pz, "none", 4) == 0 && pItem->pVar.nLen == 4) || if (!((strncmp(pItem->pVar.pz, "none", 4) == 0 && pItem->pVar.nLen == 4) ||
(strncmp(pItem->pVar.pz, "null", 4) == 0 && pItem->pVar.nLen == 4))) { (strncmp(pItem->pVar.pz, "null", 4) == 0 && pItem->pVar.nLen == 4))) {
char msg2[] = "fill option not supported in stream computing"; const char* msg2 = "fill option not supported in stream computing";
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -745,20 +745,20 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -745,20 +745,20 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// too many result columns not support order by in query // too many result columns not support order by in query
if (pQuerySql->pSelection->nExpr > TSDB_MAX_COLUMNS) { if (pQuerySql->pSelection->nExpr > TSDB_MAX_COLUMNS) {
char msg[] = "too many columns in selection clause"; const char* msg = "too many columns in selection clause";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (tscValidateName(&(pQuerySql->from)) != TSDB_CODE_SUCCESS) { if (tscValidateName(&(pQuerySql->from)) != TSDB_CODE_SUCCESS) {
char msg[] = "invalid table name"; const char* msg = "invalid table name";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (setMeterID(pSql, &pQuerySql->from) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, &pQuerySql->from) != TSDB_CODE_SUCCESS) {
char msg[] = "table name too long"; const char* msg = "table name too long";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -787,8 +787,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -787,8 +787,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken* pSliding = &pQuerySql->sliding; SSQLToken* pSliding = &pQuerySql->sliding;
if (pSliding->n != 0) { if (pSliding->n != 0) {
if (!tscEmbedded) { if (!tscEmbedded) {
char msg[] = "not support sliding in query"; const char* msg = "not support sliding in query";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -797,16 +797,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -797,16 +797,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->nSlidingTime /= 1000; pCmd->nSlidingTime /= 1000;
} }
char msg3[] = "sliding value too small"; const char* msg3 = "sliding value too small";
char msg4[] = "sliding value no larger than the interval value"; const char* msg4 = "sliding value no larger than the interval value";
if (pCmd->nSlidingTime < tsMinSlidingTime) { if (pCmd->nSlidingTime < tsMinSlidingTime) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pCmd->nSlidingTime > pCmd->nAggTimeInterval) { if (pCmd->nSlidingTime > pCmd->nAggTimeInterval) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -843,17 +843,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -843,17 +843,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (!hasTimestampForPointInterpQuery(pCmd)) { if (!hasTimestampForPointInterpQuery(pCmd)) {
char msg[] = "point interpolation query needs timestamp"; const char* msg = "point interpolation query needs timestamp";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pQuerySql->fillType != NULL) { if (pQuerySql->fillType != NULL) {
char msg1[] = "fill only available for interval query"; const char* msg1 = "fill only available for interval query";
char msg2[] = "start(end) time of query range required or time range too large"; const char* msg2 = "start(end) time of query range required or time range too large";
if (pCmd->nAggTimeInterval == 0 && (!tscIsPointInterpQuery(pCmd))) { if (pCmd->nAggTimeInterval == 0 && (!tscIsPointInterpQuery(pCmd))) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -863,7 +863,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -863,7 +863,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// TODO define macro // TODO define macro
if ((timeRange == 0) || (timeRange / pCmd->nAggTimeInterval) > 10000000) { if ((timeRange == 0) || (timeRange / pCmd->nAggTimeInterval) > 10000000) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -942,8 +942,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) { ...@@ -942,8 +942,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
// interval cannot be less than 10 milliseconds // interval cannot be less than 10 milliseconds
if (pCmd->nAggTimeInterval < tsMinIntervalTime) { if (pCmd->nAggTimeInterval < tsMinIntervalTime) {
char msg[] = "interval cannot be less than 10 ms"; const char* msg = "interval cannot be less than 10 ms";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -962,8 +962,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) { ...@@ -962,8 +962,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
} }
int32_t setSlidingClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) { int32_t setSlidingClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
char msg0[] = "sliding value too small"; const char* msg0 = "sliding value too small";
char msg1[] = "sliding value no larger than the interval value"; const char* msg1 = "sliding value no larger than the interval value";
SSQLToken* pSliding = &pQuerySql->sliding; SSQLToken* pSliding = &pQuerySql->sliding;
...@@ -974,12 +974,12 @@ int32_t setSlidingClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) { ...@@ -974,12 +974,12 @@ int32_t setSlidingClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
} }
if (pCmd->nSlidingTime < tsMinSlidingTime) { if (pCmd->nSlidingTime < tsMinSlidingTime) {
setErrMsg(pCmd, msg0, tListLen(msg0)); setErrMsg(pCmd, msg0);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pCmd->nSlidingTime > pCmd->nAggTimeInterval) { if (pCmd->nSlidingTime > pCmd->nAggTimeInterval) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -993,7 +993,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) { ...@@ -993,7 +993,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
//clear array //clear array
memset(pCmd->name, 0, tListLen(pCmd->name)); memset(pCmd->name, 0, tListLen(pCmd->name));
char msg[] = "name too long"; const char* msg = "name too long";
if (hasSpecifyDB(pzTableName)) { if (hasSpecifyDB(pzTableName)) {
/* /*
...@@ -1010,7 +1010,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) { ...@@ -1010,7 +1010,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
} }
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
} }
return ret; return ret;
...@@ -1019,23 +1019,23 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) { ...@@ -1019,23 +1019,23 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) { static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
assert(pFieldList != NULL); assert(pFieldList != NULL);
char msg[] = "illegal number of columns"; const char* msg = "illegal number of columns";
char msg1[] = "first column must be timestamp"; const char* msg1 = "first column must be timestamp";
char msg2[] = "row length exceeds max length"; const char* msg2 = "row length exceeds max length";
char msg3[] = "duplicated column names"; const char* msg3 = "duplicated column names";
char msg4[] = "invalid data types"; const char* msg4 = "invalid data types";
char msg5[] = "invalid binary/nchar column length"; const char* msg5 = "invalid binary/nchar column length";
char msg6[] = "invalid column name"; const char* msg6 = "invalid column name";
// number of fields no less than 2 // number of fields no less than 2
if (pFieldList->nField <= 1 || pFieldList->nField > TSDB_MAX_COLUMNS) { if (pFieldList->nField <= 1 || pFieldList->nField > TSDB_MAX_COLUMNS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return false; return false;
} }
// first column must be timestamp // first column must be timestamp
if (pFieldList->p[0].type != TSDB_DATA_TYPE_TIMESTAMP) { if (pFieldList->p[0].type != TSDB_DATA_TYPE_TIMESTAMP) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return false; return false;
} }
...@@ -1046,7 +1046,7 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) { ...@@ -1046,7 +1046,7 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
// max row length must be less than TSDB_MAX_BYTES_PER_ROW // max row length must be less than TSDB_MAX_BYTES_PER_ROW
if (nLen > TSDB_MAX_BYTES_PER_ROW) { if (nLen > TSDB_MAX_BYTES_PER_ROW) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return false; return false;
} }
...@@ -1054,23 +1054,23 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) { ...@@ -1054,23 +1054,23 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
for (int32_t i = 0; i < pFieldList->nField; ++i) { for (int32_t i = 0; i < pFieldList->nField; ++i) {
TAOS_FIELD* pField = &pFieldList->p[i]; TAOS_FIELD* pField = &pFieldList->p[i];
if (pField->type < TSDB_DATA_TYPE_BOOL || pField->type > TSDB_DATA_TYPE_NCHAR) { if (pField->type < TSDB_DATA_TYPE_BOOL || pField->type > TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return false; return false;
} }
if ((pField->type == TSDB_DATA_TYPE_BINARY && (pField->bytes <= 0 || pField->bytes > TSDB_MAX_BINARY_LEN)) || if ((pField->type == TSDB_DATA_TYPE_BINARY && (pField->bytes <= 0 || pField->bytes > TSDB_MAX_BINARY_LEN)) ||
(pField->type == TSDB_DATA_TYPE_NCHAR && (pField->bytes <= 0 || pField->bytes > TSDB_MAX_NCHAR_LEN))) { (pField->type == TSDB_DATA_TYPE_NCHAR && (pField->bytes <= 0 || pField->bytes > TSDB_MAX_NCHAR_LEN))) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return false; return false;
} }
if (validateColumnName(pField->name) != TSDB_CODE_SUCCESS) { if (validateColumnName(pField->name) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return false; return false;
} }
if (has(pFieldList, i + 1, pFieldList->p[i].name) == true) { if (has(pFieldList, i + 1, pFieldList->p[i].name) == true) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return false; return false;
} }
} }
...@@ -1081,17 +1081,17 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) { ...@@ -1081,17 +1081,17 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSqlCmd* pCmd) { static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSqlCmd* pCmd) {
assert(pTagsList != NULL); assert(pTagsList != NULL);
char msg1[] = "invalid number of tag columns"; const char* msg1 = "invalid number of tag columns";
char msg2[] = "tag length too long"; const char* msg2 = "tag length too long";
char msg3[] = "duplicated column names"; const char* msg3 = "duplicated column names";
char msg4[] = "timestamp not allowed in tags"; const char* msg4 = "timestamp not allowed in tags";
char msg5[] = "invalid data type in tags"; const char* msg5 = "invalid data type in tags";
char msg6[] = "invalid tag name"; const char* msg6 = "invalid tag name";
char msg7[] = "invalid binary/nchar tag length"; const char* msg7 = "invalid binary/nchar tag length";
// number of fields at least 1 // number of fields at least 1
if (pTagsList->nField < 1 || pTagsList->nField > TSDB_MAX_TAGS) { if (pTagsList->nField < 1 || pTagsList->nField > TSDB_MAX_TAGS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return false; return false;
} }
...@@ -1102,14 +1102,14 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq ...@@ -1102,14 +1102,14 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
// max tag row length must be less than TSDB_MAX_TAGS_LEN // max tag row length must be less than TSDB_MAX_TAGS_LEN
if (nLen > TSDB_MAX_TAGS_LEN) { if (nLen > TSDB_MAX_TAGS_LEN) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return false; return false;
} }
// field name must be unique // field name must be unique
for (int32_t i = 0; i < pTagsList->nField; ++i) { for (int32_t i = 0; i < pTagsList->nField; ++i) {
if (has(pFieldList, 0, pTagsList->p[i].name) == true) { if (has(pFieldList, 0, pTagsList->p[i].name) == true) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return false; return false;
} }
} }
...@@ -1117,28 +1117,28 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq ...@@ -1117,28 +1117,28 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
/* timestamp in tag is not allowed */ /* timestamp in tag is not allowed */
for (int32_t i = 0; i < pTagsList->nField; ++i) { for (int32_t i = 0; i < pTagsList->nField; ++i) {
if (pTagsList->p[i].type == TSDB_DATA_TYPE_TIMESTAMP) { if (pTagsList->p[i].type == TSDB_DATA_TYPE_TIMESTAMP) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return false; return false;
} }
if (pTagsList->p[i].type < TSDB_DATA_TYPE_BOOL || pTagsList->p[i].type > TSDB_DATA_TYPE_NCHAR) { if (pTagsList->p[i].type < TSDB_DATA_TYPE_BOOL || pTagsList->p[i].type > TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return false; return false;
} }
if ((pTagsList->p[i].type == TSDB_DATA_TYPE_BINARY && pTagsList->p[i].bytes <= 0) || if ((pTagsList->p[i].type == TSDB_DATA_TYPE_BINARY && pTagsList->p[i].bytes <= 0) ||
(pTagsList->p[i].type == TSDB_DATA_TYPE_NCHAR && pTagsList->p[i].bytes <= 0)) { (pTagsList->p[i].type == TSDB_DATA_TYPE_NCHAR && pTagsList->p[i].bytes <= 0)) {
setErrMsg(pCmd, msg7, tListLen(msg7)); setErrMsg(pCmd, msg7);
return false; return false;
} }
if (validateColumnName(pTagsList->p[i].name) != TSDB_CODE_SUCCESS) { if (validateColumnName(pTagsList->p[i].name) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return false; return false;
} }
if (has(pTagsList, i + 1, pTagsList->p[i].name) == true) { if (has(pTagsList, i + 1, pTagsList->p[i].name) == true) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return false; return false;
} }
} }
...@@ -1150,12 +1150,12 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq ...@@ -1150,12 +1150,12 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
* tags name /column name is truncated in sql.y * tags name /column name is truncated in sql.y
*/ */
bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) { bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
char msg1[] = "timestamp not allowed in tags"; const char* msg1 = "timestamp not allowed in tags";
char msg2[] = "duplicated column names"; const char* msg2 = "duplicated column names";
char msg3[] = "tag length too long"; const char* msg3 = "tag length too long";
char msg4[] = "invalid tag name"; const char* msg4 = "invalid tag name";
char msg5[] = "invalid binary/nchar tag length"; const char* msg5 = "invalid binary/nchar tag length";
char msg6[] = "invalid data type in tags"; const char* msg6 = "invalid data type in tags";
SMeterMeta* pMeterMeta = pCmd->pMeterMeta; SMeterMeta* pMeterMeta = pCmd->pMeterMeta;
...@@ -1164,18 +1164,18 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) { ...@@ -1164,18 +1164,18 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
char msg[128] = {0}; char msg[128] = {0};
sprintf(msg, "tags no more than %d", TSDB_MAX_TAGS); sprintf(msg, "tags no more than %d", TSDB_MAX_TAGS);
setErrMsg(pCmd, msg, strlen(msg)); setErrMsg(pCmd, msg);
return false; return false;
} }
// no timestamp allowable // no timestamp allowable
if (pTagField->type == TSDB_DATA_TYPE_TIMESTAMP) { if (pTagField->type == TSDB_DATA_TYPE_TIMESTAMP) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return false; return false;
} }
if (pTagField->type < TSDB_DATA_TYPE_BOOL && pTagField->type > TSDB_DATA_TYPE_NCHAR) { if (pTagField->type < TSDB_DATA_TYPE_BOOL && pTagField->type > TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return false; return false;
} }
...@@ -1188,19 +1188,19 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) { ...@@ -1188,19 +1188,19 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
// length less than TSDB_MAX_TASG_LEN // length less than TSDB_MAX_TASG_LEN
if (nLen + pTagField->bytes > TSDB_MAX_TAGS_LEN) { if (nLen + pTagField->bytes > TSDB_MAX_TAGS_LEN) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return false; return false;
} }
// tags name can not be a keyword // tags name can not be a keyword
if (validateColumnName(pTagField->name) != TSDB_CODE_SUCCESS) { if (validateColumnName(pTagField->name) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return false; return false;
} }
// binary(val), val can not be equalled to or less than 0 // binary(val), val can not be equalled to or less than 0
if ((pTagField->type == TSDB_DATA_TYPE_BINARY || pTagField->type == TSDB_DATA_TYPE_NCHAR) && pTagField->bytes <= 0) { if ((pTagField->type == TSDB_DATA_TYPE_BINARY || pTagField->type == TSDB_DATA_TYPE_NCHAR) && pTagField->bytes <= 0) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return false; return false;
} }
...@@ -1209,7 +1209,7 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) { ...@@ -1209,7 +1209,7 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
for (int32_t i = 0; i < pMeterMeta->numOfTags + pMeterMeta->numOfColumns; ++i) { for (int32_t i = 0; i < pMeterMeta->numOfTags + pMeterMeta->numOfColumns; ++i) {
if (strncasecmp(pTagField->name, pSchema[i].name, TSDB_COL_NAME_LEN) == 0) { if (strncasecmp(pTagField->name, pSchema[i].name, TSDB_COL_NAME_LEN) == 0) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return false; return false;
} }
} }
...@@ -1218,29 +1218,29 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) { ...@@ -1218,29 +1218,29 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
} }
bool validateOneColumn(SSqlCmd* pCmd, TAOS_FIELD* pColField) { bool validateOneColumn(SSqlCmd* pCmd, TAOS_FIELD* pColField) {
char msg1[] = "too many columns"; const char* msg1 = "too many columns";
char msg2[] = "duplicated column names"; const char* msg2 = "duplicated column names";
char msg3[] = "column length too long"; const char* msg3 = "column length too long";
char msg4[] = "invalid data types"; const char* msg4 = "invalid data types";
char msg5[] = "invalid column name"; const char* msg5 = "invalid column name";
char msg6[] = "invalid column length"; const char* msg6 = "invalid column length";
SMeterMeta* pMeterMeta = pCmd->pMeterMeta; SMeterMeta* pMeterMeta = pCmd->pMeterMeta;
// no more max columns // no more max columns
if (pMeterMeta->numOfColumns >= TSDB_MAX_COLUMNS || if (pMeterMeta->numOfColumns >= TSDB_MAX_COLUMNS ||
pMeterMeta->numOfTags + pMeterMeta->numOfColumns >= TSDB_MAX_COLUMNS) { pMeterMeta->numOfTags + pMeterMeta->numOfColumns >= TSDB_MAX_COLUMNS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return false; return false;
} }
if (pColField->type < TSDB_DATA_TYPE_BOOL || pColField->type > TSDB_DATA_TYPE_NCHAR) { if (pColField->type < TSDB_DATA_TYPE_BOOL || pColField->type > TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return false; return false;
} }
if (validateColumnName(pColField->name) != TSDB_CODE_SUCCESS) { if (validateColumnName(pColField->name) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return false; return false;
} }
...@@ -1252,20 +1252,20 @@ bool validateOneColumn(SSqlCmd* pCmd, TAOS_FIELD* pColField) { ...@@ -1252,20 +1252,20 @@ bool validateOneColumn(SSqlCmd* pCmd, TAOS_FIELD* pColField) {
} }
if (pColField->bytes <= 0) { if (pColField->bytes <= 0) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return false; return false;
} }
// length less than TSDB_MAX_BYTES_PER_ROW // length less than TSDB_MAX_BYTES_PER_ROW
if (nLen + pColField->bytes > TSDB_MAX_BYTES_PER_ROW) { if (nLen + pColField->bytes > TSDB_MAX_BYTES_PER_ROW) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return false; return false;
} }
// field name must be unique // field name must be unique
for (int32_t i = 0; i < pMeterMeta->numOfTags + pMeterMeta->numOfColumns; ++i) { for (int32_t i = 0; i < pMeterMeta->numOfTags + pMeterMeta->numOfColumns; ++i) {
if (strncasecmp(pColField->name, pSchema[i].name, TSDB_COL_NAME_LEN) == 0) { if (strncasecmp(pColField->name, pSchema[i].name, TSDB_COL_NAME_LEN) == 0) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return false; return false;
} }
} }
...@@ -1366,10 +1366,10 @@ static void extractColumnNameFromString(tSQLExprItem* pItem, char* tmpBuf) { ...@@ -1366,10 +1366,10 @@ static void extractColumnNameFromString(tSQLExprItem* pItem, char* tmpBuf) {
int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMetric) { int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMetric) {
assert(pSelection != NULL && pCmd != NULL); assert(pSelection != NULL && pCmd != NULL);
char msg1[] = "invalid column name/illegal column type in arithmetic expression"; const char* msg1 = "invalid column name/illegal column type in arithmetic expression";
char msg2[] = "functions can not be mixed up"; const char* msg2 = "functions can not be mixed up";
char msg3[] = "not support query expression"; const char* msg3 = "not support query expression";
char msg4[] = "function not support in STable query"; const char* msg4 = "function not support in STable query";
SSchema* pSchema = tsGetSchema(pCmd->pMeterMeta); SSchema* pSchema = tsGetSchema(pCmd->pMeterMeta);
...@@ -1406,7 +1406,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet ...@@ -1406,7 +1406,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
/* arithmetic function in select*/ /* arithmetic function in select*/
int32_t ret = validateArithmeticSQLExpr(pItem->pNode, pSchema, pCmd->pMeterMeta->numOfColumns); int32_t ret = validateArithmeticSQLExpr(pItem->pNode, pSchema, pCmd->pMeterMeta->numOfColumns);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -1441,7 +1441,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet ...@@ -1441,7 +1441,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
* not support such expression * not support such expression
* e.g., select 12+5 from table_name * e.g., select 12+5 from table_name
*/ */
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -1451,7 +1451,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet ...@@ -1451,7 +1451,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
} }
if (!functionCompatibleCheck(pCmd)) { if (!functionCompatibleCheck(pCmd)) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -1470,7 +1470,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet ...@@ -1470,7 +1470,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
tscTansformSQLFunctionForMetricQuery(pCmd); tscTansformSQLFunctionForMetricQuery(pCmd);
if (hasUnsupportFunctionsForMetricQuery(pCmd)) { if (hasUnsupportFunctionsForMetricQuery(pCmd)) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -1578,8 +1578,8 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SSchema* pSchema, tSQLExp ...@@ -1578,8 +1578,8 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SSchema* pSchema, tSQLExp
addRequiredTagColumn(pCmd, -1); addRequiredTagColumn(pCmd, -1);
pExpr->colInfo.isTag = true; pExpr->colInfo.isTag = true;
} else { } else {
char msg[] = "invalid column name"; const char* msg = "invalid column name";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else { } else {
...@@ -1611,12 +1611,12 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SSchema* pSchema, int32_t ...@@ -1611,12 +1611,12 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SSchema* pSchema, int32_t
int16_t bytes = 0; int16_t bytes = 0;
char columnName[TSDB_COL_NAME_LEN] = {0}; char columnName[TSDB_COL_NAME_LEN] = {0};
char msg1[] = "not support column types"; const char* msg1 = "not support column types";
if (functionID == TSDB_FUNC_SPREAD) { if (functionID == TSDB_FUNC_SPREAD) {
if (pSchema[idx].type == TSDB_DATA_TYPE_BINARY || pSchema[idx].type == TSDB_DATA_TYPE_NCHAR || if (pSchema[idx].type == TSDB_DATA_TYPE_BINARY || pSchema[idx].type == TSDB_DATA_TYPE_NCHAR ||
pSchema[idx].type == TSDB_DATA_TYPE_BOOL) { pSchema[idx].type == TSDB_DATA_TYPE_BOOL) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return -1; return -1;
} else { } else {
type = TSDB_DATA_TYPE_DOUBLE; type = TSDB_DATA_TYPE_DOUBLE;
...@@ -1652,16 +1652,16 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1652,16 +1652,16 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
SSchema* pSchema = tsGetSchema(pCmd->pMeterMeta); SSchema* pSchema = tsGetSchema(pCmd->pMeterMeta);
int32_t numOfAddedColumn = 1; int32_t numOfAddedColumn = 1;
char msg[] = "invalid parameters"; const char* msg = "invalid parameters";
char msg1[] = "not support column types"; const char* msg1 = "not support column types";
char msg3[] = "illegal column name"; const char* msg3 = "illegal column name";
char msg5[] = "parameter is out of range [0, 100]"; const char* msg5 = "parameter is out of range [0, 100]";
switch (optr) { switch (optr) {
case TK_COUNT: { case TK_COUNT: {
if (pItem->pNode->pParam != NULL && pItem->pNode->pParam->nExpr != 1) { if (pItem->pNode->pParam != NULL && pItem->pNode->pParam->nExpr != 1) {
/* more than one parameter for count() function */ /* more than one parameter for count() function */
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
...@@ -1675,7 +1675,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1675,7 +1675,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if (pItem->pNode->pParam != NULL) { if (pItem->pNode->pParam != NULL) {
SSQLToken* pToken = &pItem->pNode->pParam->a[0].pNode->colInfo; SSQLToken* pToken = &pItem->pNode->pParam->a[0].pNode->colInfo;
if (pToken->z == NULL || pToken->n == 0) { if (pToken->z == NULL || pToken->n == 0) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
...@@ -1686,7 +1686,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1686,7 +1686,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
} else { } else {
columnId = getColumnIndexByName(pToken, pSchema, pCmd->pMeterMeta->numOfColumns); columnId = getColumnIndexByName(pToken, pSchema, pCmd->pMeterMeta->numOfColumns);
if (columnId < 0) { // invalid column name if (columnId < 0) { // invalid column name
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
...@@ -1719,26 +1719,26 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1719,26 +1719,26 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if (pItem->pNode->pParam == NULL || (optr != TK_LEASTSQUARES && pItem->pNode->pParam->nExpr != 1) || if (pItem->pNode->pParam == NULL || (optr != TK_LEASTSQUARES && pItem->pNode->pParam->nExpr != 1) ||
(optr == TK_LEASTSQUARES && pItem->pNode->pParam->nExpr != 3)) { (optr == TK_LEASTSQUARES && pItem->pNode->pParam->nExpr != 3)) {
/* no parameters or more than one parameter for function */ /* no parameters or more than one parameter for function */
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[0]); tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[0]);
if (pParamElem->pNode->nSQLOptr != TK_ALL && pParamElem->pNode->nSQLOptr != TK_ID) { if (pParamElem->pNode->nSQLOptr != TK_ALL && pParamElem->pNode->nSQLOptr != TK_ID) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
int32_t idx = getColumnIndexByName(&pParamElem->pNode->colInfo, pSchema, pCmd->pMeterMeta->numOfColumns); int32_t idx = getColumnIndexByName(&pParamElem->pNode->colInfo, pSchema, pCmd->pMeterMeta->numOfColumns);
if (idx < 0) { // invalid column name if (idx < 0) { // invalid column name
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
// 2. check if sql function can be applied on this column data type // 2. check if sql function can be applied on this column data type
int16_t colType = pSchema[idx].type; int16_t colType = pSchema[idx].type;
if (colType == TSDB_DATA_TYPE_BOOL || colType >= TSDB_DATA_TYPE_BINARY) { if (colType == TSDB_DATA_TYPE_BOOL || colType >= TSDB_DATA_TYPE_BINARY) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return -1; return -1;
} }
...@@ -1800,7 +1800,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1800,7 +1800,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if (!requireAllFields) { if (!requireAllFields) {
if (pItem->pNode->pParam->nExpr < 1) { if (pItem->pNode->pParam->nExpr < 1) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
...@@ -1809,7 +1809,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1809,7 +1809,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
for (int32_t i = 0; i < pItem->pNode->pParam->nExpr; ++i) { for (int32_t i = 0; i < pItem->pNode->pParam->nExpr; ++i) {
tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[i]); tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[i]);
if (pParamElem->pNode->nSQLOptr != TK_ALL && pParamElem->pNode->nSQLOptr != TK_ID) { if (pParamElem->pNode->nSQLOptr != TK_ALL && pParamElem->pNode->nSQLOptr != TK_ID) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
...@@ -1841,13 +1841,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1841,13 +1841,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
// 1. valid the number of parameters // 1. valid the number of parameters
if (pItem->pNode->pParam == NULL || pItem->pNode->pParam->nExpr != 2) { if (pItem->pNode->pParam == NULL || pItem->pNode->pParam->nExpr != 2) {
/* no parameters or more than one parameter for function */ /* no parameters or more than one parameter for function */
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[0]); tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[0]);
if (pParamElem->pNode->nSQLOptr != TK_ID) { if (pParamElem->pNode->nSQLOptr != TK_ID) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
} }
char columnName[TSDB_COL_NAME_LEN] = {0}; char columnName[TSDB_COL_NAME_LEN] = {0};
...@@ -1861,13 +1861,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1861,13 +1861,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
// 2. valid the column type // 2. valid the column type
int16_t colType = pSchema[idx].type; int16_t colType = pSchema[idx].type;
if (colType == TSDB_DATA_TYPE_BOOL || colType >= TSDB_DATA_TYPE_BINARY) { if (colType == TSDB_DATA_TYPE_BOOL || colType >= TSDB_DATA_TYPE_BINARY) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return -1; return -1;
} }
// 3. valid the parameters // 3. valid the parameters
if (pParamElem[1].pNode->nSQLOptr == TK_ID) { if (pParamElem[1].pNode->nSQLOptr == TK_ID) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
...@@ -1882,7 +1882,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem ...@@ -1882,7 +1882,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
double dp = *((double*)val); double dp = *((double*)val);
if (dp < 0 || dp > 100) { // todo use macro if (dp < 0 || dp > 100) { // todo use macro
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return -1; return -1;
} }
...@@ -2038,9 +2038,9 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -2038,9 +2038,9 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->command = TSDB_SQL_SHOW; pCmd->command = TSDB_SQL_SHOW;
int8_t type = pInfo->sqlType; int8_t type = pInfo->sqlType;
char msg[] = "database name too long"; const char* msg = "database name too long";
char msg1[] = "invalid database name"; const char* msg1 = "invalid database name";
char msg2[] = "pattern filter string too long"; const char* msg2 = "pattern filter string too long";
switch (type) { switch (type) {
case SHOW_VGROUPS: case SHOW_VGROUPS:
...@@ -2085,12 +2085,12 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -2085,12 +2085,12 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken* pDbPrefixToken = &pInfo->pDCLInfo->a[0]; SSQLToken* pDbPrefixToken = &pInfo->pDCLInfo->a[0];
if (pDbPrefixToken->n > TSDB_DB_NAME_LEN) { // db name is too long if (pDbPrefixToken->n > TSDB_DB_NAME_LEN) { // db name is too long
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pDbPrefixToken->n > 0 && tscValidateName(pDbPrefixToken) != TSDB_CODE_SUCCESS) { if (pDbPrefixToken->n > 0 && tscValidateName(pDbPrefixToken) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -2117,7 +2117,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -2117,7 +2117,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->payloadLen = strlen(pCmd->payload); pCmd->payloadLen = strlen(pCmd->payload);
if (pCmd->payloadLen > TSDB_METER_NAME_LEN) { if (pCmd->payloadLen > TSDB_METER_NAME_LEN) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; // wildcard is too long return TSDB_CODE_INVALID_SQL; // wildcard is too long
} }
} }
...@@ -2158,8 +2158,8 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -2158,8 +2158,8 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (!validateIpAddress(ipStr)) { if (!validateIpAddress(ipStr)) {
memset(pCmd->payload, 0, tListLen(pCmd->payload)); memset(pCmd->payload, 0, tListLen(pCmd->payload));
char msg[] = "invalid ip address"; const char* msg = "invalid ip address";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -2167,18 +2167,17 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -2167,18 +2167,17 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (port <= 0 || port > 65535) { if (port <= 0 || port > 65535) {
memset(pCmd->payload, 0, tListLen(pCmd->payload)); memset(pCmd->payload, 0, tListLen(pCmd->payload));
char msg[] = "invalid port"; const char* msg = "invalid port";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
void setErrMsg(SSqlCmd* pCmd, char* pzErrMsg, int32_t maxLen) { void setErrMsg(SSqlCmd* pCmd, const char* pzErrMsg) {
int32_t validLen = (maxLen > pCmd->allocSize) ? pCmd->allocSize : maxLen; strncpy(pCmd->payload, pzErrMsg, pCmd->allocSize);
strncpy(pCmd->payload, pzErrMsg, validLen); pCmd->payload[pCmd->allocSize - 1] = 0;
pCmd->payload[validLen - 1] = 0;
} }
bool validateIpAddress(char* ip) { bool validateIpAddress(char* ip) {
...@@ -2306,16 +2305,16 @@ void updateTagColumnIndex(SSqlCmd* pCmd) { ...@@ -2306,16 +2305,16 @@ void updateTagColumnIndex(SSqlCmd* pCmd) {
} }
int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) { int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
char msg1[] = "too many columns in group by clause"; const char* msg1 = "too many columns in group by clause";
char msg2[] = "invalid column name in group by clause"; const char* msg2 = "invalid column name in group by clause";
char msg3[] = "functions are not available in group by query"; const char* msg3 = "functions are not available in group by query";
char msg4[] = "group by only available for STable query"; const char* msg4 = "group by only available for STable query";
if (UTIL_METER_IS_NOMRAL_METER(pCmd)) { if (UTIL_METER_IS_NOMRAL_METER(pCmd)) {
if (pList == NULL) { if (pList == NULL) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} else { } else {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -2326,7 +2325,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) { ...@@ -2326,7 +2325,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
pCmd->groupbyExpr.numOfGroupbyCols = pList->nExpr; pCmd->groupbyExpr.numOfGroupbyCols = pList->nExpr;
if (pList->nExpr > TSDB_MAX_TAGS) { if (pList->nExpr > TSDB_MAX_TAGS) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -2353,7 +2352,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) { ...@@ -2353,7 +2352,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
} else { } else {
colIdx = getColumnIndexByName(&token, pSchema, pMeterMeta->numOfTags + pMeterMeta->numOfColumns); colIdx = getColumnIndexByName(&token, pSchema, pMeterMeta->numOfTags + pMeterMeta->numOfColumns);
if (colIdx < pMeterMeta->numOfColumns || colIdx > TSDB_MAX_TAGS + pMeterMeta->numOfColumns) { if (colIdx < pMeterMeta->numOfColumns || colIdx > TSDB_MAX_TAGS + pMeterMeta->numOfColumns) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -2391,12 +2390,12 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) { ...@@ -2391,12 +2390,12 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
int32_t functId = tscSqlExprGet(pCmd, i)->sqlFuncId; int32_t functId = tscSqlExprGet(pCmd, i)->sqlFuncId;
if (IS_MULTIOUTPUT(aAggs[functId].nStatus) && functId != TSDB_FUNC_TOP_DST && functId != TSDB_FUNC_BOTTOM_DST && if (IS_MULTIOUTPUT(aAggs[functId].nStatus) && functId != TSDB_FUNC_TOP_DST && functId != TSDB_FUNC_BOTTOM_DST &&
functId != TSDB_FUNC_TOP && functId != TSDB_FUNC_BOTTOM) { functId != TSDB_FUNC_TOP && functId != TSDB_FUNC_BOTTOM) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (functId == TSDB_FUNC_COUNT && tscSqlExprGet(pCmd, i)->colInfo.colIdx == -1) { if (functId == TSDB_FUNC_COUNT && tscSqlExprGet(pCmd, i)->colInfo.colIdx == -1) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -2592,15 +2591,15 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu ...@@ -2592,15 +2591,15 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
tSQLExpr* pLeft = pExpr->pLeft; tSQLExpr* pLeft = pExpr->pLeft;
tSQLExpr* pRight = pExpr->pRight; tSQLExpr* pRight = pExpr->pRight;
char msg0[] = "invalid table name list"; const char* msg0 = "invalid table name list";
char msg1[] = "like operation is not allowed on numeric tags"; const char* msg1 = "like operation is not allowed on numeric tags";
char msg2[] = "in and query condition cannot be mixed up"; const char* msg2 = "in and query condition cannot be mixed up";
STagCond* pCond = &pCmd->tagCond; STagCond* pCond = &pCmd->tagCond;
if (pExpr->nSQLOptr == TK_IN && pRight->nSQLOptr == TK_SET) { if (pExpr->nSQLOptr == TK_IN && pRight->nSQLOptr == TK_SET) {
/* table name array list, invoke another routine */ /* table name array list, invoke another routine */
if (pCond->type == TSQL_STABLE_QTYPE_COND) { if (pCond->type == TSQL_STABLE_QTYPE_COND) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -2612,14 +2611,14 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu ...@@ -2612,14 +2611,14 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
int32_t ret = createTableNameList(pRight, queryStr); int32_t ret = createTableNameList(pRight, queryStr);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg0, tListLen(msg0)); setErrMsg(pCmd, msg0);
} }
return ret; return ret;
} }
// already use IN predicates // already use IN predicates
if (pCond->type == TSQL_STABLE_QTYPE_SET) { if (pCond->type == TSQL_STABLE_QTYPE_SET) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else { } else {
pCond->type = TSQL_STABLE_QTYPE_COND; pCond->type = TSQL_STABLE_QTYPE_COND;
...@@ -2647,7 +2646,7 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu ...@@ -2647,7 +2646,7 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
int32_t colIdx = getColumnIndexByName(&pLeft->colInfo, pSchema, numOfCols + numOfTags); int32_t colIdx = getColumnIndexByName(&pLeft->colInfo, pSchema, numOfCols + numOfTags);
if ((!isTbnameToken(&pLeft->colInfo)) && pSchema[colIdx].type != TSDB_DATA_TYPE_BINARY && if ((!isTbnameToken(&pLeft->colInfo)) && pSchema[colIdx].type != TSDB_DATA_TYPE_BINARY &&
pSchema[colIdx].type != TSDB_DATA_TYPE_NCHAR) { pSchema[colIdx].type != TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -2781,18 +2780,18 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp ...@@ -2781,18 +2780,18 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp
SMeterMeta* pMeterMeta = pCmd->pMeterMeta; SMeterMeta* pMeterMeta = pCmd->pMeterMeta;
SSchema* pSchema = tsGetSchema(pMeterMeta); SSchema* pSchema = tsGetSchema(pMeterMeta);
char msg[] = "nchar column not available for filter"; const char* msg = "nchar column not available for filter";
char msg1[] = "non binary column not support like operator"; const char* msg1 = "non binary column not support like operator";
char msg2[] = "binary column not support this operator"; const char* msg2 = "binary column not support this operator";
char msg3[] = "column not support in operator"; const char* msg3 = "column not support in operator";
if (pSchema[colIdx].type == TSDB_DATA_TYPE_NCHAR) { if (pSchema[colIdx].type == TSDB_DATA_TYPE_NCHAR) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return -1; return -1;
} }
if (pExpr->nSQLOptr == TK_IN) { if (pExpr->nSQLOptr == TK_IN) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return -1; return -1;
} }
...@@ -2802,12 +2801,12 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp ...@@ -2802,12 +2801,12 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp
if (pColFilter->filterOnBinary) { if (pColFilter->filterOnBinary) {
if (pExpr->nSQLOptr != TK_EQ && pExpr->nSQLOptr != TK_NE && pExpr->nSQLOptr != TK_LIKE) { if (pExpr->nSQLOptr != TK_EQ && pExpr->nSQLOptr != TK_NE && pExpr->nSQLOptr != TK_LIKE) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else { } else {
if (pExpr->nSQLOptr == TK_LIKE) { if (pExpr->nSQLOptr == TK_LIKE) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -2827,27 +2826,27 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, bool* queryTimeRangeIsSet, c ...@@ -2827,27 +2826,27 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, bool* queryTimeRangeIsSet, c
int32_t numOfCols = pMeterMeta->numOfColumns; int32_t numOfCols = pMeterMeta->numOfColumns;
int32_t numOfTags = pMeterMeta->numOfTags; int32_t numOfTags = pMeterMeta->numOfTags;
char msg[] = "meter query cannot use tags filter"; const char* msg = "meter query cannot use tags filter";
char msg1[] = "illegal column name"; const char* msg1 = "illegal column name";
char msg2[] = "invalid timestamp"; const char* msg2 = "invalid timestamp";
int32_t colIdx = getColumnIndexByName(&pLeft->colInfo, pSchema, numOfCols + numOfTags); int32_t colIdx = getColumnIndexByName(&pLeft->colInfo, pSchema, numOfCols + numOfTags);
bool istbname = isTbnameToken(&pLeft->colInfo); bool istbname = isTbnameToken(&pLeft->colInfo);
if (colIdx < 0 && (!istbname)) { if (colIdx < 0 && (!istbname)) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (colIdx == 0) { // query on time range if (colIdx == 0) { // query on time range
*queryTimeRangeIsSet = true; *queryTimeRangeIsSet = true;
if (getTimeRange(stime, etime, pRight, pExpr->nSQLOptr, pMeterMeta->precision) != TSDB_CODE_SUCCESS) { if (getTimeRange(stime, etime, pRight, pExpr->nSQLOptr, pMeterMeta->precision) != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else if (colIdx >= numOfCols || istbname) { // query on tags } else if (colIdx >= numOfCols || istbname) { // query on tags
if (UTIL_METER_IS_NOMRAL_METER(pCmd)) { if (UTIL_METER_IS_NOMRAL_METER(pCmd)) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
return buildTagQueryCondString(pCmd, pExpr, queryStr); return buildTagQueryCondString(pCmd, pExpr, queryStr);
...@@ -2939,8 +2938,8 @@ int32_t getQueryCondExprImpl(SSqlCmd* pCmd, tSQLExpr* pExpr, int64_t* stime, int ...@@ -2939,8 +2938,8 @@ int32_t getQueryCondExprImpl(SSqlCmd* pCmd, tSQLExpr* pExpr, int64_t* stime, int
*etime = etime2 < (*etime) ? etime2 : (*etime); *etime = etime2 < (*etime) ? etime2 : (*etime);
} else { } else {
char msg1[] = "not support multi-segments query time ranges"; const char* msg1 = "not support multi-segments query time ranges";
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -3024,7 +3023,7 @@ int tableNameCompar(const void* lhs, const void* rhs) { ...@@ -3024,7 +3023,7 @@ int tableNameCompar(const void* lhs, const void* rhs) {
static int32_t setMetersIDForMetricQuery(SSqlObj* pSql, char* tmpTagCondBuf) { static int32_t setMetersIDForMetricQuery(SSqlObj* pSql, char* tmpTagCondBuf) {
SSqlCmd* pCmd = &pSql->cmd; SSqlCmd* pCmd = &pSql->cmd;
char msg[] = "meter name too long"; const char* msg = "meter name too long";
pCmd->tagCond.allocSize = 4096; pCmd->tagCond.allocSize = 4096;
pCmd->tagCond.pData = realloc(pCmd->tagCond.pData, pCmd->tagCond.allocSize); pCmd->tagCond.pData = realloc(pCmd->tagCond.pData, pCmd->tagCond.allocSize);
...@@ -3067,7 +3066,7 @@ static int32_t setMetersIDForMetricQuery(SSqlObj* pSql, char* tmpTagCondBuf) { ...@@ -3067,7 +3066,7 @@ static int32_t setMetersIDForMetricQuery(SSqlObj* pSql, char* tmpTagCondBuf) {
int32_t ret = setObjFullName(pCmd->tagCond.pData + pCmd->tagCond.len, acc, &tDB, &t, &xlen); int32_t ret = setObjFullName(pCmd->tagCond.pData + pCmd->tagCond.len, acc, &tDB, &t, &xlen);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
tfree(segments); tfree(segments);
return ret; return ret;
} }
...@@ -3109,14 +3108,14 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) { ...@@ -3109,14 +3108,14 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
char msg1[] = "invalid expression"; const char* msg1 = "invalid expression";
char msg2[] = "meter is not allowed"; const char* msg2 = "meter is not allowed";
char msg3[] = "invalid filter expression"; const char* msg3 = "invalid filter expression";
tSQLExpr* pLeft = pExpr->pLeft; tSQLExpr* pLeft = pExpr->pLeft;
tSQLExpr* pRight = pExpr->pRight; tSQLExpr* pRight = pExpr->pRight;
if (pLeft == NULL || pRight == NULL || (pLeft->nSQLOptr == TK_ID && pRight->nSQLOptr == TK_ID)) { if (pLeft == NULL || pRight == NULL || (pLeft->nSQLOptr == TK_ID && pRight->nSQLOptr == TK_ID)) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3142,7 +3141,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) { ...@@ -3142,7 +3141,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
if (pCmd->tagCond.type == TSQL_STABLE_QTYPE_SET) { if (pCmd->tagCond.type == TSQL_STABLE_QTYPE_SET) {
if (!UTIL_METER_IS_METRIC(pCmd)) { if (!UTIL_METER_IS_METRIC(pCmd)) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3161,7 +3160,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) { ...@@ -3161,7 +3160,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
} }
if (!validateFilterExpr(pCmd)) { if (!validateFilterExpr(pCmd)) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3257,8 +3256,8 @@ int32_t tsRewriteFieldNameIfNecessary(SSqlCmd* pCmd) { ...@@ -3257,8 +3256,8 @@ int32_t tsRewriteFieldNameIfNecessary(SSqlCmd* pCmd) {
char* fieldName = tscFieldInfoGetField(pCmd, i)->name; char* fieldName = tscFieldInfoGetField(pCmd, i)->name;
for (int32_t j = i + 1; j < pCmd->fieldsInfo.numOfOutputCols; ++j) { for (int32_t j = i + 1; j < pCmd->fieldsInfo.numOfOutputCols; ++j) {
if (strncasecmp(fieldName, tscFieldInfoGetField(pCmd, j)->name, TSDB_COL_NAME_LEN) == 0) { if (strncasecmp(fieldName, tscFieldInfoGetField(pCmd, j)->name, TSDB_COL_NAME_LEN) == 0) {
char msg[] = "duplicated column name in new table"; const char* msg = "duplicated column name in new table";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -3272,12 +3271,12 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) { ...@@ -3272,12 +3271,12 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
tVariantListItem* pItem = &pFillToken->a[0]; tVariantListItem* pItem = &pFillToken->a[0];
const int32_t START_INTERPO_COL_IDX = 1; const int32_t START_INTERPO_COL_IDX = 1;
char msg[] = "illegal value or data overflow"; const char* msg = "illegal value or data overflow";
char msg1[] = "value is expected"; const char* msg1 = "value is expected";
char msg2[] = "invalid fill option"; const char* msg2 = "invalid fill option";
if (pItem->pVar.nType != TSDB_DATA_TYPE_BINARY) { if (pItem->pVar.nType != TSDB_DATA_TYPE_BINARY) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3298,7 +3297,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) { ...@@ -3298,7 +3297,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
pCmd->interpoType = TSDB_INTERPO_SET_VALUE; pCmd->interpoType = TSDB_INTERPO_SET_VALUE;
if (pFillToken->nExpr == 1) { if (pFillToken->nExpr == 1) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3324,7 +3323,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) { ...@@ -3324,7 +3323,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
int32_t ret = tVariantDump(&pFillToken->a[j].pVar, (char*)&pCmd->defaultVal[i], pFields->type); int32_t ret = tVariantDump(&pFillToken->a[j].pVar, (char*)&pCmd->defaultVal[i], pFields->type);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3347,7 +3346,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) { ...@@ -3347,7 +3346,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
} }
} }
} else { } else {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3372,10 +3371,10 @@ static void setDefaultOrderInfo(SSqlCmd* pCmd) { ...@@ -3372,10 +3371,10 @@ static void setDefaultOrderInfo(SSqlCmd* pCmd) {
} }
int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, int32_t numOfCols) { int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, int32_t numOfCols) {
char msg[] = "only support order by primary timestamp"; const char* msg = "only support order by primary timestamp";
char msg3[] = "invalid column name"; const char* msg3 = "invalid column name";
char msg5[] = "only support order by primary timestamp and queried column"; const char* msg5 = "only support order by primary timestamp and queried column";
char msg6[] = "only support order by primary timestamp and first tag in groupby clause"; const char* msg6 = "only support order by primary timestamp and first tag in groupby clause";
setDefaultOrderInfo(pCmd); setDefaultOrderInfo(pCmd);
...@@ -3386,12 +3385,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, ...@@ -3386,12 +3385,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
tVariantList* pSortorder = pQuerySql->pSortOrder; tVariantList* pSortorder = pQuerySql->pSortOrder;
if (UTIL_METER_IS_NOMRAL_METER(pCmd)) { if (UTIL_METER_IS_NOMRAL_METER(pCmd)) {
if (pSortorder->nExpr > 1) { if (pSortorder->nExpr > 1) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else { } else {
if (pSortorder->nExpr > 2) { if (pSortorder->nExpr > 2) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -3423,7 +3422,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, ...@@ -3423,7 +3422,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
} }
if (!(orderByTags || orderByTS)) { if (!(orderByTags || orderByTS)) {
setErrMsg(pCmd, msg6, tListLen(msg6)); setErrMsg(pCmd, msg6);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else { } else {
assert(!(orderByTags && orderByTS)); assert(!(orderByTags && orderByTS));
...@@ -3444,7 +3443,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, ...@@ -3444,7 +3443,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
SSQLToken cname = {pVar2->nLen, pVar2->nType, pVar2->pz}; SSQLToken cname = {pVar2->nLen, pVar2->nType, pVar2->pz};
columnIndex = getColumnIndexByName(&cname, pSchema, numOfCols); columnIndex = getColumnIndexByName(&cname, pSchema, numOfCols);
if (columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) { if (columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else { } else {
pCmd->order.order = pSortorder->a[1].sortOrder; pCmd->order.order = pSortorder->a[1].sortOrder;
...@@ -3455,12 +3454,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, ...@@ -3455,12 +3454,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
} else { // meter query } else { // meter query
int32_t columnIndex = getColumnIndexByName(&columnName, pSchema, numOfCols); int32_t columnIndex = getColumnIndexByName(&columnName, pSchema, numOfCols);
if (columnIndex <= -1) { if (columnIndex <= -1) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX && !isTopBottomQuery(pCmd)) { if (columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX && !isTopBottomQuery(pCmd)) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3471,7 +3470,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema, ...@@ -3471,7 +3470,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
pExpr = tscSqlExprGet(pCmd, 1); pExpr = tscSqlExprGet(pCmd, 1);
if (pExpr->colInfo.colIdx != columnIndex && columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) { if (pExpr->colInfo.colIdx != columnIndex && columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3493,14 +3492,14 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3493,14 +3492,14 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->command = TSDB_SQL_ALTER_TABLE; pCmd->command = TSDB_SQL_ALTER_TABLE;
if (tscValidateName(&(pAlterSQL->name)) != TSDB_CODE_SUCCESS) { if (tscValidateName(&(pAlterSQL->name)) != TSDB_CODE_SUCCESS) {
char msg[] = "invalid table name"; const char* msg = "invalid table name";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (setMeterID(pSql, &(pAlterSQL->name)) != TSDB_CODE_SUCCESS) { if (setMeterID(pSql, &(pAlterSQL->name)) != TSDB_CODE_SUCCESS) {
char msg[] = "table name too long"; const char* msg = "table name too long";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3515,18 +3514,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3515,18 +3514,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (pInfo->sqlType == ALTER_TABLE_TAGS_ADD || pInfo->sqlType == ALTER_TABLE_TAGS_DROP || if (pInfo->sqlType == ALTER_TABLE_TAGS_ADD || pInfo->sqlType == ALTER_TABLE_TAGS_DROP ||
pInfo->sqlType == ALTER_TABLE_TAGS_CHG) { pInfo->sqlType == ALTER_TABLE_TAGS_CHG) {
if (UTIL_METER_IS_NOMRAL_METER(pCmd)) { if (UTIL_METER_IS_NOMRAL_METER(pCmd)) {
char msg[] = "manipulation of tag available for metric"; const char* msg = "manipulation of tag available for metric";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} else if ((pInfo->sqlType == ALTER_TABLE_TAGS_SET) && (UTIL_METER_IS_METRIC(pCmd))) { } else if ((pInfo->sqlType == ALTER_TABLE_TAGS_SET) && (UTIL_METER_IS_METRIC(pCmd))) {
char msg[] = "set tag value only available for table"; const char* msg = "set tag value only available for table";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else if ((pInfo->sqlType == ALTER_TABLE_ADD_COLUMN || pInfo->sqlType == ALTER_TABLE_DROP_COLUMN) && } else if ((pInfo->sqlType == ALTER_TABLE_ADD_COLUMN || pInfo->sqlType == ALTER_TABLE_DROP_COLUMN) &&
UTIL_METER_IS_CREATE_FROM_METRIC(pCmd)) { UTIL_METER_IS_CREATE_FROM_METRIC(pCmd)) {
char msg[] = "column can only be modified by metric"; const char* msg = "column can only be modified by metric";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3535,8 +3534,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3535,8 +3534,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tFieldList* pFieldList = pAlterSQL->pAddColumns; tFieldList* pFieldList = pAlterSQL->pAddColumns;
if (pFieldList->nField > 1) { if (pFieldList->nField > 1) {
char msg[] = "only support add one tag"; const char* msg = "only support add one tag";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3550,26 +3549,26 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3550,26 +3549,26 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} else if (pInfo->sqlType == ALTER_TABLE_TAGS_DROP) { } else if (pInfo->sqlType == ALTER_TABLE_TAGS_DROP) {
pCmd->count = TSDB_ALTER_TABLE_DROP_TAG_COLUMN; pCmd->count = TSDB_ALTER_TABLE_DROP_TAG_COLUMN;
char msg1[] = "no tags can be dropped"; const char* msg1 = "no tags can be dropped";
char msg2[] = "only support one tag"; const char* msg2 = "only support one tag";
char msg3[] = "tag name too long"; const char* msg3 = "tag name too long";
char msg4[] = "illegal tag name"; const char* msg4 = "illegal tag name";
char msg5[] = "primary tag cannot be dropped"; const char* msg5 = "primary tag cannot be dropped";
if (pMeterMeta->numOfTags == 1) { if (pMeterMeta->numOfTags == 1) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
// numOfTags == 1 // numOfTags == 1
if (pAlterSQL->varList->nExpr > 1) { if (pAlterSQL->varList->nExpr > 1) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
tVariantListItem* pItem = &pAlterSQL->varList->a[0]; tVariantListItem* pItem = &pAlterSQL->varList->a[0];
if (pItem->pVar.nLen > TSDB_COL_NAME_LEN) { if (pItem->pVar.nLen > TSDB_COL_NAME_LEN) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3586,10 +3585,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3586,10 +3585,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (idx == -1) { if (idx == -1) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else if (idx == 0) { } else if (idx == 0) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3600,8 +3599,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3600,8 +3599,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd->numOfCols = 1; // only one column pCmd->numOfCols = 1; // only one column
} else if (pInfo->sqlType == ALTER_TABLE_TAGS_CHG) { } else if (pInfo->sqlType == ALTER_TABLE_TAGS_CHG) {
char msg1[] = "tag name too long"; const char* msg1 = "tag name too long";
char msg2[] = "invalid tag name"; const char* msg2 = "invalid tag name";
pCmd->count = TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN; pCmd->count = TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN;
tVariantList* pVarList = pAlterSQL->varList; tVariantList* pVarList = pAlterSQL->varList;
...@@ -3613,12 +3612,12 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3613,12 +3612,12 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tVariantListItem* pDstItem = &pAlterSQL->varList->a[1]; tVariantListItem* pDstItem = &pAlterSQL->varList->a[1];
if (pSrcItem->pVar.nLen >= TSDB_COL_NAME_LEN || pDstItem->pVar.nLen >= TSDB_COL_NAME_LEN) { if (pSrcItem->pVar.nLen >= TSDB_COL_NAME_LEN || pDstItem->pVar.nLen >= TSDB_COL_NAME_LEN) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pSrcItem->pVar.nType != TSDB_DATA_TYPE_BINARY || pDstItem->pVar.nType != TSDB_DATA_TYPE_BINARY) { if (pSrcItem->pVar.nType != TSDB_DATA_TYPE_BINARY || pDstItem->pVar.nType != TSDB_DATA_TYPE_BINARY) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3640,8 +3639,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3640,8 +3639,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if ((!srcFound) || dstFound) { if ((!srcFound) || dstFound) {
char msg[] = "invalid tag name"; const char* msg = "invalid tag name";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3665,8 +3664,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3665,8 +3664,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tVariant* pTagName = &pVarList->a[0].pVar; tVariant* pTagName = &pVarList->a[0].pVar;
if (pTagName->nLen > TSDB_COL_NAME_LEN) { if (pTagName->nLen > TSDB_COL_NAME_LEN) {
char msg[] = "tag name too long"; const char* msg = "tag name too long";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3683,16 +3682,16 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3683,16 +3682,16 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (tagsIndex == -1) { if (tagsIndex == -1) {
char msg[] = "invalid tag name"; const char* msg = "invalid tag name";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
// validate the length of binary // validate the length of binary
if (pTagsSchema[tagsIndex].type == TSDB_DATA_TYPE_BINARY && if (pTagsSchema[tagsIndex].type == TSDB_DATA_TYPE_BINARY &&
pVarList->a[1].pVar.nLen > pTagsSchema[tagsIndex].bytes) { pVarList->a[1].pVar.nLen > pTagsSchema[tagsIndex].bytes) {
char msg[] = "tag value too long"; const char* msg = "tag value too long";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3706,8 +3705,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3706,8 +3705,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tFieldList* pFieldList = pAlterSQL->pAddColumns; tFieldList* pFieldList = pAlterSQL->pAddColumns;
if (pFieldList->nField > 1) { if (pFieldList->nField > 1) {
char msg[] = "only support add one column"; const char* msg = "only support add one column";
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3721,25 +3720,25 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3721,25 +3720,25 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} else if (pInfo->sqlType == ALTER_TABLE_DROP_COLUMN) { } else if (pInfo->sqlType == ALTER_TABLE_DROP_COLUMN) {
pCmd->count = TSDB_ALTER_TABLE_DROP_COLUMN; pCmd->count = TSDB_ALTER_TABLE_DROP_COLUMN;
char msg1[] = "no columns can be dropped"; const char* msg1 = "no columns can be dropped";
char msg2[] = "only support one column"; const char* msg2 = "only support one column";
char msg3[] = "column name too long"; const char* msg3 = "column name too long";
char msg4[] = "illegal column name"; const char* msg4 = "illegal column name";
char msg5[] = "primary timestamp column cannot be dropped"; const char* msg5 = "primary timestamp column cannot be dropped";
if (pMeterMeta->numOfColumns == TSDB_MIN_COLUMNS) { // if (pMeterMeta->numOfColumns == TSDB_MIN_COLUMNS) { //
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
if (pAlterSQL->varList->nExpr > 1) { if (pAlterSQL->varList->nExpr > 1) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
tVariantListItem* pItem = &pAlterSQL->varList->a[0]; tVariantListItem* pItem = &pAlterSQL->varList->a[0];
if (pItem->pVar.nLen > TSDB_COL_NAME_LEN) { if (pItem->pVar.nLen > TSDB_COL_NAME_LEN) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3755,10 +3754,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3755,10 +3754,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
if (idx == -1) { if (idx == -1) {
setErrMsg(pCmd, msg4, tListLen(msg4)); setErrMsg(pCmd, msg4);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} else if (idx == 0) { } else if (idx == 0) {
setErrMsg(pCmd, msg5, tListLen(msg5)); setErrMsg(pCmd, msg5);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3773,18 +3772,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -3773,18 +3772,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
} }
int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) { int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) {
char msg0[] = "sample interval can not be less than 10ms."; const char* msg0 = "sample interval can not be less than 10ms.";
char msg1[] = "functions not allowed in select clause"; const char* msg1 = "functions not allowed in select clause";
if (pCmd->nAggTimeInterval != 0 && pCmd->nAggTimeInterval < 10) { if (pCmd->nAggTimeInterval != 0 && pCmd->nAggTimeInterval < 10) {
setErrMsg(pCmd, msg0, tListLen(msg0)); setErrMsg(pCmd, msg0);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
for (int32_t i = 0; i < pCmd->fieldsInfo.numOfOutputCols; ++i) { for (int32_t i = 0; i < pCmd->fieldsInfo.numOfOutputCols; ++i) {
int32_t functId = tscSqlExprGet(pCmd, i)->sqlFuncId; int32_t functId = tscSqlExprGet(pCmd, i)->sqlFuncId;
if (!IS_STREAM_QUERY_VALID(aAggs[functId].nStatus)) { if (!IS_STREAM_QUERY_VALID(aAggs[functId].nStatus)) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -3794,7 +3793,7 @@ int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) { ...@@ -3794,7 +3793,7 @@ int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) {
int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) { int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) {
bool isProjectionFunction = false; bool isProjectionFunction = false;
char msg[] = "column projection is not compatible with interval"; const char* msg = "column projection is not compatible with interval";
// multi-output set/ todo refactor // multi-output set/ todo refactor
for (int32_t k = 0; k < pCmd->fieldsInfo.numOfOutputCols; ++k) { for (int32_t k = 0; k < pCmd->fieldsInfo.numOfOutputCols; ++k) {
...@@ -3805,7 +3804,7 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) { ...@@ -3805,7 +3804,7 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) {
} }
} }
if (pCmd->metricQuery == 0 || isProjectionFunction == true) { if (pCmd->metricQuery == 0 || isProjectionFunction == true) {
setErrMsg(pCmd, msg, tListLen(msg)); setErrMsg(pCmd, msg);
} }
return isProjectionFunction == true ? TSDB_CODE_INVALID_SQL : TSDB_CODE_SUCCESS; return isProjectionFunction == true ? TSDB_CODE_INVALID_SQL : TSDB_CODE_SUCCESS;
...@@ -3906,10 +3905,10 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) { ...@@ -3906,10 +3905,10 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
SSqlCmd* pCmd = &pSql->cmd; SSqlCmd* pCmd = &pSql->cmd;
bool isMetric = UTIL_METER_IS_METRIC(pCmd); bool isMetric = UTIL_METER_IS_METRIC(pCmd);
char msg0[] = "soffset can not be less than 0"; const char* msg0 = "soffset can not be less than 0";
char msg1[] = "offset can not be less than 0"; const char* msg1 = "offset can not be less than 0";
char msg2[] = "slimit/soffset only available for STable query"; const char* msg2 = "slimit/soffset only available for STable query";
char msg3[] = "function not supported on table"; const char* msg3 = "function not supported on table";
// handle the limit offset value, validate the limit // handle the limit offset value, validate the limit
pCmd->limit = pQuerySql->limit; pCmd->limit = pQuerySql->limit;
...@@ -3933,7 +3932,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) { ...@@ -3933,7 +3932,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
} }
if (pCmd->glimit.offset < 0) { if (pCmd->glimit.offset < 0) {
setErrMsg(pCmd, msg0, tListLen(msg0)); setErrMsg(pCmd, msg0);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
...@@ -3962,14 +3961,14 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) { ...@@ -3962,14 +3961,14 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
pCmd->globalLimit = pCmd->limit.limit; pCmd->globalLimit = pCmd->limit.limit;
} else { } else {
if (pCmd->glimit.limit != -1 || pCmd->glimit.offset != 0) { if (pCmd->glimit.limit != -1 || pCmd->glimit.offset != 0) {
setErrMsg(pCmd, msg2, tListLen(msg2)); setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
for (int32_t i = 0; i < pCmd->fieldsInfo.numOfOutputCols; ++i) { for (int32_t i = 0; i < pCmd->fieldsInfo.numOfOutputCols; ++i) {
SSqlExpr* pExpr = tscSqlExprGet(pCmd, i); SSqlExpr* pExpr = tscSqlExprGet(pCmd, i);
if (pExpr->colInfo.colIdx == -1) { if (pExpr->colInfo.colIdx == -1) {
setErrMsg(pCmd, msg3, tListLen(msg3)); setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -3980,7 +3979,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) { ...@@ -3980,7 +3979,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
} }
if (pCmd->limit.offset < 0) { if (pCmd->limit.offset < 0) {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -4009,8 +4008,8 @@ static void setCreateDBOption(SCreateDbMsg* pMsg, SCreateDBInfo* pCreateDb) { ...@@ -4009,8 +4008,8 @@ static void setCreateDBOption(SCreateDbMsg* pMsg, SCreateDBInfo* pCreateDb) {
} }
int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) { int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) {
char msg0[] = "invalid number of options"; const char* msg0 = "invalid number of options";
char msg1[] = "invalid time precision"; const char* msg1 = "invalid time precision";
SCreateDbMsg *pMsg = (SCreateDbMsg *) (pCmd->payload + tsRpcHeadSize + sizeof(SMgmtHead)); SCreateDbMsg *pMsg = (SCreateDbMsg *) (pCmd->payload + tsRpcHeadSize + sizeof(SMgmtHead));
setCreateDBOption(pMsg, pCreateDbSql); setCreateDBOption(pMsg, pCreateDbSql);
...@@ -4032,7 +4031,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) { ...@@ -4032,7 +4031,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) {
break; break;
} }
default: { default: {
setErrMsg(pCmd, msg0, tListLen(msg0)); setErrMsg(pCmd, msg0);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
...@@ -4050,7 +4049,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) { ...@@ -4050,7 +4049,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) {
strlen(TSDB_TIME_PRECISION_MICRO_STR) == pToken->n) { strlen(TSDB_TIME_PRECISION_MICRO_STR) == pToken->n) {
pMsg->precision = TSDB_TIME_PRECISION_MICRO; pMsg->precision = TSDB_TIME_PRECISION_MICRO;
} else { } else {
setErrMsg(pCmd, msg1, tListLen(msg1)); setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册