diff --git a/Jenkinsfile2 b/Jenkinsfile2 index c270b6c4c06573880c639333ebcae803ded1d2e6..bf81ab5ded6d683f2b5088f6f6edd823f79b108c 100644 --- a/Jenkinsfile2 +++ b/Jenkinsfile2 @@ -23,31 +23,31 @@ def sync_source() { sh ''' cd ${WKC} git clean -fxd - git checkout master + git checkout -f master ''' } else if (env.CHANGE_TARGET == '2.0') { sh ''' cd ${WKC} git clean -fxd - git checkout 2.0 + git checkout -f 2.0 ''' } else if (env.CHANGE_TARGET == '2.4') { sh ''' cd ${WKC} git clean -fxd - git checkout 2.4 + git checkout -f 2.4 ''' } else if (env.CHANGE_TARGET == '2.6') { sh ''' cd ${WKC} git clean -fxd - git checkout 2.6 + git checkout -f 2.6 ''' } else { sh ''' cd ${WKC} git clean -fxd - git checkout develop + git checkout -f develop ''' } } @@ -79,7 +79,7 @@ def sync_source() { } else if (env.CHANGE_TARGET == '2.6') { sh ''' cd ${WK} - git checkout 2.6 + git checkout -f 2.6 ''' } else { sh ''' @@ -194,47 +194,47 @@ def pre_test_win(){ if (env.CHANGE_TARGET == 'master') { bat ''' cd %WIN_INTERNAL_ROOT% - git checkout master + git checkout -f master ''' bat ''' cd %WIN_COMMUNITY_ROOT% - git checkout master + git checkout -f master ''' } else if (env.CHANGE_TARGET == '2.0') { bat ''' cd %WIN_INTERNAL_ROOT% - git checkout 2.0 + git checkout -f 2.0 ''' bat ''' cd %WIN_COMMUNITY_ROOT% - git checkout 2.0 + git checkout -f 2.0 ''' } else if (env.CHANGE_TARGET == '2.4') { bat ''' cd %WIN_INTERNAL_ROOT% - git checkout 2.4 + git checkout -f 2.4 ''' bat ''' cd %WIN_COMMUNITY_ROOT% - git checkout 2.4 + git checkout -f 2.4 ''' } else if (env.CHANGE_TARGET == '2.6') { bat ''' cd %WIN_INTERNAL_ROOT% - git checkout 2.6 + git checkout -f 2.6 ''' bat ''' cd %WIN_COMMUNITY_ROOT% - git checkout 2.6 + git checkout -f 2.6 ''' } else { bat ''' cd %WIN_INTERNAL_ROOT% - git checkout develop + git checkout -f develop ''' bat ''' cd %WIN_COMMUNITY_ROOT% - git checkout develop + git checkout -f develop ''' } } diff --git a/src/client/src/tscAsync.c b/src/client/src/tscAsync.c index a61859dd5925dcf065964c07f4be2501c1cab77a..c8ef467da4a15feebd3d76976679a3c22e8a091f 100644 --- a/src/client/src/tscAsync.c +++ b/src/client/src/tscAsync.c @@ -337,6 +337,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/mnodeTable.c b/src/mnode/src/mnodeTable.c index f32d7841d3fb52cd73f87b53c79242d12b617258..6f5b2f371f3596e9a2171d1ea6bac73553badd6d 100644 --- a/src/mnode/src/mnodeTable.c +++ b/src/mnode/src/mnodeTable.c @@ -2504,6 +2504,7 @@ static int32_t mnodeChangeNormalTableColumn(SMnodeMsg *pMsg) { SSchema *schema = (SSchema *) (pTable->schema + col); ASSERT(schema->type == TSDB_DATA_TYPE_BINARY || schema->type == TSDB_DATA_TYPE_NCHAR); schema->bytes = pAlter->schema[0].bytes; + ++pTable->sversion; mInfo("msg:%p, app:%p ctable %s, start to modify column %s len to %d", pMsg, pMsg->rpcMsg.ahandle, pTable->info.tableId, name, schema->bytes); 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; } diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index e3371c79db76f4a3875b505aa7f56c67969c49ce..be5b43caf3172d7f6e9e45ae728eb55d08396724 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -161,6 +161,8 @@ static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pR vTrace("vgId:%d, submit msg is processed", pVnode->vgId); + int64_t submitStartUs = taosGetTimestampUs(); + if (pVnode->dbType == TSDB_DB_TYPE_TOPIC && pVnode->role == TAOS_SYNC_ROLE_MASTER) { tpUpdateTs(pVnode->vgId, &pVnode->sequence, pCont); } @@ -186,6 +188,11 @@ static int32_t vnodeProcessSubmitMsg(SVnodeObj *pVnode, void *pCont, SRspRet *pR atomic_fetch_add_64(&tsSubmitRowSucNum, ntohl(pRsp->affectedRows)); } + int64_t submitEndUs = taosGetTimestampUs(); + if (submitEndUs - submitStartUs > 10 * 1000000) { + vWarn("vgId: %d, submit msg process takes more than 10s", pVnode->vgId); + } + return code; } diff --git a/tests/script/general/alter/column_width_commit.sim b/tests/script/general/alter/column_width_commit.sim new file mode 100644 index 0000000000000000000000000000000000000000..790f92134bc728916e4ca54d70b8ed2091bde688 --- /dev/null +++ b/tests/script/general/alter/column_width_commit.sim @@ -0,0 +1,50 @@ +system sh/stop_dnodes.sh + +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c wallevel -v 2 +system sh/exec.sh -n dnode1 -s start + +sleep 2000 +sql connect + +print ======== step1 create db +sql drop database if exists db1; +sql CREATE DATABASE db1; +sql use db1; + +print ======== step2 create normal table +sql CREATE TABLE normal_t1('ts' TIMESTAMP, 'c1' BINARY(1)); + +print ======== step3 alter column width +sql alter table db1.normal_t1 modify column c1 binary(2400); + +print ======== step4 insert into 20 rows +$ms = 0 +$cnt = 0 +while $cnt < 20 + $ms = $cnt . m + sql insert into normal_t1(ts,c1) values(now + $ms , '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'); + $cnt = $cnt + 1 + endw + +######################################################## +print ===> step 4 stop dnode1 +system sh/exec.sh -n dnode1 -s stop -x SIGINT + +######################################################## +print ===> step 5 start dnode1 +system sh/exec.sh -n dnode1 -s start + +sleep 1000 + +sql select count(*) from db1.normal_t1; +print $data00 +if $rows != 1 then + return -1 +endi +if $data00 != 20 then + return -1 +endi + + +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index 67eadbf851a7185c131220c94d046247ff89d166..56c24e6444e57f18654458cdcd27902f45ac59e3 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -193,6 +193,7 @@ cd ../../../debug; make ./test.sh -f general/alter/insert2.sim ./test.sh -f general/alter/metrics.sim ./test.sh -f general/alter/table.sim +./test.sh -f general/alter/column_width_commit.sim ./test.sh -f general/cache/new_metrics.sim ./test.sh -f general/cache/restart_metrics.sim ./test.sh -f general/cache/restart_table.sim