diff --git a/docs/en/07-develop/01-connect/index.md b/docs/en/07-develop/01-connect/index.md index 901fe69d24640e1cfab5ed4cbc3875ac240e493b..61eb8f04eb3fb8cea5096b321105fa9e88722bda 100644 --- a/docs/en/07-develop/01-connect/index.md +++ b/docs/en/07-develop/01-connect/index.md @@ -1,6 +1,7 @@ --- -title: Connect -description: "This document explains how to establish connections to TDengine and how to install and use TDengine connectors." +sidebar_label: Connect +title: Connect to TDengine +description: "How to establish connections to TDengine and how to install and use TDengine connectors." --- import Tabs from "@theme/Tabs"; diff --git a/docs/en/12-taos-sql/14-stream.md b/docs/en/12-taos-sql/14-stream.md index fcd78765104af17285b43749969821ceb98da33b..deb2522309d123cae453b1ab2454db2062b01746 100644 --- a/docs/en/12-taos-sql/14-stream.md +++ b/docs/en/12-taos-sql/14-stream.md @@ -50,7 +50,7 @@ SELECT _wstartts, count(*), avg(voltage) FROM meters PARTITION BY tbname INTERVA ## Delete a Stream ```sql -DROP STREAM [IF NOT EXISTS] stream_name +DROP STREAM [IF EXISTS] stream_name ``` This statement deletes the stream processing service only. The data generated by the stream is retained. diff --git a/docs/en/14-reference/03-connector/05-go.mdx b/docs/en/14-reference/03-connector/05-go.mdx index 00e3bc1bc38bb7433e823642202957abbdf5566c..518d3625d54492c2b6ec209302ac91ca32d03ad2 100644 --- a/docs/en/14-reference/03-connector/05-go.mdx +++ b/docs/en/14-reference/03-connector/05-go.mdx @@ -7,7 +7,7 @@ title: TDengine Go Connector import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -import Preparition from "./_preparition.mdx" +import Preparition from "./_preparation.mdx" import GoInsert from "../../07-develop/03-insert-data/_go_sql.mdx" import GoInfluxLine from "../../07-develop/03-insert-data/_go_line.mdx" import GoOpenTSDBTelnet from "../../07-develop/03-insert-data/_go_opts_telnet.mdx" diff --git a/docs/en/14-reference/03-connector/06-rust.mdx b/docs/en/14-reference/03-connector/06-rust.mdx index 1184c98a287cac8a214aff67ace01f7a836940e5..0d391c6ac308c5e9e998e2e7e3423cc5a809905e 100644 --- a/docs/en/14-reference/03-connector/06-rust.mdx +++ b/docs/en/14-reference/03-connector/06-rust.mdx @@ -7,7 +7,7 @@ title: TDengine Rust Connector import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -import Preparition from "./_preparition.mdx" +import Preparition from "./_preparation.mdx" import RustInsert from "../../07-develop/03-insert-data/_rust_sql.mdx" import RustBind from "../../07-develop/03-insert-data/_rust_stmt.mdx" import RustQuery from "../../07-develop/04-query-data/_rust.mdx" diff --git a/docs/en/14-reference/03-connector/08-node.mdx b/docs/en/14-reference/03-connector/08-node.mdx index f93632b4171a0b563a17f80533d3ede4c76e4425..bf7c6b95ea67dc8bf8fa1277591b549a2fd6322d 100644 --- a/docs/en/14-reference/03-connector/08-node.mdx +++ b/docs/en/14-reference/03-connector/08-node.mdx @@ -7,7 +7,7 @@ title: TDengine Node.js Connector import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -import Preparition from "./_preparition.mdx"; +import Preparition from "./_preparation.mdx"; import NodeInsert from "../../07-develop/03-insert-data/_js_sql.mdx"; import NodeInfluxLine from "../../07-develop/03-insert-data/_js_line.mdx"; import NodeOpenTSDBTelnet from "../../07-develop/03-insert-data/_js_opts_telnet.mdx"; diff --git a/docs/en/14-reference/03-connector/09-csharp.mdx b/docs/en/14-reference/03-connector/09-csharp.mdx index 823e9075993e0a4fd32abafbbd4e95f1cc7bc2cf..bc16cd086bdbef4b594df6e866a019a02ae54fd8 100644 --- a/docs/en/14-reference/03-connector/09-csharp.mdx +++ b/docs/en/14-reference/03-connector/09-csharp.mdx @@ -7,7 +7,7 @@ title: C# Connector import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -import Preparition from "./_preparition.mdx" +import Preparition from "./_preparation.mdx" import CSInsert from "../../07-develop/03-insert-data/_cs_sql.mdx" import CSInfluxLine from "../../07-develop/03-insert-data/_cs_line.mdx" import CSOpenTSDBTelnet from "../../07-develop/03-insert-data/_cs_opts_telnet.mdx" diff --git a/docs/zh/12-taos-sql/10-function.md b/docs/zh/12-taos-sql/10-function.md index 9f999181c40c4f51e1499f9189fe63bacf2222df..f936d9182d3c935426b46eb52ade429a49b66d7d 100644 --- a/docs/zh/12-taos-sql/10-function.md +++ b/docs/zh/12-taos-sql/10-function.md @@ -917,7 +917,7 @@ SELECT MAX(field_name) FROM { tb_name | stb_name } [WHERE clause]; **返回数据类型**:同应用的字段。 -**适用数据类型**:数值类型。 +**适用数据类型**:数值类型,时间戳类型。 **适用于**:表和超级表。 @@ -932,7 +932,7 @@ SELECT MIN(field_name) FROM {tb_name | stb_name} [WHERE clause]; **返回数据类型**:同应用的字段。 -**适用数据类型**:数值类型。 +**适用数据类型**:数值类型,时间戳类型。 **适用于**:表和超级表。 diff --git a/docs/zh/12-taos-sql/14-stream.md b/docs/zh/12-taos-sql/14-stream.md index 70b062a6ca28549347f78f8eea21c54b1e3bcb81..86437c762e340811ce72c3c98b951b00ba6813e5 100644 --- a/docs/zh/12-taos-sql/14-stream.md +++ b/docs/zh/12-taos-sql/14-stream.md @@ -58,7 +58,7 @@ SELECT _wstartts, count(*), avg(voltage) FROM meters PARTITION BY tbname INTERVA ## 删除流式计算 ```sql -DROP STREAM [IF NOT EXISTS] stream_name; +DROP STREAM [IF EXISTS] stream_name; ``` 仅删除流式计算任务,由流式计算写入的数据不会被删除。 diff --git a/docs/zh/14-reference/05-taosbenchmark.md b/docs/zh/14-reference/05-taosbenchmark.md index f84ec65b4c8574c0812567a65213d7605b306c99..67d25e24aaf32ec3b833dbaba916f251c842d412 100644 --- a/docs/zh/14-reference/05-taosbenchmark.md +++ b/docs/zh/14-reference/05-taosbenchmark.md @@ -87,7 +87,7 @@ taosBenchmark -f subscribe.json ```json -{{#include /taos-tools/example/subscribe.json}} +{{#include /taos-tools/example/tmq.json}} ``` @@ -405,37 +405,7 @@ taosBenchmark -A INT,DOUBLE,NCHAR,BINARY\(16\) 订阅子表或者普通表的配置参数在 `specified_table_query` 中设置。 -- **threads** : 执行 SQL 的线程数,默认为 1。 - -- **interval** : 执行订阅的时间间隔,单位为秒,默认为 0。 - -- **restart** : "yes" 表示开始新的订阅,"no" 表示继续之前的订阅,默认值为 "no"。 - -- **keepProgress** : "yes" 表示保留订阅进度,"no" 表示不保留,默认值为 "no"。 - -- **resubAfterConsume** : "yes" 表示取消之前的订阅然后再次订阅, "no" 表示继续之前的订阅,默认值为 "no"。 +- **threads/concurrent** : 执行 SQL 的线程数,默认为 1。 - **sqls** : - **sql** : 执行的 SQL 命令,必填。 - - **result** : 保存查询结果的文件,未指定则不保存。 - -#### 订阅超级表的配置参数 - -订阅超级表的配置参数在 `super_table_query` 中设置。 - -- **stblname** : 要订阅的超级表名称,必填。 - -- **threads** : 执行 SQL 的线程数,默认为 1。 - -- **interval** : 执行订阅的时间间隔,单位为秒,默认为 0。 - -- **restart** : "yes" 表示开始新的订阅,"no" 表示继续之前的订阅,默认值为 "no"。 - -- **keepProgress** : "yes" 表示保留订阅进度,"no" 表示不保留,默认值为 "no"。 - -- **resubAfterConsume** : "yes" 表示取消之前的订阅然后再次订阅, "no" 表示继续之前的订阅,默认值为 "no"。 - -- **sqls** : - - **sql** : 执行的 SQL 命令,必填;对于超级表的查询 SQL,在 SQL 命令中保留 "xxxx",程序会自动将其替换为超级表的所有子表名。 - 替换为超级表中所有的子表名。 - - **result** : 保存查询结果的文件,未指定则不保存。 diff --git a/include/common/ttypes.h b/include/common/ttypes.h index ceb3eae0338455ab207034fca707473c6c44940d..a88f65f6acf69d552073ab0ede31a0b027b25692 100644 --- a/include/common/ttypes.h +++ b/include/common/ttypes.h @@ -49,9 +49,6 @@ typedef struct { #define varDataCopy(dst, v) memcpy((dst), (void *)(v), varDataTLen(v)) #define varDataLenByData(v) (*(VarDataLenT *)(((char *)(v)) - VARSTR_HEADER_SIZE)) #define varDataSetLen(v, _len) (((VarDataLenT *)(v))[0] = (VarDataLenT)(_len)) -#define IS_VAR_DATA_TYPE(t) \ - (((t) == TSDB_DATA_TYPE_VARCHAR) || ((t) == TSDB_DATA_TYPE_NCHAR) || ((t) == TSDB_DATA_TYPE_JSON)) -#define IS_STR_DATA_TYPE(t) (((t) == TSDB_DATA_TYPE_VARCHAR) || ((t) == TSDB_DATA_TYPE_NCHAR)) #define varDataNetLen(v) (htons(((VarDataLenT *)(v))[0])) #define varDataNetTLen(v) (sizeof(VarDataLenT) + varDataNetLen(v)) @@ -268,11 +265,16 @@ typedef struct { #define IS_UNSIGNED_NUMERIC_TYPE(_t) ((_t) >= TSDB_DATA_TYPE_UTINYINT && (_t) <= TSDB_DATA_TYPE_UBIGINT) #define IS_FLOAT_TYPE(_t) ((_t) == TSDB_DATA_TYPE_FLOAT || (_t) == TSDB_DATA_TYPE_DOUBLE) #define IS_INTEGER_TYPE(_t) ((IS_SIGNED_NUMERIC_TYPE(_t)) || (IS_UNSIGNED_NUMERIC_TYPE(_t))) +#define IS_TIMESTAMP_TYPE(_t) ((_t) == TSDB_DATA_TYPE_TIMESTAMP) #define IS_NUMERIC_TYPE(_t) ((IS_SIGNED_NUMERIC_TYPE(_t)) || (IS_UNSIGNED_NUMERIC_TYPE(_t)) || (IS_FLOAT_TYPE(_t))) #define IS_MATHABLE_TYPE(_t) \ (IS_NUMERIC_TYPE(_t) || (_t) == (TSDB_DATA_TYPE_BOOL) || (_t) == (TSDB_DATA_TYPE_TIMESTAMP)) +#define IS_VAR_DATA_TYPE(t) \ + (((t) == TSDB_DATA_TYPE_VARCHAR) || ((t) == TSDB_DATA_TYPE_NCHAR) || ((t) == TSDB_DATA_TYPE_JSON)) +#define IS_STR_DATA_TYPE(t) (((t) == TSDB_DATA_TYPE_VARCHAR) || ((t) == TSDB_DATA_TYPE_NCHAR)) + #define IS_VALID_TINYINT(_t) ((_t) >= INT8_MIN && (_t) <= INT8_MAX) #define IS_VALID_SMALLINT(_t) ((_t) >= INT16_MIN && (_t) <= INT16_MAX) #define IS_VALID_INT(_t) ((_t) >= INT32_MIN && (_t) <= INT32_MAX) diff --git a/source/libs/function/src/builtins.c b/source/libs/function/src/builtins.c index b7cd02befd326eafd7b0a9354a3f5c50147d834b..648ae5a538caed9fdb896bc4f1e6fe7537a7948a 100644 --- a/source/libs/function/src/builtins.c +++ b/source/libs/function/src/builtins.c @@ -311,6 +311,22 @@ static int32_t translateInOutStr(SFunctionNode* pFunc, char* pErrBuf, int32_t le return TSDB_CODE_SUCCESS; } +static int32_t translateMinMax(SFunctionNode* pFunc, char* pErrBuf, int32_t len) { + if (1 != LIST_LENGTH(pFunc->pParameterList)) { + return invaildFuncParaNumErrMsg(pErrBuf, len, pFunc->functionName); + } + + uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; + if (!IS_TIMESTAMP_TYPE(paraType) && !IS_NUMERIC_TYPE(paraType) && !IS_NULL_TYPE(paraType)) { + return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); + } else if (IS_NULL_TYPE(paraType)) { + paraType = TSDB_DATA_TYPE_BIGINT; + } + + pFunc->node.resType = (SDataType){.bytes = tDataTypes[paraType].bytes, .type = paraType}; + return TSDB_CODE_SUCCESS; +} + static int32_t translateTrimStr(SFunctionNode* pFunc, char* pErrBuf, int32_t len, bool isLtrim) { if (1 != LIST_LENGTH(pFunc->pParameterList)) { return invaildFuncParaNumErrMsg(pErrBuf, len, pFunc->functionName); @@ -698,7 +714,7 @@ static int32_t translateSpread(SFunctionNode* pFunc, char* pErrBuf, int32_t len) } uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; - if (!IS_NUMERIC_TYPE(paraType) && TSDB_DATA_TYPE_TIMESTAMP != paraType) { + if (!IS_NUMERIC_TYPE(paraType) && !IS_TIMESTAMP_TYPE(paraType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } @@ -713,7 +729,7 @@ static int32_t translateSpreadImpl(SFunctionNode* pFunc, char* pErrBuf, int32_t uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; if (isPartial) { - if (!IS_NUMERIC_TYPE(paraType) && TSDB_DATA_TYPE_TIMESTAMP != paraType) { + if (!IS_NUMERIC_TYPE(paraType) && !IS_TIMESTAMP_TYPE(paraType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } pFunc->node.resType = (SDataType){.bytes = getSpreadInfoSize() + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_BINARY}; @@ -788,7 +804,7 @@ static int32_t translateElapsedImpl(SFunctionNode* pFunc, char* pErrBuf, int32_t } uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; - if (TSDB_DATA_TYPE_TIMESTAMP != paraType) { + if (!IS_TIMESTAMP_TYPE(paraType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } @@ -1634,7 +1650,7 @@ static int32_t translateDiff(SFunctionNode* pFunc, char* pErrBuf, int32_t len) { uint8_t colType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; if (!IS_SIGNED_NUMERIC_TYPE(colType) && !IS_FLOAT_TYPE(colType) && TSDB_DATA_TYPE_BOOL != colType && - TSDB_DATA_TYPE_TIMESTAMP != colType) { + !IS_TIMESTAMP_TYPE(colType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } @@ -1660,7 +1676,7 @@ static int32_t translateDiff(SFunctionNode* pFunc, char* pErrBuf, int32_t len) { } uint8_t resType; - if (IS_SIGNED_NUMERIC_TYPE(colType) || TSDB_DATA_TYPE_BOOL == colType || TSDB_DATA_TYPE_TIMESTAMP == colType) { + if (IS_SIGNED_NUMERIC_TYPE(colType) || IS_TIMESTAMP_TYPE(colType) || TSDB_DATA_TYPE_BOOL == colType) { resType = TSDB_DATA_TYPE_BIGINT; } else { resType = TSDB_DATA_TYPE_DOUBLE; @@ -1825,7 +1841,7 @@ static int32_t translateToIso8601(SFunctionNode* pFunc, char* pErrBuf, int32_t l // param0 uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; - if (!IS_INTEGER_TYPE(paraType) && TSDB_DATA_TYPE_TIMESTAMP != paraType) { + if (!IS_INTEGER_TYPE(paraType) && !IS_TIMESTAMP_TYPE(paraType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } @@ -1878,7 +1894,7 @@ static int32_t translateTimeTruncate(SFunctionNode* pFunc, char* pErrBuf, int32_ uint8_t para1Type = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 0))->resType.type; uint8_t para2Type = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, 1))->resType.type; - if ((!IS_STR_DATA_TYPE(para1Type) && !IS_INTEGER_TYPE(para1Type) && TSDB_DATA_TYPE_TIMESTAMP != para1Type) || + if ((!IS_STR_DATA_TYPE(para1Type) && !IS_INTEGER_TYPE(para1Type) && !IS_TIMESTAMP_TYPE(para1Type)) || !IS_INTEGER_TYPE(para2Type)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } @@ -1911,7 +1927,7 @@ static int32_t translateTimeDiff(SFunctionNode* pFunc, char* pErrBuf, int32_t le for (int32_t i = 0; i < 2; ++i) { uint8_t paraType = ((SExprNode*)nodesListGetNode(pFunc->pParameterList, i))->resType.type; - if (!IS_STR_DATA_TYPE(paraType) && !IS_INTEGER_TYPE(paraType) && TSDB_DATA_TYPE_TIMESTAMP != paraType) { + if (!IS_STR_DATA_TYPE(paraType) && !IS_INTEGER_TYPE(paraType) && !IS_TIMESTAMP_TYPE(paraType)) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } } @@ -2060,7 +2076,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = { .name = "min", .type = FUNCTION_TYPE_MIN, .classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_SPECIAL_DATA_REQUIRED | FUNC_MGT_SELECT_FUNC, - .translateFunc = translateInOutNum, + .translateFunc = translateMinMax, .dataRequiredFunc = statisDataRequired, .getEnvFunc = getMinmaxFuncEnv, .initFunc = minmaxFunctionSetup, @@ -2075,7 +2091,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = { .name = "max", .type = FUNCTION_TYPE_MAX, .classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_SPECIAL_DATA_REQUIRED | FUNC_MGT_SELECT_FUNC, - .translateFunc = translateInOutNum, + .translateFunc = translateMinMax, .dataRequiredFunc = statisDataRequired, .getEnvFunc = getMinmaxFuncEnv, .initFunc = minmaxFunctionSetup, diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index 84d3a048071736e2e09476ab9020cce7e9c8a2ee..7160541c13538eb7f8e2a5f7cd0d00aaa237ad8d 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -1204,7 +1204,7 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc) { pBuf->tuplePos = saveTupleData(pCtx, index, pCtx->pSrcBlock); } } else { - if (IS_SIGNED_NUMERIC_TYPE(type)) { + if (IS_SIGNED_NUMERIC_TYPE(type) || IS_TIMESTAMP_TYPE(type)) { int64_t prev = 0; GET_TYPED_DATA(prev, int64_t, type, &pBuf->v); @@ -1216,7 +1216,6 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc) { pBuf->tuplePos = saveTupleData(pCtx, index, pCtx->pSrcBlock); } } - } else if (IS_UNSIGNED_NUMERIC_TYPE(type)) { uint64_t prev = 0; GET_TYPED_DATA(prev, uint64_t, type, &pBuf->v); @@ -1264,7 +1263,7 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc) { int32_t start = pInput->startRowIndex; int32_t numOfRows = pInput->numOfRows; - if (IS_SIGNED_NUMERIC_TYPE(type) || type == TSDB_DATA_TYPE_BOOL) { + if (IS_SIGNED_NUMERIC_TYPE(type) || IS_TIMESTAMP_TYPE(type) || type == TSDB_DATA_TYPE_BOOL) { if (type == TSDB_DATA_TYPE_TINYINT || type == TSDB_DATA_TYPE_BOOL) { int8_t* pData = (int8_t*)pCol->pData; int8_t* val = (int8_t*)&pBuf->v; @@ -1358,7 +1357,8 @@ int32_t doMinMaxHelper(SqlFunctionCtx* pCtx, int32_t isMinFunc) { numOfElems += 1; } - } else if (type == TSDB_DATA_TYPE_BIGINT) { + } else if (type == TSDB_DATA_TYPE_BIGINT || + type == TSDB_DATA_TYPE_TIMESTAMP) { int64_t* pData = (int64_t*)pCol->pData; int64_t* val = (int64_t*)&pBuf->v; diff --git a/source/libs/sync/src/syncSnapshot.c b/source/libs/sync/src/syncSnapshot.c index 5489a107e76082106961a0ed107413e5ec9b4a64..0be3392a9a52b69e29cbcedcb910cdbc0f9a6234 100644 --- a/source/libs/sync/src/syncSnapshot.c +++ b/source/libs/sync/src/syncSnapshot.c @@ -583,7 +583,7 @@ static int32_t snapshotReceiverFinish(SSyncSnapshotReceiver *pReceiver, SyncSnap &(pReceiver->snapshot)); if (code != 0) { syncNodeErrorLog(pReceiver->pSyncNode, "snapshot stop writer true error"); - ASSERT(0); + // ASSERT(0); return -1; } pReceiver->pWriter = NULL; diff --git a/source/libs/sync/src/syncTimeout.c b/source/libs/sync/src/syncTimeout.c index af15c377fbc36ae523776824962f282462ff2bc9..c3c8131cbb31c3d4ac0b9fb59afc7bc751096329 100644 --- a/source/libs/sync/src/syncTimeout.c +++ b/source/libs/sync/src/syncTimeout.c @@ -91,16 +91,16 @@ int32_t syncNodeOnTimeoutCb(SSyncNode* ths, SyncTimeout* pMsg) { } else if (pMsg->timeoutType == SYNC_TIMEOUT_ELECTION) { if (atomic_load_64(&ths->electTimerLogicClockUser) <= pMsg->logicClock) { ++(ths->electTimerCounter); - sInfo("vgId:%d, sync timeout, type:election count:%d, electTimerLogicClockUser:%ld", ths->vgId, - ths->electTimerCounter, ths->electTimerLogicClockUser); + sTrace("vgId:%d, sync timer, type:election count:%d, electTimerLogicClockUser:%ld", ths->vgId, + ths->electTimerCounter, ths->electTimerLogicClockUser); syncNodeElect(ths); } } else if (pMsg->timeoutType == SYNC_TIMEOUT_HEARTBEAT) { if (atomic_load_64(&ths->heartbeatTimerLogicClockUser) <= pMsg->logicClock) { ++(ths->heartbeatTimerCounter); - sInfo("vgId:%d, sync timeout, type:replicate count:%d, heartbeatTimerLogicClockUser:%ld", ths->vgId, - ths->heartbeatTimerCounter, ths->heartbeatTimerLogicClockUser); + sTrace("vgId:%d, sync timer, type:replicate count:%d, heartbeatTimerLogicClockUser:%ld", ths->vgId, + ths->heartbeatTimerCounter, ths->heartbeatTimerLogicClockUser); syncNodeReplicate(ths, true); } } else { diff --git a/source/util/src/terror.c b/source/util/src/terror.c index f99d1268924ff52e7f7d7beb97d5b2a1d28bd477..3117152af6a3a5c4d1fb6ce08896924d3c0d6d1c 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -621,7 +621,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_RSMA_INVALID_SCHEMA, "Rsma invalid schema //index TAOS_DEFINE_ERROR(TSDB_CODE_INDEX_REBUILDING, "Index is rebuilding") -TAOS_DEFINE_ERROR(TSDB_CODE_INDEX_REBUILDING, "Invalid index file") +TAOS_DEFINE_ERROR(TSDB_CODE_INDEX_INVALID_FILE, "Index file is invalid") //tmq TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_INVALID_MSG, "Invalid message") diff --git a/tests/pytest/tools/taosdumpTest2.py b/tests/pytest/tools/taosdumpTest2.py index a8117ec04c79aff5c00dcfa604c1124854473d30..7071adb3a95f1c240d22a7dad6354d1e08b28400 100644 --- a/tests/pytest/tools/taosdumpTest2.py +++ b/tests/pytest/tools/taosdumpTest2.py @@ -11,15 +11,19 @@ # -*- coding: utf-8 -*- +from logging.config import dictConfig import sys import os from util.log import * from util.cases import * from util.sql import * from util.dnodes import * +import string +import random class TDTestCase: + def init(self, conn, logSql): tdLog.debug("start to execute %s" % __file__) tdSql.init(conn.cursor(), logSql) @@ -47,12 +51,19 @@ class TDTestCase: return "" return paths[0] + def generateString(self, length): + chars = string.ascii_uppercase + string.ascii_lowercase + v = "" + for i in range(length): + v += random.choice(chars) + return v + def run(self): if not os.path.exists("./taosdumptest/tmp"): os.makedirs("./taosdumptest/tmp") else: - os.system("rm -rf ./taosdumptest/tmp") - os.makedirs("./taosdumptest/tmp") + print("directory exists") + os.system("rm -rf ./taosdumptest/tmp/*") tdSql.prepare() @@ -76,17 +87,19 @@ class TDTestCase: tdLog.info("taosdump found in %s" % binPath) os.system("rm ./taosdumptest/tmp/*.sql") + os.system("rm ./taosdumptest/tmp/*.avro*") + os.system("rm -rf ./taosdumptest/taosdump.*") os.system( - "%s --databases db -o ./taosdumptest/tmp -B 32766 -L 1048576" % + "%s --databases db -o ./taosdumptest/tmp " % binPath) tdSql.execute("drop database db") - tdSql.query("select * from information_schema.ins_databases") + tdSql.query("show databases") tdSql.checkRows(2) - os.system("%s -i ./taosdumptest/tmp" % binPath) + os.system("%s -i ./taosdumptest/tmp -y" % binPath) - tdSql.query("select * from information_schema.ins_databases") + tdSql.query("show databases") tdSql.checkRows(3) tdSql.checkData(2, 0, 'db') @@ -105,17 +118,17 @@ class TDTestCase: "create table stb(ts timestamp, c1 binary(16374), c2 binary(16374), c3 binary(16374)) tags(t1 nchar(256))") tdSql.execute( "insert into t1 using stb tags('t1') values(now, '%s', '%s', '%s')" % - ("16374", - "16374", - "16374")) + (self.generateString(16374), + self.generateString(16374), + self.generateString(16374))) -# sys.exit(0) os.system("rm ./taosdumptest/tmp/*.sql") os.system("rm ./taosdumptest/tmp/*.avro*") + os.system("rm -rf ./taosdumptest/tmp/taosdump.*") os.system("%s -D test -o ./taosdumptest/tmp -y" % binPath) tdSql.execute("drop database test") - tdSql.query("select * from information_schema.ins_databases") + tdSql.query("show databases") tdSql.checkRows(3) os.system("%s -i ./taosdumptest/tmp -y" % binPath) diff --git a/tests/script/tsim/stable/alter_comment.sim b/tests/script/tsim/stable/alter_comment.sim index beb049985c90ca7f8c7521c004c950609cc05347..7c2d6edfcbe48e6e4afc55536e893cbc7d0dbc20 100644 --- a/tests/script/tsim/stable/alter_comment.sim +++ b/tests/script/tsim/stable/alter_comment.sim @@ -95,7 +95,7 @@ sql_error alter table db.stb add tag t1 int sql_error alter table db.stb add tag t2 int sql_error alter table db.stb add tag t3 int sql alter table db.stb add tag t4 bigint -sql alter table db.stb add tag c1 int +sql alter table db.stb add tag c1 int sql alter table db.stb add tag t5 binary(12) sql select * from information_schema.ins_stables where db_name = 'db' diff --git a/tests/script/tsim/stable/alter_count.sim b/tests/script/tsim/stable/alter_count.sim index 83ea4b14fa733821316814dc6b4f47c7f239e1e8..4a2aeca029175c73a82d622b59777782f27639ab 100644 --- a/tests/script/tsim/stable/alter_count.sim +++ b/tests/script/tsim/stable/alter_count.sim @@ -5,8 +5,8 @@ print ========= start dnode1 as master system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 -sql create database d1 replica 1 duration 7 keep 50 +print ======== step1 +sql create database d1 replica 1 duration 7 keep 50 sql use d1 sql create table tb (ts timestamp, a int) sql insert into tb values(now-28d, -28) @@ -83,7 +83,7 @@ if $data00 != 3 then endi print ======== step8 -# sql alter table tb(ts timestamp, a int, b smallint, c tinyint, d int, e bigint, f float, g double, h binary(10) ) +# sql alter table tb(ts timestamp, a int, b smallint, c tinyint, d int, e bigint, f float, g double, h binary(10) ) sql alter table tb add column h binary(10) sql insert into tb values(now-7d, -7, 18, 0, 0, 0, 0, 0, '0') sql insert into tb values(now-6d, -6, 19, 1, 1, 1, 1, 1, '1') @@ -260,4 +260,4 @@ if $data00 != 31 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/alter_import.sim b/tests/script/tsim/stable/alter_import.sim index b968eb6a124a8f8d232f03090e4ce67b06be735e..7431ea698acbe5f504e5d8c6abf64c1877420fd5 100644 --- a/tests/script/tsim/stable/alter_import.sim +++ b/tests/script/tsim/stable/alter_import.sim @@ -5,7 +5,7 @@ print ========= start dnode1 as master system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql create database d1 replica 1 duration 7 keep 50 sql use d1 sql create table tb (ts timestamp, a int) @@ -42,4 +42,4 @@ if $data00 != 6 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/alter_insert1.sim b/tests/script/tsim/stable/alter_insert1.sim index bcea0b48c4032fa1d0ddd56a2c467559a39e8a77..0e5617e92d63a049e288c318e007bfdfd79e7b9b 100644 --- a/tests/script/tsim/stable/alter_insert1.sim +++ b/tests/script/tsim/stable/alter_insert1.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql create database d3 sql use d3 sql create table tb (ts timestamp, a int) @@ -1137,4 +1137,4 @@ if $data79 != null then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/alter_insert2.sim b/tests/script/tsim/stable/alter_insert2.sim index faae24d32aee731b9bee8ca4e5b89816c58cfb1c..a6046f3dda81458c4f760fb0c48b1352e21105fe 100644 --- a/tests/script/tsim/stable/alter_insert2.sim +++ b/tests/script/tsim/stable/alter_insert2.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql create database d4 sql use d4 sql create table tb (ts timestamp, a int, b smallint, c tinyint, d int, e bigint, f float, g double, h binary(10)) @@ -662,4 +662,4 @@ if $data62 != null then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/alter_metrics.sim b/tests/script/tsim/stable/alter_metrics.sim index e32250de130210612a8f7bf70df7225da381c1ab..203f41e18bcf3148ab6b954288320b326bb3c07d 100644 --- a/tests/script/tsim/stable/alter_metrics.sim +++ b/tests/script/tsim/stable/alter_metrics.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql create database d2 sql use d2 sql create table mt (ts timestamp, a int) TAGS (t int) @@ -757,8 +757,8 @@ endi print ======= over sql drop database d2 sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/column_add.sim b/tests/script/tsim/stable/column_add.sim index c0f3b4f4907402a863e5c4b25bcb8c4ee3d6f46f..05189f6c7d9f6800e7d8229c29c9bcd7284d238f 100644 --- a/tests/script/tsim/stable/column_add.sim +++ b/tests/script/tsim/stable/column_add.sim @@ -116,7 +116,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != NULL then return -1 endi @@ -153,7 +153,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != NULL then return -1 endi @@ -299,4 +299,4 @@ if $rows != 10 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/column_modify.sim b/tests/script/tsim/stable/column_modify.sim index e2752ccf951cef30587aa1f604f92cbbaa265b85..43284ba829ecd662872b24cefc13a51db28d025b 100644 --- a/tests/script/tsim/stable/column_modify.sim +++ b/tests/script/tsim/stable/column_modify.sim @@ -31,7 +31,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -92,7 +92,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -106,4 +106,4 @@ if $data[1][3] != 101 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/disk.sim b/tests/script/tsim/stable/disk.sim index e0e51b2625d5d90640dc846cefa0d151d9e4efb5..8edd0a845ecf7ced9638b32640d3278e73c93835 100644 --- a/tests/script/tsim/stable/disk.sim +++ b/tests/script/tsim/stable/disk.sim @@ -188,4 +188,4 @@ if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/refcount.sim b/tests/script/tsim/stable/refcount.sim index a83c0ca53f3033513e48dd21252a9db53eab4774..35d8767efd55df3d6a0126c1d9fd0e33c0f41176 100644 --- a/tests/script/tsim/stable/refcount.sim +++ b/tests/script/tsim/stable/refcount.sim @@ -123,4 +123,4 @@ if $rows != 2 then endi print =============== step6 -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/tag_add.sim b/tests/script/tsim/stable/tag_add.sim index 7ee9aee974681a21ba7b186cd3d84f9492f6523e..4f5f0e745234e39ecce1e24a0e918094db8676f9 100644 --- a/tests/script/tsim/stable/tag_add.sim +++ b/tests/script/tsim/stable/tag_add.sim @@ -139,7 +139,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -170,7 +170,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -190,4 +190,4 @@ if $rows != 7 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/tag_drop.sim b/tests/script/tsim/stable/tag_drop.sim index 7902358817c1ee9ba6038233a08810504be6fc70..b457bf195b8991721c59a581e6bd252b8f823906 100644 --- a/tests/script/tsim/stable/tag_drop.sim +++ b/tests/script/tsim/stable/tag_drop.sim @@ -165,7 +165,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -196,7 +196,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 201 then return -1 endi @@ -229,7 +229,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 201 then return -1 endi @@ -261,7 +261,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 301 then return -1 endi @@ -323,7 +323,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 2 then return -1 -endi +endi if $data[0][3] != 302 then return -1 endi @@ -334,4 +334,4 @@ if $data[0][5] != 304 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/tag_filter.sim b/tests/script/tsim/stable/tag_filter.sim index f44142fbbffdb4f19b32afd51f6d75fa2e798e88..de2a87d6c4a710d8fcb2af773d20ac1bfc252f84 100644 --- a/tests/script/tsim/stable/tag_filter.sim +++ b/tests/script/tsim/stable/tag_filter.sim @@ -27,47 +27,47 @@ sql create table db.ctb6 using db.stb tags(6, "102") sql insert into db.ctb6 values(now, 6, "2") sql select * from db.stb where t1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -sql select * from db.stb where t1 < 1 -if $rows != 0 then +sql select * from db.stb where t1 < 1 +if $rows != 0 then return -=1 endi -sql select * from db.stb where t1 < 2 -if $rows != 1 then +sql select * from db.stb where t1 < 2 +if $rows != 1 then return -1 endi -sql select * from db.stb where t1 <= 2 -if $rows != 2 then +sql select * from db.stb where t1 <= 2 +if $rows != 2 then return -1 endi -sql select * from db.stb where t1 >= 1 -if $rows != 6 then +sql select * from db.stb where t1 >= 1 +if $rows != 6 then return -1 endi -sql select * from db.stb where t1 > 1 -if $rows != 5 then +sql select * from db.stb where t1 > 1 +if $rows != 5 then return -1 endi -sql select * from db.stb where t1 between 1 and 1 -if $rows != 1 then +sql select * from db.stb where t1 between 1 and 1 +if $rows != 1 then return -1 endi -sql select * from db.stb where t1 between 1 and 6 -if $rows != 6 then +sql select * from db.stb where t1 between 1 and 6 +if $rows != 6 then return -1 endi -sql select * from db.stb where t1 between 1 and 7 -if $rows != 6 then +sql select * from db.stb where t1 between 1 and 7 +if $rows != 6 then return -1 endi @@ -88,25 +88,25 @@ sql insert into db.ctbBin2 values(now, 3, "2") sql create table db.ctbBin3 using db.stbBin tags("d") sql insert into db.ctbBin3 values(now, 4, "2") -sql select * from db.stbBin where t1 = "a" -if $rows != 1 then +sql select * from db.stbBin where t1 = "a" +if $rows != 1 then return -1 endi -sql select * from db.stbBin where t1 < "a" -if $rows != 0 then +sql select * from db.stbBin where t1 < "a" +if $rows != 0 then return -=1 endi -sql select * from db.stbBin where t1 < "b" -if $rows != 1 then +sql select * from db.stbBin where t1 < "b" +if $rows != 1 then return -1 endi -sql select * from db.stbBin where t1 between "a" and "e" -if $rows != 4 then +sql select * from db.stbBin where t1 between "a" and "e" +if $rows != 4 then return -1 endi @@ -127,25 +127,25 @@ sql insert into db.ctbNc2 values(now, 3, "2") sql create table db.ctbNc3 using db.stbNc tags("d") sql insert into db.ctbNc3 values(now, 4, "2") -sql select * from db.stbNc where t1 = "a" -if $rows != 1 then +sql select * from db.stbNc where t1 = "a" +if $rows != 1 then return -1 endi -sql select * from db.stbNc where t1 < "a" -if $rows != 0 then +sql select * from db.stbNc where t1 < "a" +if $rows != 0 then return -=1 endi -sql select * from db.stbNc where t1 < "b" -if $rows != 1 then +sql select * from db.stbNc where t1 < "b" +if $rows != 1 then return -1 endi -sql select * from db.stbNc where t1 between "a" and "e" -if $rows != 4 then +sql select * from db.stbNc where t1 between "a" and "e" +if $rows != 4 then return -1 endi system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/tag_modify.sim b/tests/script/tsim/stable/tag_modify.sim index 909ed7935944aa63f7776bbc75f27b7b156bf0fe..53e7227d1b43f32bbd14e719837b15c2b27e3ca5 100644 --- a/tests/script/tsim/stable/tag_modify.sim +++ b/tests/script/tsim/stable/tag_modify.sim @@ -28,7 +28,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -55,7 +55,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -120,4 +120,4 @@ if $data[4][2] != 5 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stable/tag_rename.sim b/tests/script/tsim/stable/tag_rename.sim index 5bdfa24990d6742d25dee2a45d5aefd94230f648..c85ed183de1946ea7b876f989473189e7834e4e6 100644 --- a/tests/script/tsim/stable/tag_rename.sim +++ b/tests/script/tsim/stable/tag_rename.sim @@ -28,7 +28,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -52,7 +52,7 @@ if $data[0][1] != 1 then endi if $data[0][2] != 1234 then return -1 -endi +endi if $data[0][3] != 101 then return -1 endi @@ -117,4 +117,4 @@ if $data[4][2] != 4 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/sync/create-mnode.sim b/tests/script/tsim/sync/create-mnode.sim new file mode 100644 index 0000000000000000000000000000000000000000..cfaafc8208e7e10f7b53be76a6eaa94e718efbbd --- /dev/null +++ b/tests/script/tsim/sync/create-mnode.sim @@ -0,0 +1,20 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/deploy.sh -n dnode2 -i 2 +system sh/deploy.sh -n dnode3 -i 3 +system sh/deploy.sh -n dnode4 -i 4 + +system sh/cfg.sh -n dnode1 -c supportVnodes -v 0 + +system sh/exec.sh -n dnode1 -s start +system sh/exec.sh -n dnode2 -s start +system sh/exec.sh -n dnode3 -s start +system sh/exec.sh -n dnode4 -s start + +sql connect +sql create dnode $hostname port 7200 +sql create dnode $hostname port 7300 +sql create dnode $hostname port 7400 + +sql create mnode on dnode 2 +sql create mnode on dnode 3 diff --git a/tests/system-test/2-query/max.py b/tests/system-test/2-query/max.py index 1cb08aeee8a0ddfcbdd18159d93b0e14780923e5..169b1c2c387c7158635483f8ce8868891e42e3c2 100644 --- a/tests/system-test/2-query/max.py +++ b/tests/system-test/2-query/max.py @@ -26,7 +26,7 @@ class TDTestCase: % (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1)) intData.append(i + 1) floatData.append(i + 0.1) - for i in ['ts','col11','col12','col13']: + for i in ['col11','col12','col13']: for j in ['stb','stb_1']: tdSql.error(f'select max({i} from {dbname}.{j} )') @@ -37,6 +37,20 @@ class TDTestCase: tdSql.checkData(0, 0, np.max(intData)) elif i>=9: tdSql.checkData(0, 0, np.max(floatData)) + + tdSql.query(f"select max(now()) from {dbname}.stb_1") + tdSql.checkRows(1) + + tdSql.query(f"select last(ts) from {dbname}.stb_1") + lastTs = tdSql.getData(0, 0) + tdSql.query(f"select max(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, lastTs) + + tdSql.query(f"select last(ts) from {dbname}.stb") + lastTs = tdSql.getData(0, 0) + tdSql.query(f"select max(ts) from {dbname}.stb") + tdSql.checkData(0, 0, lastTs) + tdSql.query(f"select max(col1) from {dbname}.stb_1 where col2<=5") tdSql.checkData(0,0,5) tdSql.query(f"select max(col1) from {dbname}.stb where col2<=5") @@ -53,7 +67,7 @@ class TDTestCase: % (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1)) intData.append(i + 1) floatData.append(i + 0.1) - for i in ['ts','col11','col12','col13']: + for i in ['col11','col12','col13']: for j in ['ntb']: tdSql.error(f'select max({i} from {dbname}.{j} )') for i in range(1,11): @@ -63,6 +77,15 @@ class TDTestCase: tdSql.checkData(0, 0, np.max(intData)) elif i>=9: tdSql.checkData(0, 0, np.max(floatData)) + + tdSql.query(f"select max(now()) from {dbname}.ntb") + tdSql.checkRows(1) + + tdSql.query(f"select last(ts) from {dbname}.ntb") + lastTs = tdSql.getData(0, 0) + tdSql.query(f"select max(ts) from {dbname}.ntb") + tdSql.checkData(0, 0, lastTs) + tdSql.query(f"select max(col1) from {dbname}.ntb where col2<=5") tdSql.checkData(0,0,5) diff --git a/tests/system-test/2-query/min.py b/tests/system-test/2-query/min.py index c47fa49237e5305f80a411e1748bacbe82e8f835..3d46b7b2224f834360c17cdc311dbf1e0d5a4535 100644 --- a/tests/system-test/2-query/min.py +++ b/tests/system-test/2-query/min.py @@ -37,13 +37,11 @@ class TDTestCase: floatData.append(i + 0.1) # max verifacation - tdSql.error(f"select min(ts) from {dbname}.stb_1") tdSql.error(f"select min(col7) from {dbname}.stb_1") tdSql.error(f"select min(col8) from {dbname}.stb_1") tdSql.error(f"select min(col9) from {dbname}.stb_1") tdSql.error(f"select min(a) from {dbname}.stb_1") tdSql.query(f"select min(1) from {dbname}.stb_1") - tdSql.error(f"select min(now()) from {dbname}.stb_1") tdSql.error(f"select min(count(c1),count(c2)) from {dbname}.stb_1") tdSql.query(f"select min(col1) from {dbname}.stb_1") @@ -69,14 +67,25 @@ class TDTestCase: tdSql.query(f"select min(col1) from {dbname}.stb_1 where col2>=5") tdSql.checkData(0,0,5) + tdSql.query(f"select min(now()) from {dbname}.stb_1") + tdSql.checkRows(1) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + - tdSql.error(f"select min(ts) from {dbname}.stb_1") tdSql.error(f"select min(col7) from {dbname}.stb_1") tdSql.error(f"select min(col8) from {dbname}.stb_1") tdSql.error(f"select min(col9) from {dbname}.stb_1") tdSql.error(f"select min(a) from {dbname}.stb_1") tdSql.query(f"select min(1) from {dbname}.stb_1") - tdSql.error(f"select min(now()) from {dbname}.stb_1") tdSql.error(f"select min(count(c1),count(c2)) from {dbname}.stb_1") tdSql.query(f"select min(col1) from {dbname}.stb") @@ -102,13 +111,24 @@ class TDTestCase: tdSql.query(f"select min(col1) from {dbname}.stb where col2>=5") tdSql.checkData(0,0,5) - tdSql.error(f"select min(ts) from {dbname}.ntb") + tdSql.query(f"select min(now()) from {dbname}.stb_1") + tdSql.checkRows(1) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + tdSql.error(f"select min(col7) from {dbname}.ntb") tdSql.error(f"select min(col8) from {dbname}.ntb") tdSql.error(f"select min(col9) from {dbname}.ntb") tdSql.error(f"select min(a) from {dbname}.ntb") tdSql.query(f"select min(1) from {dbname}.ntb") - tdSql.error(f"select min(now()) from {dbname}.ntb") tdSql.error(f"select min(count(c1),count(c2)) from {dbname}.ntb") tdSql.query(f"select min(col1) from {dbname}.ntb") @@ -134,6 +154,19 @@ class TDTestCase: tdSql.query(f"select min(col1) from {dbname}.ntb where col2>=5") tdSql.checkData(0,0,5) + tdSql.query(f"select min(now()) from {dbname}.stb_1") + tdSql.checkRows(1) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + + tdSql.query(f"select first(ts) from {dbname}.stb_1") + firstTs = tdSql.getData(0, 0) + tdSql.query(f"select min(ts) from {dbname}.stb_1") + tdSql.checkData(0, 0, firstTs) + def stop(self): tdSql.close() diff --git a/tests/system-test/7-tmq/tmqShow.py b/tests/system-test/7-tmq/tmqShow.py index 6f8183bf06cfa501f62c22c82c2915638ea7414b..c0f33d92049efe6eceffd01353e3bedc2c406ee9 100644 --- a/tests/system-test/7-tmq/tmqShow.py +++ b/tests/system-test/7-tmq/tmqShow.py @@ -19,6 +19,11 @@ class TDTestCase: tdLog.debug(f"start to excute {__file__}") tdSql.init(conn.cursor()) #tdSql.init(conn.cursor(), logSql) # output sql.txt file + def insertConsumerInfo(self,consumerId, expectrowcnt,topicList,keyList,ifcheckdata,ifmanualcommit,offset=1,cdbName='cdb'): + sql = "insert into %s.consumeinfo values "%cdbName + sql += "(now+%ds, %d, '%s', '%s', %d, %d, %d)"%(offset,consumerId, topicList, keyList, expectrowcnt, ifcheckdata, ifmanualcommit) + tdLog.info("consume info sql: %s"%sql) + tdSql.query(sql) def tmqCase1(self): tdLog.printNoPrefix("======== test case 1: ") @@ -95,19 +100,23 @@ class TDTestCase: ifcheckdata = 0 ifManualCommit = 0 keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[0] - tmqCom.insertConsumerInfo(consumerIdList[0], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit) + tsOffset=1 + self.insertConsumerInfo(consumerIdList[0], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit,tsOffset) topicList = topicNameList[1] keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[1] - tmqCom.insertConsumerInfo(consumerIdList[1], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit) + tsOffset=2 + self.insertConsumerInfo(consumerIdList[1], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit,tsOffset) topicList = topicNameList[2] keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[2] - tmqCom.insertConsumerInfo(consumerIdList[2], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit) + tsOffset=3 + self.insertConsumerInfo(consumerIdList[2], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit,tsOffset) topicList = topicNameList[3] keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[3] - tmqCom.insertConsumerInfo(consumerIdList[3], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit) + tsOffset=4 + self.insertConsumerInfo(consumerIdList[3], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit,tsOffset) tdLog.info("start consume processor") tmqCom.startTmqSimProcess(paraDict['pollDelay'],paraDict["dbName"],paraDict['showMsg'], paraDict['showRow']) diff --git a/tests/system-test/fulltest.sh b/tests/system-test/fulltest.sh index 335247c16df69fb4168e00bc6c760cfcdadb7755..4305ceff56781fb4e12f725620b17053f6d4b299 100755 --- a/tests/system-test/fulltest.sh +++ b/tests/system-test/fulltest.sh @@ -314,8 +314,8 @@ python3 ./test.py -f 7-tmq/tmqConsFromTsdb-mutilVg-mutilCtb.py python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-1ctb-funcNFilter.py python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-mutilVg-mutilCtb-funcNFilter.py python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-mutilVg-mutilCtb.py -#python3 ./test.py -f 7-tmq/tmqAutoCreateTbl.py -#python3 ./test.py -f 7-tmq/tmqDnodeRestart.py +python3 ./test.py -f 7-tmq/tmqAutoCreateTbl.py +python3 ./test.py -f 7-tmq/tmqDnodeRestart.py python3 ./test.py -f 7-tmq/tmqUpdate-1ctb.py python3 ./test.py -f 7-tmq/tmqUpdateWithConsume.py python3 ./test.py -f 7-tmq/tmqUpdate-multiCtb-snapshot0.py @@ -514,3 +514,4 @@ python3 ./test.py -f 2-query/last_row.py -Q 3 python3 ./test.py -f 2-query/tsbsQuery.py -Q 3 python3 ./test.py -f 2-query/sml.py -Q 3 python3 ./test.py -f 2-query/interp.py -Q 3 +