diff --git a/src/client/inc/tscUtil.h b/src/client/inc/tscUtil.h index e4857dd18d90c4326d5ab7bb6333707445a09d3e..b3e05cb0cafcd2bc68b9887e44272bf063acbbb7 100644 --- a/src/client/inc/tscUtil.h +++ b/src/client/inc/tscUtil.h @@ -132,10 +132,7 @@ bool tscIsSelectivityWithTagQuery(SSqlCmd* pCmd); void tscAddSpecialColumnForSelect(SQueryInfo* pQueryInfo, int32_t outputColIndex, int16_t functionId, SColumnIndex* pIndex, SSchema* pColSchema, int16_t isTag); -//void addRequiredTagColumn(SQueryInfo* pQueryInfo, int32_t tagColIndex, int32_t tableIndex); -void addRequiredTagColumn(STableMetaInfo* pTableMetaInfo, SColumnIndex* index); - -int32_t tscSetTableId(STableMetaInfo* pTableMetaInfo, SSQLToken* pzTableName, SSqlObj* pSql); +int32_t tscSetTableFullName(STableMetaInfo* pTableMetaInfo, SSQLToken* pzTableName, SSqlObj* pSql); void tscClearInterpInfo(SQueryInfo* pQueryInfo); bool tscIsInsertData(char* sqlstr); diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c index 999d103c122a6b346b03db6d397928a1a01761be..4d5e20564eb6bb3c623b915baf8535aafde627db 100644 --- a/src/client/src/tscParseInsert.c +++ b/src/client/src/tscParseInsert.c @@ -793,7 +793,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) { } STableMetaInfo *pSTableMeterMetaInfo = tscGetMetaInfo(pQueryInfo, STABLE_INDEX); - tscSetTableId(pSTableMeterMetaInfo, &sToken, pSql); + tscSetTableFullName(pSTableMeterMetaInfo, &sToken, pSql); strncpy(pTag->name, pSTableMeterMetaInfo->name, TSDB_TABLE_ID_LEN); code = tscGetTableMeta(pSql, pSTableMeterMetaInfo); @@ -834,9 +834,8 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) { sql += index; if (TK_STRING == sToken.type) { - sToken.n = strdequote(sToken.z); - strtrim(sToken.z); - sToken.n = (uint32_t)strlen(sToken.z); + strdequote(sToken.z); + sToken.n = strtrim(sToken.z); } if (sToken.type == TK_RP) { @@ -948,7 +947,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) { return tscInvalidSQLErrMsg(pCmd->payload, "invalid table name", *sqlstr); } - int32_t ret = tscSetTableId(pTableMetaInfo, &tableToken, pSql); + int32_t ret = tscSetTableFullName(pTableMetaInfo, &tableToken, pSql); if (ret != TSDB_CODE_SUCCESS) { return ret; } @@ -1091,7 +1090,7 @@ int doParseInsertSql(SSqlObj *pSql, char *str) { goto _error_clean; } - if ((code = tscSetTableId(pTableMetaInfo, &sToken, pSql)) != TSDB_CODE_SUCCESS) { + if ((code = tscSetTableFullName(pTableMetaInfo, &sToken, pSql)) != TSDB_CODE_SUCCESS) { goto _error_clean; } @@ -1209,9 +1208,8 @@ int doParseInsertSql(SSqlObj *pSql, char *str) { str += index; if (TK_STRING == sToken.type) { - sToken.n = strdequote(sToken.z); - strtrim(sToken.z); - sToken.n = (uint32_t)strlen(sToken.z); + strdequote(sToken.z); + sToken.n = strtrim(sToken.z); } if (sToken.type == TK_RP) { diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 37af50dbce75d898c0832d788f9a372cd1ca26c9..88c3578633210fde49e1d259269bc9a9b9d4d8ab 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -163,8 +163,7 @@ static int32_t handlePassword(SSqlCmd* pCmd, SSQLToken* pPwd) { } strdequote(pPwd->z); - strtrim(pPwd->z); // trim space before and after passwords - pPwd->n = strlen(pPwd->z); + pPwd->n = strtrim(pPwd->z); // trim space before and after passwords if (pPwd->n <= 0) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1); @@ -226,7 +225,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { } else if (pInfo->type == TSDB_SQL_DROP_TABLE) { assert(pInfo->pDCLInfo->nTokens == 1); - if (tscSetTableId(pTableMetaInfo, pzName, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, pzName, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg3); } } else if (pInfo->type == TSDB_SQL_DROP_DNODE) { @@ -353,7 +352,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg2); } - if (tscSetTableId(pTableMetaInfo, pToken, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, pToken, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg2); } @@ -686,7 +685,7 @@ int32_t parseSlidingClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) { return TSDB_CODE_SUCCESS; } -int32_t tscSetTableId(STableMetaInfo* pTableMetaInfo, SSQLToken* pzTableName, SSqlObj* pSql) { +int32_t tscSetTableFullName(STableMetaInfo* pTableMetaInfo, SSQLToken* pzTableName, SSqlObj* pSql) { const char* msg = "name too long"; SSqlCmd* pCmd = &pSql->cmd; @@ -4293,7 +4292,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { return invalidSqlErrMsg(pQueryInfo->msg, msg1); } - if (tscSetTableId(pTableMetaInfo, &(pAlterSQL->name), pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, &(pAlterSQL->name), pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(pQueryInfo->msg, msg2); } @@ -4645,8 +4644,7 @@ int32_t validateColumnName(char* name) { if (token.type == TK_STRING) { strdequote(token.z); - strtrim(token.z); - token.n = (uint32_t)strlen(token.z); + token.n = strtrim(token.z); int32_t k = tSQLGetToken(token.z, &token.type); if (k != token.n) { @@ -5490,7 +5488,7 @@ int32_t doCheckForCreateTable(SSqlObj* pSql, int32_t subClauseIndex, SSqlInfo* p return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1); } - if (tscSetTableId(pTableMetaInfo, pzTableName, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, pzTableName, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg2); } @@ -5545,7 +5543,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1); } - if (tscSetTableId(pStableMeterMetaInfo, pToken, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pStableMeterMetaInfo, pToken, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1); } @@ -5591,7 +5589,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) { } STableMetaInfo* pTableMeterMetaInfo = tscGetMetaInfo(pQueryInfo, TABLE_INDEX); - ret = tscSetTableId(pTableMeterMetaInfo, &pInfo->pCreateTableInfo->name, pSql); + ret = tscSetTableFullName(pTableMeterMetaInfo, &pInfo->pCreateTableInfo->name, pSql); if (ret != TSDB_CODE_SUCCESS) { return ret; } @@ -5634,7 +5632,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) { return invalidSqlErrMsg(pQueryInfo->msg, msg1); } - if (tscSetTableId(pTableMetaInfo, &srcToken, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, &srcToken, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(pQueryInfo->msg, msg2); } @@ -5665,7 +5663,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) { } // set the created table[stream] name - if (tscSetTableId(pTableMetaInfo, pzTableName, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pTableMetaInfo, pzTableName, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(pQueryInfo->msg, msg1); } @@ -5774,7 +5772,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) { STableMetaInfo* pMeterInfo1 = tscGetMetaInfo(pQueryInfo, i); SSQLToken t = {.type = TSDB_DATA_TYPE_BINARY, .n = pTableItem->nLen, .z = pTableItem->pz}; - if (tscSetTableId(pMeterInfo1, &t, pSql) != TSDB_CODE_SUCCESS) { + if (tscSetTableFullName(pMeterInfo1, &t, pSql) != TSDB_CODE_SUCCESS) { return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg1); } diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index ba2b900dd51c454f28f1902f458eb14b7783054f..d3760811d610b5bf246d0781cecd7cbbab6eba1f 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -817,9 +817,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t tblName[len] = '\0'; str = nextStr + 1; - - strtrim(tblName); - len = (uint32_t)strlen(tblName); + len = strtrim(tblName); SSQLToken sToken = {.n = len, .type = TK_ID, .z = tblName}; tSQLGetToken(tblName, &sToken.type); @@ -831,7 +829,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t return code; } - if ((code = tscSetTableId(pTableMetaInfo, &sToken, pSql)) != TSDB_CODE_SUCCESS) { + if ((code = tscSetTableFullName(pTableMetaInfo, &sToken, pSql)) != TSDB_CODE_SUCCESS) { return code; } diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 3e7e0b9ed843c9718b559e20d2e7b00c58ecbb6a..efba7d8af9b1e47391e2e6badadad69e046bd3fc 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1231,9 +1231,8 @@ void tscColumnListDestroy(SArray* pColumnList) { * */ static int32_t validateQuoteToken(SSQLToken* pToken) { - pToken->n = strdequote(pToken->z); - strtrim(pToken->z); - pToken->n = (uint32_t)strlen(pToken->z); + strdequote(pToken->z); + pToken->n = strtrim(pToken->z); int32_t k = tSQLGetToken(pToken->z, &pToken->type); @@ -1255,9 +1254,8 @@ int32_t tscValidateName(SSQLToken* pToken) { char* sep = strnchr(pToken->z, TS_PATH_DELIMITER[0], pToken->n, true); if (sep == NULL) { // single part if (pToken->type == TK_STRING) { - pToken->n = strdequote(pToken->z); - strtrim(pToken->z); - pToken->n = (uint32_t)strlen(pToken->z); + strdequote(pToken->z); + pToken->n = strtrim(pToken->z); int len = tSQLGetToken(pToken->z, &pToken->type); @@ -1282,8 +1280,7 @@ int32_t tscValidateName(SSQLToken* pToken) { char* pStr = pToken->z; if (pToken->type == TK_SPACE) { - strtrim(pToken->z); - pToken->n = (uint32_t)strlen(pToken->z); + pToken->n = strtrim(pToken->z); } pToken->n = tSQLGetToken(pToken->z, &pToken->type); diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index 2aca057ba73666f3b3c4bbf4c56ddce27ce066fe..f83dd794d13bcf98225565cd5dce3be7089aa472 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -322,7 +322,7 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); #define TSDB_QUERY_TYPE_SUBQUERY 0x02u #define TSDB_QUERY_TYPE_STABLE_SUBQUERY 0x04u // two-stage subquery for super table -#define TSDB_QUERY_TYPE_TABLE_QUERY 0x08u // query ordinary table; below only apply to client side +#define TSDB_QUERY_TYPE_TABLE_QUERY 0x08u // query ordinary table; below only apply to client side #define TSDB_QUERY_TYPE_STABLE_QUERY 0x10u // query on super table #define TSDB_QUERY_TYPE_JOIN_QUERY 0x20u // join query #define TSDB_QUERY_TYPE_PROJECTION_QUERY 0x40u // select *,columns... query diff --git a/src/util/inc/tutil.h b/src/util/inc/tutil.h index 984df2387957fdcc4f7255a85dbfc70b2f8ca250..f0c90c62fc285edddc0198c07a428c42c232efb8 100644 --- a/src/util/inc/tutil.h +++ b/src/util/inc/tutil.h @@ -113,7 +113,7 @@ extern "C" { int32_t strdequote(char *src); -void strtrim(char *src); +size_t strtrim(char *src); char *strnchr(char *haystack, char needle, int32_t len, bool skipquote); diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index 6bc60615ce785e5a66a483286a3e3036b65f9aee..6a5c8b6799f6a2ce3374e9a7a0ea18402d90af5b 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -60,7 +60,7 @@ int32_t strdequote(char *z) { return j + 1; // only one quote, do nothing } -void strtrim(char *z) { +size_t strtrim(char *z) { int32_t i = 0; int32_t j = 0; @@ -71,7 +71,7 @@ void strtrim(char *z) { if (z[j] == 0) { z[0] = 0; - return; + return 0; } delta = j; @@ -89,9 +89,12 @@ void strtrim(char *z) { if (stop > 0) { z[stop - delta] = 0; + return (stop - delta); } else if (j != i) { z[i] = 0; } + + return i; } char **strsplit(char *z, const char *delim, int32_t *num) { diff --git a/src/util/tests/stringTest.cpp b/src/util/tests/stringTest.cpp index ef8df90e3eac8c4381cbc23cd5311b794b73d058..0dc1ee7a778f700c5e2d54f3dfe1325ceff06252 100644 --- a/src/util/tests/stringTest.cpp +++ b/src/util/tests/stringTest.cpp @@ -20,10 +20,10 @@ TEST(testCase, string_dequote_test) { EXPECT_STRCASEEQ(t1, "abc"); char t21[] = " abc "; - strtrim(t21); + int32_t lx = strtrim(t21); EXPECT_STREQ("abc", t21); - EXPECT_EQ(3, strlen(t21)); + EXPECT_EQ(3, lx); } TEST(testCase, string_replace_test) {