diff --git a/Jenkinsfile2 b/Jenkinsfile2 index 6549f714a1cb13877b751a8e948e24691fbf45f0..c270b6c4c06573880c639333ebcae803ded1d2e6 100644 --- a/Jenkinsfile2 +++ b/Jenkinsfile2 @@ -240,12 +240,12 @@ def pre_test_win(){ } bat ''' cd %WIN_INTERNAL_ROOT% - git pull + git pull origin ''' + env.CHANGE_TARGET + ''' ''' bat ''' cd %WIN_COMMUNITY_ROOT% git remote prune origin - git pull + git pull origin ''' + env.CHANGE_TARGET + ''' ''' bat ''' cd %WIN_INTERNAL_ROOT% diff --git a/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java b/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java index 6fe83f002ebcb9d82e026e9a32886fd22bfefbe9..f0ebc53b4b9a588ac4a23461553dd5c9f1a9f00b 100644 --- a/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java +++ b/docs/examples/java/src/main/java/com/taos/example/highvolume/MockDataSource.java @@ -16,7 +16,7 @@ class MockDataSource implements Iterator { private int currentTbId = -1; // mock values - String[] location = {"LosAngeles", "SanDiego", "Hollywood", "Compton", "San Francisco"}; + String[] location = {"California.LosAngeles", "California.SanDiego", "California.SanJose", "California.Campbell", "California.SanFrancisco"}; float[] current = {8.8f, 10.7f, 9.9f, 8.9f, 9.4f}; int[] voltage = {119, 116, 111, 113, 118}; float[] phase = {0.32f, 0.34f, 0.33f, 0.329f, 0.141f}; @@ -50,4 +50,4 @@ class MockDataSource implements Iterator { return sb.toString(); } -} \ No newline at end of file +} diff --git a/docs/examples/python/highvolume_faster_queue.py b/docs/examples/python/highvolume_faster_queue.py index 14aebc67eee5a0701081f2f5da605184568c3a89..171fbfa362fa3cdda75484f62e5509c358a2ac98 100644 --- a/docs/examples/python/highvolume_faster_queue.py +++ b/docs/examples/python/highvolume_faster_queue.py @@ -42,7 +42,7 @@ def get_connection(): # ANCHOR: MockDataSource class MockDataSource: - location = ["LosAngeles", "SanDiego", "Hollywood", "Compton", "San Francisco"] + location = ["California.LosAngeles", "California.SanDiego", "California.SanJose", "California.Campbell", "California.SanFrancisco"] current = [8.8, 10.7, 9.9, 8.9, 9.4] voltage = [119, 116, 111, 113, 118] phase = [0.32, 0.34, 0.33, 0.329, 0.141] diff --git a/docs/examples/python/mockdatasource.py b/docs/examples/python/mockdatasource.py index 852860aec0adc8f9b043c9dcd5deb0bf00239201..1c516a800e007934f8e6815f82024a53fea70073 100644 --- a/docs/examples/python/mockdatasource.py +++ b/docs/examples/python/mockdatasource.py @@ -3,11 +3,11 @@ import time class MockDataSource: samples = [ - "8.8,119,0.32,LosAngeles,0", - "10.7,116,0.34,SanDiego,1", - "9.9,111,0.33,Hollywood,2", - "8.9,113,0.329,Compton,3", - "9.4,118,0.141,San Francisco,4" + "8.8,119,0.32,California.LosAngeles,0", + "10.7,116,0.34,California.SanDiego,1", + "9.9,111,0.33,California.SanJose,2", + "8.9,113,0.329,California.Campbell,3", + "9.4,118,0.141,California.SanFrancisco,4" ] def __init__(self, tb_name_prefix, table_count): diff --git a/docs/zh/05-get-started/index.md b/docs/zh/05-get-started/index.md index 272a231ed714305ce27525229333f8049e1ff450..145e34a01a7f794088d7b0b33556bb99ec3605d6 100644 --- a/docs/zh/05-get-started/index.md +++ b/docs/zh/05-get-started/index.md @@ -132,7 +132,7 @@ Query OK, 2 row(s) in set (0.003128s) taosBenchmark ``` -该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 "d0" 到 "d9999",每张表有 1 万条记录,每条记录有 (ts, current, voltage, phase) 四个字段,时间戳从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:40:09 999",每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10, location 被设置为 "San Francisco" 或者 "Los Angeles"等城市名称。 +该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 "d0" 到 "d9999",每张表有 1 万条记录,每条记录有 (ts, current, voltage, phase) 四个字段,时间戳从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:40:09 999",每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10, location 被设置为 "California.SanFrancisco" 或者 "California.LosAngeles"等城市名称。 这条命令很快完成 1 亿条记录的插入。具体时间取决于硬件性能,即使在一台普通的 PC 服务器往往也仅需十几秒。 @@ -154,10 +154,10 @@ taos> select count(*) from test.meters; taos> select avg(current), max(voltage), min(phase) from test.meters; ``` -查询 location="San Francisco" 的记录总条数: +查询 location="California.SanFrancisco" 的记录总条数: ```sql -taos> select count(*) from test.meters where location="San Francisco"; +taos> select count(*) from test.meters where location="California.SanFrancisco"; ``` 查询 groupId=10 的所有记录的平均值、最大值、最小值等: diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index a5673378f5646479ab53d638e5ff74dee9a4c879..559a488b8a6c2e0828c76688df07fa2093392284 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -97,9 +97,9 @@ static int32_t getFieldBytesFromSmlKv(TAOS_SML_KV* kv, int32_t* bytes, uint64_t // } // free(ucs); // *bytes = bytesNeeded + VARSTR_HEADER_SIZE; - *bytes = kv->length * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE; + *bytes = (kv->length == 0 ? 1 : kv->length) * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE; } else if (kv->type == TSDB_DATA_TYPE_BINARY) { - *bytes = kv->length + VARSTR_HEADER_SIZE; + *bytes = (kv->length == 0 ? 1 : kv->length) + VARSTR_HEADER_SIZE; } } return 0; @@ -2608,7 +2608,7 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf return ret; } tscDebug("SML:0x%"PRIx64" Parse fields finished, num of fields:%d", info->id, smlData->fieldNum); - if (smlData->fieldNum == 0) { + if (smlData->fieldNum <= 1) { tscDebug("SML:0x%"PRIx64" Parse fields error, no field in line", info->id); taosHashCleanup(keyHashTable); return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; diff --git a/src/client/src/tscPrepare.c b/src/client/src/tscPrepare.c index 665efa4c6dbca0437540ee1dd9875267bc2d8b72..8e4c417fbfe759bc383191b9d7a9b49f41978435 100644 --- a/src/client/src/tscPrepare.c +++ b/src/client/src/tscPrepare.c @@ -1261,8 +1261,6 @@ static void insertBatchClean(STscStmt* pStmt) { taosHashClear(pCmd->insertParam.pTableBlockHashList); tscFreeSqlResult(pSql); tscFreeSubobj(pSql); - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; } static int insertBatchStmtExecute(STscStmt* pStmt) { diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index dfdefbe82eac992bedd0655c158c27f47b7c1ca6..2818d1014424c442454d4664859d3d90ab58ebdd 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -330,7 +330,7 @@ void checkBrokenQueries(STscObj *pTscObj) { SSqlObj *pSql = pTscObj->sqlList; while (pSql) { // avoid sqlobj may not be correctly removed from sql list - if (pSql->sqlstr == NULL) { + if (pSql->sqlstr == NULL || pSql->signature != pSql) { pSql = pSql->next; continue; } @@ -3400,7 +3400,6 @@ int tscRenewTableMeta(SSqlObj *pSql) { pthread_mutex_lock(&rootSql->mtxSubs); tscFreeSubobj(rootSql); pthread_mutex_unlock(&rootSql->mtxSubs); - tfree(rootSql->pSubs); tscResetSqlCmd(&rootSql->cmd, true, rootSql->self); code = getMultiTableMetaFromMnode(rootSql, pNameList, vgroupList, NULL, tscTableMetaCallBack, true); diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index 0ed4c0a270ca675dfc445f387ad48de5171df7d9..eab9527f16e439e48016faff33a280c206818e15 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -232,8 +232,6 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf tscFreeSqlResult(pStream->pSql); tscFreeSubobj(pStream->pSql); - tfree(pStream->pSql->pSubs); - pStream->pSql->subState.numOfSub = 0; pTableMetaInfo->vgroupList = tscVgroupInfoClear(pTableMetaInfo->vgroupList); tscSetRetryTimer(pStream, pStream->pSql, retryDelay); @@ -610,8 +608,6 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf tscFreeSqlResult(pSql); tscFreeSubobj(pSql); - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; pTableMetaInfo->vgroupList = tscVgroupInfoClear(pTableMetaInfo->vgroupList); tscSetNextLaunchTimer(pStream, pSql); } diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 1805c22a9d77181fd5d5e2b3f31a25186741ac74..a8c2eea195992c4a6e66cbfd49bf9e36f2cf4c8c 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -695,6 +695,12 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) { } void freeJoinSubqueryObj(SSqlObj* pSql) { + if (pSql->subState.numOfSub == 0) { + return; + } + + pthread_mutex_lock(&pSql->subState.mutex); + for (int32_t i = 0; i < pSql->subState.numOfSub; ++i) { SSqlObj* pSub = pSql->pSubs[i]; if (pSub == NULL) { @@ -707,13 +713,13 @@ void freeJoinSubqueryObj(SSqlObj* pSql) { taos_free_result(pSub); pSql->pSubs[i] = NULL; } - - if (pSql->subState.states) { - pthread_mutex_destroy(&pSql->subState.mutex); - } tfree(pSql->subState.states); pSql->subState.numOfSub = 0; + + pthread_mutex_unlock(&pSql->subState.mutex); + + pthread_mutex_destroy(&pSql->subState.mutex); } static int32_t quitAllSubquery(SSqlObj* pSqlSub, SSqlObj* pSqlObj, SJoinSupporter* pSupporter) { @@ -901,7 +907,6 @@ bool tscReparseSql(SSqlObj *sql, int32_t code){ } tscFreeSubobj(sql); - tfree(sql->pSubs); sql->res.code = TSDB_CODE_SUCCESS; sql->retry++; @@ -2180,7 +2185,6 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { assert((pQueryInfo->type & TSDB_QUERY_TYPE_SUBQUERY) == 0); int32_t code = TSDB_CODE_SUCCESS; - pSql->subState.numOfSub = pQueryInfo->numOfTables; if (pSql->subState.states == NULL) { pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(*pSql->subState.states)); @@ -2192,6 +2196,8 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { pthread_mutex_init(&pSql->subState.mutex, NULL); } + pSql->subState.numOfSub = pQueryInfo->numOfTables; + memset(pSql->subState.states, 0, sizeof(*pSql->subState.states) * pSql->subState.numOfSub); tscDebug("0x%"PRIx64" reset all sub states to 0, start subquery, total:%d", pSql->self, pQueryInfo->numOfTables); @@ -2251,7 +2257,12 @@ void tscHandleMasterJoinQuery(SSqlObj* pSql) { } void doCleanupSubqueries(SSqlObj *pSql, int32_t numOfSubs) { - assert(numOfSubs <= pSql->subState.numOfSub && numOfSubs >= 0); + pthread_mutex_lock(&pSql->subState.mutex); + if (numOfSubs > pSql->subState.numOfSub || numOfSubs <= 0 || pSql->subState.numOfSub <= 0) { + pthread_mutex_unlock(&pSql->subState.mutex); + return; + } + for(int32_t i = 0; i < numOfSubs; ++i) { SSqlObj* pSub = pSql->pSubs[i]; @@ -2261,6 +2272,7 @@ void doCleanupSubqueries(SSqlObj *pSql, int32_t numOfSubs) { taos_free_result(pSub); } + pthread_mutex_unlock(&pSql->subState.mutex); } void tscLockByThread(int64_t *lockedBy) { @@ -2365,8 +2377,10 @@ void tscFirstRoundRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) { if (code != TSDB_CODE_SUCCESS) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&pParent->subState.mutex); pParent->subState.numOfSub = 0; tfree(pParent->pSubs); + pthread_mutex_unlock(&pParent->subState.mutex); pParent->res.code = code; tscAsyncResultOnError(pParent); return; @@ -2469,9 +2483,11 @@ void tscFirstRoundRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&pParent->subState.mutex); pParent->subState.numOfSub = 0; tfree(pParent->pSubs); - + pthread_mutex_unlock(&pParent->subState.mutex); + if (resRows == 0) { pParent->cmd.command = TSDB_SQL_RETRIEVE_EMPTY_RESULT; (*pParent->fp)(pParent->param, pParent, 0); @@ -2493,8 +2509,10 @@ void tscFirstRoundCallback(void* param, TAOS_RES* tres, int code) { tscFreeFirstRoundSup(¶m); taos_free_result(pSql); + pthread_mutex_lock(&parent->subState.mutex); parent->subState.numOfSub = 0; tfree(parent->pSubs); + pthread_mutex_unlock(&parent->subState.mutex); parent->res.code = c; tscAsyncResultOnError(parent); return; @@ -3014,7 +3032,6 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO } tscFreeSubobj(userSql); - tfree(userSql->pSubs); userSql->res.code = TSDB_CODE_SUCCESS; userSql->retry++; @@ -3382,7 +3399,9 @@ static bool needRetryInsert(SSqlObj* pParentObj, int32_t numOfSub) { } static void doFreeInsertSupporter(SSqlObj* pSqlObj) { - assert(pSqlObj != NULL && pSqlObj->subState.numOfSub > 0); + if (pSqlObj == NULL || pSqlObj->subState.numOfSub <= 0) { + return; + } for(int32_t i = 0; i < pSqlObj->subState.numOfSub; ++i) { SSqlObj* pSql = pSqlObj->pSubs[i]; diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 6c03aeefd789825ddabe1cf1a27bf1f5f28995ea..e1717269de6d2152acc127e6d704080e3e57b62d 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1682,6 +1682,8 @@ void tscFreeSubobj(SSqlObj* pSql) { return; } + pthread_mutex_lock(&pSql->subState.mutex); + tscDebug("0x%"PRIx64" start to free sub SqlObj, numOfSub:%d", pSql->self, pSql->subState.numOfSub); for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) { @@ -1695,12 +1697,14 @@ void tscFreeSubobj(SSqlObj* pSql) { pSql->pSubs[i] = NULL; } - if (pSql->subState.states) { - pthread_mutex_destroy(&pSql->subState.mutex); - } - tfree(pSql->subState.states); pSql->subState.numOfSub = 0; + + tfree(pSql->pSubs); + + pthread_mutex_unlock(&pSql->subState.mutex); + + pthread_mutex_destroy(&pSql->subState.mutex); } /** @@ -1768,9 +1772,6 @@ void tscFreeSqlObj(SSqlObj* pSql) { pSql->fp = NULL; tfree(pSql->sqlstr); tfree(pSql->pBuf); - - tfree(pSql->pSubs); - pSql->subState.numOfSub = 0; pSql->self = 0; tscFreeSqlResult(pSql); @@ -4161,10 +4162,7 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) { } tscFreeSubobj(pParentSql); - tfree(pParentSql->pSubs); - tscFreeSubobj(rootObj); - tfree(rootObj->pSubs); rootObj->res.code = TSDB_CODE_SUCCESS; rootObj->retry++; @@ -4207,19 +4205,9 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) { int32_t doInitSubState(SSqlObj* pSql, int32_t numOfSubqueries) { //bug fix. Above doInitSubState level, the loop invocation with the same SSqlObj will be fail. //assert(pSql->subState.numOfSub == 0 && pSql->pSubs == NULL && pSql->subState.states == NULL); - if(pSql->pSubs) { - free(pSql->pSubs); - pSql->pSubs = NULL; - } - - if(pSql->subState.states) { - free(pSql->subState.states); - pSql->subState.states = NULL; - } - - pSql->subState.numOfSub = numOfSubqueries; + tscFreeSubobj(pSql); - pSql->pSubs = calloc(pSql->subState.numOfSub, POINTER_BYTES); + pSql->pSubs = calloc(numOfSubqueries, POINTER_BYTES); pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(int8_t)); int32_t code = pthread_mutex_init(&pSql->subState.mutex, NULL); @@ -4227,6 +4215,8 @@ int32_t doInitSubState(SSqlObj* pSql, int32_t numOfSubqueries) { return TSDB_CODE_TSC_OUT_OF_MEMORY; } + pSql->subState.numOfSub = numOfSubqueries; + return TSDB_CODE_SUCCESS; } @@ -4332,6 +4322,7 @@ void executeQuery(SSqlObj* pSql, SQueryInfo* pQueryInfo) { return; _error: + for(int32_t i = 0; i < numOfInit; ++i) { SSqlObj* p = pSql->pSubs[i]; tscFreeSqlObj(p); @@ -4616,16 +4607,7 @@ void tscTryQueryNextClause(SSqlObj* pSql, __async_cb_func_t fp) { pRes->final = finalBk; pRes->numOfTotal = num; - pthread_mutex_lock(&pSql->subState.mutex); - for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) { - taos_free_result(pSql->pSubs[i]); - } - - tfree(pSql->pSubs); - tfree(pSql->subState.states); - pSql->subState.numOfSub = 0; - pthread_mutex_unlock(&pSql->subState.mutex); - pthread_mutex_destroy(&pSql->subState.mutex); + tscFreeSubobj(pSql); pSql->fp = fp; diff --git a/src/kit/taos-tools b/src/kit/taos-tools index 2dba49cf57cde998f768bb033619b4d8c5143127..9f4c01ec83b93b2385816134071aa5e702a24079 160000 --- a/src/kit/taos-tools +++ b/src/kit/taos-tools @@ -1 +1 @@ -Subproject commit 2dba49cf57cde998f768bb033619b4d8c5143127 +Subproject commit 9f4c01ec83b93b2385816134071aa5e702a24079 diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 6ba582138c2aecbad0c0dde95177b67a4a0d72fb..7ff2ff790fe5e1d98f147fb4e4f0e2ea7e13b43b 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -9946,7 +9946,7 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S pTableqinfo->pGroupList = taosArrayInit(numOfGroups, POINTER_BYTES); pTableqinfo->numOfTables = pTableGroupInfo->numOfTables; - pTableqinfo->map = taosHashInit(pTableGroupInfo->numOfTables, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_NO_LOCK); + pTableqinfo->map = taosHashInit(pTableGroupInfo->numOfTables, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_ENTRY_LOCK); } pQInfo->pBuf = calloc(pTableGroupInfo->numOfTables, sizeof(STableQueryInfo)); @@ -10146,10 +10146,13 @@ static void doDestroyTableQueryInfo(STableGroupInfo* pTableqinfoGroupInfo) { } taosArrayDestroy(&pTableqinfoGroupInfo->pGroupList); - taosHashCleanup(pTableqinfoGroupInfo->map); + + SHashObj *pmap = pTableqinfoGroupInfo->map; + if (pmap == atomic_val_compare_exchange_ptr(&pTableqinfoGroupInfo->map, pmap, NULL)) { + taosHashCleanup(pmap); + } pTableqinfoGroupInfo->pGroupList = NULL; - pTableqinfoGroupInfo->map = NULL; pTableqinfoGroupInfo->numOfTables = 0; } diff --git a/src/util/src/hash.c b/src/util/src/hash.c index d4d42976155cb1e11b4abdf6c1d6fa6855921971..3cbcc7ed6e7243dc1dcaec17b3c35892c011461e 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -611,7 +611,6 @@ void taosHashClear(SHashObj *pHashObj) { for (int32_t i = 0; i < pHashObj->capacity; ++i) { SHashEntry *pEntry = pHashObj->hashList[i]; if (pEntry->num == 0) { - assert(pEntry->next == NULL); continue; } diff --git a/tests/develop-test/5-taos-tools/taosbenchmark/demo.py b/tests/develop-test/5-taos-tools/taosbenchmark/demo.py index 8b839691f725c83d2ea2a9f946bb461ba2f6bacf..ace3046cdf6e5e3729c90c5b4429fe32a1945fd1 100644 --- a/tests/develop-test/5-taos-tools/taosbenchmark/demo.py +++ b/tests/develop-test/5-taos-tools/taosbenchmark/demo.py @@ -22,9 +22,9 @@ from util.dnodes import * class TDTestCase: def caseDescription(self): - ''' + """ [TD-13823] taosBenchmark test cases - ''' + """ return def init(self, conn, logSql): @@ -34,19 +34,19 @@ class TDTestCase: def getPath(self, tool="taosBenchmark"): selfPath = os.path.dirname(os.path.realpath(__file__)) - if ("community" in selfPath): - projPath = selfPath[:selfPath.find("community")] + if "community" in selfPath: + projPath = selfPath[: selfPath.find("community")] else: - projPath = selfPath[:selfPath.find("tests")] + projPath = selfPath[: selfPath.find("tests")] paths = [] for root, dirs, files in os.walk(projPath): - if ((tool) in files): + if (tool) in files: rootRealPath = os.path.dirname(os.path.realpath(root)) - if ("packaging" not in rootRealPath): + if "packaging" not in rootRealPath: paths.append(os.path.join(root, tool)) break - if (len(paths) == 0): + if len(paths) == 0: tdLog.exit("taosBenchmark not found!") return else: @@ -55,7 +55,7 @@ class TDTestCase: def run(self): binPath = self.getPath() - cmd = "%s -n 100 -t 100 -y" %binPath + cmd = "%s -n 100 -t 100 -y" % binPath tdLog.info("%s" % cmd) os.system("%s" % cmd) tdSql.execute("use test") @@ -77,14 +77,16 @@ class TDTestCase: tdSql.checkData(4, 3, "TAG") tdSql.checkData(5, 0, "location") tdSql.checkData(5, 1, "BINARY") - tdSql.checkData(5, 2, 16) + tdSql.checkData(5, 2, 24) tdSql.checkData(5, 3, "TAG") tdSql.query("select count(*) from test.meters where groupid >= 0") tdSql.checkData(0, 0, 10000) - tdSql.query("select count(*) from test.meters where location = 'San Francisco' or location = 'Los Angles' or location = 'San Diego' or location = 'San Jose' or \ - location = 'Palo Alto' or location = 'Campbell' or location = 'Mountain View' or location = 'Sunnyvale' or location = 'Santa Clara' or location = 'Cupertino' ") + tdSql.query( + "select count(*) from test.meters where location = 'California.SanFrancisco' or location = 'California.LosAngles' or location = 'California.SanDiego' or location = 'California.SanJose' or \ + location = 'California.PaloAlto' or location = 'California.Campbell' or location = 'California.MountainView' or location = 'California.Sunnyvale' or location = 'California.SantaClara' or location = 'California.Cupertino' " + ) tdSql.checkData(0, 0, 10000) def stop(self): @@ -93,4 +95,4 @@ class TDTestCase: tdCases.addWindows(__file__, TDTestCase()) -tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/insert/line_insert.py b/tests/pytest/insert/line_insert.py index 79c318c3448a0a77b02143ac5689952d9e498d3c..8beb6ba01e59ece18c5d7d4b71bd6f09b42fa157 100644 --- a/tests/pytest/insert/line_insert.py +++ b/tests/pytest/insert/line_insert.py @@ -208,6 +208,14 @@ class TDTestCase: tdSql.query("select * from type_json5") tdSql.checkData(0, 2, '''{"jsonC":"0"}''') + try: + self._conn.schemaless_insert([ + "measurement,host=host1 field1=12i,field2=2.0,fieldKey=\"Launch\" 1654078242716", + "measurement,host=host1" + ], TDSmlProtocolType.LINE.value, TDSmlTimestampType.MILLI_SECOND.value) + tdLog.exit("%s failed: no exception happen here" % __file__) + except Exception as e: + pass def stop(self): tdSql.close()