diff --git a/src/client/src/tscAsync.c b/src/client/src/tscAsync.c index e75ce8dc0106bafa53411f585ad8b708c1c1bf99..77b768ebcebb9c8a5d4e7875acbc0845b571c7e6 100644 --- a/src/client/src/tscAsync.c +++ b/src/client/src/tscAsync.c @@ -334,6 +334,26 @@ bool appendTagsFilter(SSqlObj* pSql) { return false; } + // check tags is blank or '' + char* p1 = pTscObj->tags; + if (strcmp(p1, "\'\'") == 0) { + tscDebug("TAGS 0x%" PRIx64 " tags is empty. user=%s", pSql->self, pTscObj->user); + return false; + } + bool blank = true; + while(*p1 != 0) { + if(*p1 != ' ') { + blank = false; + break; + } + ++p1; + } + // result + if(blank) { + tscDebug("TAGS 0x%" PRIx64 " tags is all blank. user=%s", pSql->self, pTscObj->user); + return false; + } + char * p = insertTags(pSql->sqlstr, pTscObj->tags); if(p == NULL) { return false; diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 8eb7f15fde6a878ff617e047826df91c9e2c1878..b7cc85908c425ed711121b91ccf0835d61a24cb9 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -862,7 +862,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { const char* msg3 = "name too long"; const char* msg5 = "invalid user rights"; const char* msg7 = "not support options"; - const char* msg8 = "tags filter length must over 3 bytes."; + const char* msg8 = "tags filter string length must less than 255 bytes."; pCmd->command = pInfo->type; @@ -903,15 +903,14 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { } } else if (pUser->type == TSDB_ALTER_USER_TAGS) { SStrToken* pTags = &pUser->tags; - if(pTags->n < 4) - return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg8); - } else { + if (pTags->n > TSDB_TAGS_LEN - 1 ) return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg8); + } else { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg7); } } - break; - } + break; + } case TSDB_SQL_CFG_LOCAL: { SMiscInfo *pMiscInfo = pInfo->pMiscInfo; diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index ecd7d2d31ecf77a5c9e41b24c99b8e68dc7f880a..1bdcc532943318f5fe368b3832145ad7e06f6a56 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -377,7 +377,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) { } else { int num_rows_affacted = taos_affected_rows(pSql); et = taosGetTimestampUs(); - printf("Query OK, %d of %d row(s) in database (%.6fs)\n", num_rows_affacted, num_rows_affacted, (et - st) / 1E6); + printf("Query OK, %d row(s) affected in set (%.6fs)\n", num_rows_affacted, (et - st) / 1E6); #ifndef WINDOWS // call auto tab diff --git a/src/mnode/src/mnodeUser.c b/src/mnode/src/mnodeUser.c index 6d6ccb933e414fd8d07c5282753685603a7e1be2..63e41bf6527684f6239e9c0af67a1e27bcc199f1 100644 --- a/src/mnode/src/mnodeUser.c +++ b/src/mnode/src/mnodeUser.c @@ -97,7 +97,7 @@ static int32_t mnodeUserActionDecode(SSdbRow *pRow) { SUserObj *pUser = (SUserObj *)calloc(1, sizeof(SUserObj)); if (pUser == NULL) return TSDB_CODE_MND_OUT_OF_MEMORY; - memcpy(pUser, pRow->rowData, tsUserUpdateSize); + memcpy(pUser, pRow->rowData, pRow->rowSize); pRow->pObj = pUser; return TSDB_CODE_SUCCESS; }