Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
2d21f1ec
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2d21f1ec
编写于
1月 21, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into hotfix/test
上级
b055dd66
2f34cf62
变更
474
展开全部
显示空白变更内容
内联
并排
Showing
474 changed file
with
3782 addition
and
4019 deletion
+3782
-4019
Jenkinsfile
Jenkinsfile
+35
-29
cmake/install.inc
cmake/install.inc
+1
-1
documentation20/webdocs/assets/tdengine-jdbc-connector.png
documentation20/webdocs/assets/tdengine-jdbc-connector.png
+0
-0
documentation20/webdocs/markdowndocs/Queries-ch.md
documentation20/webdocs/markdowndocs/Queries-ch.md
+1
-1
documentation20/webdocs/markdowndocs/TAOS SQL-ch.md
documentation20/webdocs/markdowndocs/TAOS SQL-ch.md
+17
-20
documentation20/webdocs/markdowndocs/administrator-ch.md
documentation20/webdocs/markdowndocs/administrator-ch.md
+2
-2
documentation20/webdocs/markdowndocs/advanced features-ch.md
documentation20/webdocs/markdowndocs/advanced features-ch.md
+2
-2
documentation20/webdocs/markdowndocs/cluster-ch.md
documentation20/webdocs/markdowndocs/cluster-ch.md
+2
-2
documentation20/webdocs/markdowndocs/cluster.md
documentation20/webdocs/markdowndocs/cluster.md
+0
-146
documentation20/webdocs/markdowndocs/connector-java-ch.md
documentation20/webdocs/markdowndocs/connector-java-ch.md
+154
-68
documentation20/webdocs/markdowndocs/faq-ch.md
documentation20/webdocs/markdowndocs/faq-ch.md
+3
-6
documentation20/webdocs/markdowndocs/insert-ch.md
documentation20/webdocs/markdowndocs/insert-ch.md
+1
-1
packaging/cfg/taos.cfg
packaging/cfg/taos.cfg
+0
-3
src/client/inc/tscLocalMerge.h
src/client/inc/tscLocalMerge.h
+4
-4
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+6
-11
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+8
-8
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+9
-5
src/client/src/tscLocalMerge.c
src/client/src/tscLocalMerge.c
+171
-176
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+79
-65
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+2
-2
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+131
-108
src/client/src/tscSchemaUtil.c
src/client/src/tscSchemaUtil.c
+1
-0
src/client/src/tscServer.c
src/client/src/tscServer.c
+124
-123
src/client/src/tscSql.c
src/client/src/tscSql.c
+5
-2
src/client/src/tscStream.c
src/client/src/tscStream.c
+8
-7
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+10
-9
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+29
-48
src/common/inc/tname.h
src/common/inc/tname.h
+39
-3
src/common/src/tname.c
src/common/src/tname.c
+181
-24
src/connector/jdbc/CMakeLists.txt
src/connector/jdbc/CMakeLists.txt
+1
-1
src/connector/jdbc/deploy-pom.xml
src/connector/jdbc/deploy-pom.xml
+1
-1
src/connector/jdbc/pom.xml
src/connector/jdbc/pom.xml
+1
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/CatalogResultSet.java
...dbc/src/main/java/com/taosdata/jdbc/CatalogResultSet.java
+0
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/GetColumnsResultSet.java
.../src/main/java/com/taosdata/jdbc/GetColumnsResultSet.java
+0
-51
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
...src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
+360
-92
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBParameterMetaData.java
...rc/main/java/com/taosdata/jdbc/TSDBParameterMetaData.java
+0
-75
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
...src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
+26
-26
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBSubscribeCallBack.java
...rc/main/java/com/taosdata/jdbc/TSDBSubscribeCallBack.java
+0
-19
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
...dbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
+2
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/util/HttpClientPoolUtil.java
...in/java/com/taosdata/jdbc/rs/util/HttpClientPoolUtil.java
+3
-4
src/connector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
...onnector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
+0
-33
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
...r/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
+19
-8
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
...test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
+52
-9
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/AuthenticationTest.java
...rc/test/java/com/taosdata/jdbc/rs/AuthenticationTest.java
+66
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulDriverTest.java
...src/test/java/com/taosdata/jdbc/rs/RestfulDriverTest.java
+6
-2
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulJDBCTest.java
...c/src/test/java/com/taosdata/jdbc/rs/RestfulJDBCTest.java
+2
-2
src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
.../java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
+1
-0
src/connector/nodejs/nodetaos/cinterface.js
src/connector/nodejs/nodetaos/cinterface.js
+5
-5
src/connector/nodejs/nodetaos/cursor.js
src/connector/nodejs/nodetaos/cursor.js
+1
-1
src/connector/nodejs/package-lock.json
src/connector/nodejs/package-lock.json
+194
-753
src/connector/nodejs/package.json
src/connector/nodejs/package.json
+16
-13
src/inc/taosmsg.h
src/inc/taosmsg.h
+2
-3
src/inc/ttokendef.h
src/inc/ttokendef.h
+0
-3
src/mnode/inc/mnodeDb.h
src/mnode/inc/mnodeDb.h
+1
-1
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+7
-12
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+54
-49
src/os/src/detail/osTime.c
src/os/src/detail/osTime.c
+2
-2
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+25
-35
src/query/inc/sql.y
src/query/inc/sql.y
+18
-18
src/query/src/qAst.c
src/query/src/qAst.c
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+15
-22
src/query/src/qParserImpl.c
src/query/src/qParserImpl.c
+55
-65
src/query/src/sql.c
src/query/src/sql.c
+848
-1143
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+2
-2
src/util/inc/tarray.h
src/util/inc/tarray.h
+1
-1
src/util/src/tarray.c
src/util/src/tarray.c
+1
-1
tests/examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/JDBCDemo.java
...JDBCDemo/src/main/java/com/taosdata/example/JDBCDemo.java
+0
-1
tests/examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/JdbcRestfulDemo.java
...o/src/main/java/com/taosdata/example/JdbcRestfulDemo.java
+45
-0
tests/examples/JDBC/taosdemo/pom.xml
tests/examples/JDBC/taosdemo/pom.xml
+3
-3
tests/examples/JDBC/taosdemo/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar
...mo/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar
+0
-0
tests/examples/c/CMakeLists.txt
tests/examples/c/CMakeLists.txt
+1
-1
tests/examples/nodejs/nodejsChecker.js
tests/examples/nodejs/nodejsChecker.js
+1
-0
tests/pytest/account/account_create.py
tests/pytest/account/account_create.py
+12
-0
tests/pytest/alter/alter_table.py
tests/pytest/alter/alter_table.py
+2
-0
tests/pytest/concurrent_inquiry.py
tests/pytest/concurrent_inquiry.py
+54
-9
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+5
-1
tests/pytest/query/queryGroupbySort.py
tests/pytest/query/queryGroupbySort.py
+18
-13
tests/script/general/alter/cached_schema_after_alter.sim
tests/script/general/alter/cached_schema_after_alter.sim
+3
-3
tests/script/general/alter/count.sim
tests/script/general/alter/count.sim
+5
-5
tests/script/general/alter/dnode.sim
tests/script/general/alter/dnode.sim
+2
-2
tests/script/general/alter/import.sim
tests/script/general/alter/import.sim
+1
-1
tests/script/general/alter/insert1.sim
tests/script/general/alter/insert1.sim
+3
-3
tests/script/general/alter/insert2.sim
tests/script/general/alter/insert2.sim
+3
-3
tests/script/general/alter/metrics.sim
tests/script/general/alter/metrics.sim
+3
-3
tests/script/general/alter/table.sim
tests/script/general/alter/table.sim
+3
-3
tests/script/general/cache/new_metrics.sim
tests/script/general/cache/new_metrics.sim
+1
-1
tests/script/general/cache/restart_metrics.sim
tests/script/general/cache/restart_metrics.sim
+2
-2
tests/script/general/cache/restart_table.sim
tests/script/general/cache/restart_table.sim
+3
-3
tests/script/general/column/commit.sim
tests/script/general/column/commit.sim
+3
-3
tests/script/general/column/metrics.sim
tests/script/general/column/metrics.sim
+3
-3
tests/script/general/column/table.sim
tests/script/general/column/table.sim
+3
-3
tests/script/general/compress/commitlog.sim
tests/script/general/compress/commitlog.sim
+3
-3
tests/script/general/compress/compress.sim
tests/script/general/compress/compress.sim
+3
-3
tests/script/general/compress/compress2.sim
tests/script/general/compress/compress2.sim
+3
-3
tests/script/general/compress/uncompress.sim
tests/script/general/compress/uncompress.sim
+3
-3
tests/script/general/compute/avg.sim
tests/script/general/compute/avg.sim
+1
-1
tests/script/general/compute/bottom.sim
tests/script/general/compute/bottom.sim
+1
-1
tests/script/general/compute/count.sim
tests/script/general/compute/count.sim
+1
-1
tests/script/general/compute/diff.sim
tests/script/general/compute/diff.sim
+1
-1
tests/script/general/compute/diff2.sim
tests/script/general/compute/diff2.sim
+1
-1
tests/script/general/compute/first.sim
tests/script/general/compute/first.sim
+1
-1
tests/script/general/compute/interval.sim
tests/script/general/compute/interval.sim
+1
-1
tests/script/general/compute/last.sim
tests/script/general/compute/last.sim
+1
-1
tests/script/general/compute/last_row.sim
tests/script/general/compute/last_row.sim
+1
-1
tests/script/general/compute/leastsquare.sim
tests/script/general/compute/leastsquare.sim
+1
-1
tests/script/general/compute/max.sim
tests/script/general/compute/max.sim
+1
-1
tests/script/general/compute/min.sim
tests/script/general/compute/min.sim
+1
-1
tests/script/general/compute/null.sim
tests/script/general/compute/null.sim
+1
-1
tests/script/general/compute/percentile.sim
tests/script/general/compute/percentile.sim
+1
-1
tests/script/general/compute/stddev.sim
tests/script/general/compute/stddev.sim
+1
-1
tests/script/general/compute/sum.sim
tests/script/general/compute/sum.sim
+1
-1
tests/script/general/compute/top.sim
tests/script/general/compute/top.sim
+1
-1
tests/script/general/connection/connection.sim
tests/script/general/connection/connection.sim
+1
-1
tests/script/general/connection/mqtt.sim
tests/script/general/connection/mqtt.sim
+1
-1
tests/script/general/db/alter_option.sim
tests/script/general/db/alter_option.sim
+1
-1
tests/script/general/db/alter_tables_d2.sim
tests/script/general/db/alter_tables_d2.sim
+2
-2
tests/script/general/db/alter_tables_v4.sim
tests/script/general/db/alter_tables_v4.sim
+2
-2
tests/script/general/db/alter_vgroups.sim
tests/script/general/db/alter_vgroups.sim
+5
-5
tests/script/general/db/backup/keep.sim
tests/script/general/db/backup/keep.sim
+7
-7
tests/script/general/db/basic.sim
tests/script/general/db/basic.sim
+1
-1
tests/script/general/db/basic1.sim
tests/script/general/db/basic1.sim
+1
-1
tests/script/general/db/basic2.sim
tests/script/general/db/basic2.sim
+1
-1
tests/script/general/db/basic3.sim
tests/script/general/db/basic3.sim
+1
-1
tests/script/general/db/basic4.sim
tests/script/general/db/basic4.sim
+1
-1
tests/script/general/db/basic5.sim
tests/script/general/db/basic5.sim
+1
-1
tests/script/general/db/delete.sim
tests/script/general/db/delete.sim
+2
-2
tests/script/general/db/delete_reuse1.sim
tests/script/general/db/delete_reuse1.sim
+1
-1
tests/script/general/db/delete_reuse2.sim
tests/script/general/db/delete_reuse2.sim
+6
-6
tests/script/general/db/delete_reusevnode2.sim
tests/script/general/db/delete_reusevnode2.sim
+1
-1
tests/script/general/db/delete_writing1.sim
tests/script/general/db/delete_writing1.sim
+1
-1
tests/script/general/db/delete_writing2.sim
tests/script/general/db/delete_writing2.sim
+2
-2
tests/script/general/db/dropdnodes.sim
tests/script/general/db/dropdnodes.sim
+2
-2
tests/script/general/db/len.sim
tests/script/general/db/len.sim
+1
-1
tests/script/general/db/nosuchfile.sim
tests/script/general/db/nosuchfile.sim
+2
-2
tests/script/general/db/repeat.sim
tests/script/general/db/repeat.sim
+5
-5
tests/script/general/db/show_create_db.sim
tests/script/general/db/show_create_db.sim
+1
-1
tests/script/general/db/show_create_table.sim
tests/script/general/db/show_create_table.sim
+1
-1
tests/script/general/db/tables.sim
tests/script/general/db/tables.sim
+1
-1
tests/script/general/db/vnodes.sim
tests/script/general/db/vnodes.sim
+1
-1
tests/script/general/field/2.sim
tests/script/general/field/2.sim
+1
-1
tests/script/general/field/3.sim
tests/script/general/field/3.sim
+1
-1
tests/script/general/field/4.sim
tests/script/general/field/4.sim
+1
-1
tests/script/general/field/5.sim
tests/script/general/field/5.sim
+1
-1
tests/script/general/field/6.sim
tests/script/general/field/6.sim
+1
-1
tests/script/general/field/bigint.sim
tests/script/general/field/bigint.sim
+1
-1
tests/script/general/field/binary.sim
tests/script/general/field/binary.sim
+1
-1
tests/script/general/field/bool.sim
tests/script/general/field/bool.sim
+1
-1
tests/script/general/field/double.sim
tests/script/general/field/double.sim
+1
-1
tests/script/general/field/float.sim
tests/script/general/field/float.sim
+1
-1
tests/script/general/field/int.sim
tests/script/general/field/int.sim
+1
-1
tests/script/general/field/single.sim
tests/script/general/field/single.sim
+1
-1
tests/script/general/field/smallint.sim
tests/script/general/field/smallint.sim
+1
-1
tests/script/general/field/tinyint.sim
tests/script/general/field/tinyint.sim
+1
-1
tests/script/general/http/autocreate.sim
tests/script/general/http/autocreate.sim
+2
-2
tests/script/general/http/chunked.sim
tests/script/general/http/chunked.sim
+2
-2
tests/script/general/http/grafana.sim
tests/script/general/http/grafana.sim
+3
-3
tests/script/general/http/grafana_bug.sim
tests/script/general/http/grafana_bug.sim
+2
-2
tests/script/general/http/gzip.sim
tests/script/general/http/gzip.sim
+2
-2
tests/script/general/http/prepare.sim
tests/script/general/http/prepare.sim
+2
-2
tests/script/general/http/restful.sim
tests/script/general/http/restful.sim
+2
-2
tests/script/general/http/restful_full.sim
tests/script/general/http/restful_full.sim
+3
-3
tests/script/general/http/restful_insert.sim
tests/script/general/http/restful_insert.sim
+2
-2
tests/script/general/http/restful_limit.sim
tests/script/general/http/restful_limit.sim
+2
-2
tests/script/general/http/telegraf.sim
tests/script/general/http/telegraf.sim
+3
-3
tests/script/general/import/basic.sim
tests/script/general/import/basic.sim
+1
-1
tests/script/general/import/commit.sim
tests/script/general/import/commit.sim
+3
-3
tests/script/general/import/large.sim
tests/script/general/import/large.sim
+1
-1
tests/script/general/import/replica1.sim
tests/script/general/import/replica1.sim
+5
-5
tests/script/general/insert/basic.sim
tests/script/general/insert/basic.sim
+1
-1
tests/script/general/insert/insert_drop.sim
tests/script/general/insert/insert_drop.sim
+3
-3
tests/script/general/insert/query_block1_file.sim
tests/script/general/insert/query_block1_file.sim
+1
-1
tests/script/general/insert/query_block1_memory.sim
tests/script/general/insert/query_block1_memory.sim
+1
-1
tests/script/general/insert/query_block2_file.sim
tests/script/general/insert/query_block2_file.sim
+1
-1
tests/script/general/insert/query_block2_memory.sim
tests/script/general/insert/query_block2_memory.sim
+1
-1
tests/script/general/insert/query_file_memory.sim
tests/script/general/insert/query_file_memory.sim
+1
-1
tests/script/general/insert/query_multi_file.sim
tests/script/general/insert/query_multi_file.sim
+1
-1
tests/script/general/insert/tcp.sim
tests/script/general/insert/tcp.sim
+1
-1
tests/script/general/parser/alter.sim
tests/script/general/parser/alter.sim
+2
-2
tests/script/general/parser/auto_create_tb.sim
tests/script/general/parser/auto_create_tb.sim
+1
-1
tests/script/general/parser/col_arithmetic_operation.sim
tests/script/general/parser/col_arithmetic_operation.sim
+1
-1
tests/script/general/parser/commit.sim
tests/script/general/parser/commit.sim
+1
-1
tests/script/general/parser/first_last.sim
tests/script/general/parser/first_last.sim
+1
-1
tests/script/general/parser/function.sim
tests/script/general/parser/function.sim
+26
-1
tests/script/general/parser/import_commit1.sim
tests/script/general/parser/import_commit1.sim
+1
-1
tests/script/general/parser/import_commit2.sim
tests/script/general/parser/import_commit2.sim
+1
-1
tests/script/general/parser/import_commit3.sim
tests/script/general/parser/import_commit3.sim
+2
-2
tests/script/general/parser/interp.sim
tests/script/general/parser/interp.sim
+1
-1
tests/script/general/parser/lastrow.sim
tests/script/general/parser/lastrow.sim
+1
-1
tests/script/general/parser/limit.sim
tests/script/general/parser/limit.sim
+1
-1
tests/script/general/parser/limit1.sim
tests/script/general/parser/limit1.sim
+1
-1
tests/script/general/parser/limit1_tblocks100.sim
tests/script/general/parser/limit1_tblocks100.sim
+1
-1
tests/script/general/parser/limit2.sim
tests/script/general/parser/limit2.sim
+1
-1
tests/script/general/parser/mixed_blocks.sim
tests/script/general/parser/mixed_blocks.sim
+1
-1
tests/script/general/parser/projection_limit_offset.sim
tests/script/general/parser/projection_limit_offset.sim
+1
-1
tests/script/general/parser/selectResNum.sim
tests/script/general/parser/selectResNum.sim
+1
-1
tests/script/general/parser/select_from_cache_disk.sim
tests/script/general/parser/select_from_cache_disk.sim
+1
-1
tests/script/general/parser/single_row_in_tb.sim
tests/script/general/parser/single_row_in_tb.sim
+1
-1
tests/script/general/parser/slimit.sim
tests/script/general/parser/slimit.sim
+1
-1
tests/script/general/parser/slimit1.sim
tests/script/general/parser/slimit1.sim
+1
-1
tests/script/general/parser/slimit_alter_tags.sim
tests/script/general/parser/slimit_alter_tags.sim
+1
-1
tests/script/general/parser/stableOp.sim
tests/script/general/parser/stableOp.sim
+97
-0
tests/script/general/parser/tbnameIn.sim
tests/script/general/parser/tbnameIn.sim
+1
-1
tests/script/general/parser/topbot.sim
tests/script/general/parser/topbot.sim
+1
-1
tests/script/general/stable/disk.sim
tests/script/general/stable/disk.sim
+2
-2
tests/script/general/stable/metrics.sim
tests/script/general/stable/metrics.sim
+1
-1
tests/script/general/stable/refcount.sim
tests/script/general/stable/refcount.sim
+1
-1
tests/script/general/stable/show.sim
tests/script/general/stable/show.sim
+1
-1
tests/script/general/stable/values.sim
tests/script/general/stable/values.sim
+1
-1
tests/script/general/stable/vnode3.sim
tests/script/general/stable/vnode3.sim
+1
-1
tests/script/general/stream/agg_stream.sim
tests/script/general/stream/agg_stream.sim
+1
-1
tests/script/general/stream/column_stream.sim
tests/script/general/stream/column_stream.sim
+2
-2
tests/script/general/stream/metrics_del.sim
tests/script/general/stream/metrics_del.sim
+1
-1
tests/script/general/stream/metrics_replica1_vnoden.sim
tests/script/general/stream/metrics_replica1_vnoden.sim
+1
-1
tests/script/general/stream/restart_stream.sim
tests/script/general/stream/restart_stream.sim
+1
-1
tests/script/general/stream/stream_3.sim
tests/script/general/stream/stream_3.sim
+1
-1
tests/script/general/stream/stream_restart.sim
tests/script/general/stream/stream_restart.sim
+1
-1
tests/script/general/stream/table_del.sim
tests/script/general/stream/table_del.sim
+1
-1
tests/script/general/stream/table_replica1_vnoden.sim
tests/script/general/stream/table_replica1_vnoden.sim
+1
-1
tests/script/general/table/autocreate.sim
tests/script/general/table/autocreate.sim
+1
-1
tests/script/general/table/basic1.sim
tests/script/general/table/basic1.sim
+1
-1
tests/script/general/table/basic2.sim
tests/script/general/table/basic2.sim
+1
-1
tests/script/general/table/basic3.sim
tests/script/general/table/basic3.sim
+1
-1
tests/script/general/table/bigint.sim
tests/script/general/table/bigint.sim
+1
-1
tests/script/general/table/binary.sim
tests/script/general/table/binary.sim
+1
-1
tests/script/general/table/bool.sim
tests/script/general/table/bool.sim
+1
-1
tests/script/general/table/column2.sim
tests/script/general/table/column2.sim
+1
-1
tests/script/general/table/column_name.sim
tests/script/general/table/column_name.sim
+1
-1
tests/script/general/table/column_num.sim
tests/script/general/table/column_num.sim
+1
-1
tests/script/general/table/column_value.sim
tests/script/general/table/column_value.sim
+1
-1
tests/script/general/table/createmulti.sim
tests/script/general/table/createmulti.sim
+46
-0
tests/script/general/table/date.sim
tests/script/general/table/date.sim
+1
-1
tests/script/general/table/db.table.sim
tests/script/general/table/db.table.sim
+1
-1
tests/script/general/table/delete_reuse1.sim
tests/script/general/table/delete_reuse1.sim
+1
-1
tests/script/general/table/delete_reuse2.sim
tests/script/general/table/delete_reuse2.sim
+1
-1
tests/script/general/table/delete_writing.sim
tests/script/general/table/delete_writing.sim
+1
-1
tests/script/general/table/describe.sim
tests/script/general/table/describe.sim
+1
-1
tests/script/general/table/double.sim
tests/script/general/table/double.sim
+1
-1
tests/script/general/table/fill.sim
tests/script/general/table/fill.sim
+3
-3
tests/script/general/table/float.sim
tests/script/general/table/float.sim
+1
-1
tests/script/general/table/int.sim
tests/script/general/table/int.sim
+1
-1
tests/script/general/table/limit.sim
tests/script/general/table/limit.sim
+1
-1
tests/script/general/table/smallint.sim
tests/script/general/table/smallint.sim
+1
-1
tests/script/general/table/table.sim
tests/script/general/table/table.sim
+1
-1
tests/script/general/table/table_len.sim
tests/script/general/table/table_len.sim
+1
-1
tests/script/general/table/tinyint.sim
tests/script/general/table/tinyint.sim
+1
-1
tests/script/general/table/vgroup.sim
tests/script/general/table/vgroup.sim
+1
-1
tests/script/general/tag/3.sim
tests/script/general/tag/3.sim
+1
-1
tests/script/general/tag/4.sim
tests/script/general/tag/4.sim
+1
-1
tests/script/general/tag/5.sim
tests/script/general/tag/5.sim
+1
-1
tests/script/general/tag/6.sim
tests/script/general/tag/6.sim
+1
-1
tests/script/general/tag/add.sim
tests/script/general/tag/add.sim
+1
-1
tests/script/general/tag/bigint.sim
tests/script/general/tag/bigint.sim
+1
-1
tests/script/general/tag/binary.sim
tests/script/general/tag/binary.sim
+1
-1
tests/script/general/tag/binary_binary.sim
tests/script/general/tag/binary_binary.sim
+1
-1
tests/script/general/tag/bool.sim
tests/script/general/tag/bool.sim
+1
-1
tests/script/general/tag/bool_binary.sim
tests/script/general/tag/bool_binary.sim
+1
-1
tests/script/general/tag/bool_int.sim
tests/script/general/tag/bool_int.sim
+1
-1
tests/script/general/tag/change.sim
tests/script/general/tag/change.sim
+2
-2
tests/script/general/tag/column.sim
tests/script/general/tag/column.sim
+1
-1
tests/script/general/tag/commit.sim
tests/script/general/tag/commit.sim
+3
-3
tests/script/general/tag/create.sim
tests/script/general/tag/create.sim
+1
-1
tests/script/general/tag/delete.sim
tests/script/general/tag/delete.sim
+2
-2
tests/script/general/tag/double.sim
tests/script/general/tag/double.sim
+1
-1
tests/script/general/tag/filter.sim
tests/script/general/tag/filter.sim
+1
-1
tests/script/general/tag/float.sim
tests/script/general/tag/float.sim
+1
-1
tests/script/general/tag/int.sim
tests/script/general/tag/int.sim
+1
-1
tests/script/general/tag/int_binary.sim
tests/script/general/tag/int_binary.sim
+1
-1
tests/script/general/tag/int_float.sim
tests/script/general/tag/int_float.sim
+1
-1
tests/script/general/tag/set.sim
tests/script/general/tag/set.sim
+1
-1
tests/script/general/tag/smallint.sim
tests/script/general/tag/smallint.sim
+1
-1
tests/script/general/tag/tinyint.sim
tests/script/general/tag/tinyint.sim
+1
-1
tests/script/general/user/authority.sim
tests/script/general/user/authority.sim
+1
-1
tests/script/general/user/monitor.sim
tests/script/general/user/monitor.sim
+2
-2
tests/script/general/user/pass_alter.sim
tests/script/general/user/pass_alter.sim
+1
-1
tests/script/general/user/pass_len.sim
tests/script/general/user/pass_len.sim
+1
-1
tests/script/general/user/user_len.sim
tests/script/general/user/user_len.sim
+1
-1
tests/script/general/vector/metrics_field.sim
tests/script/general/vector/metrics_field.sim
+1
-1
tests/script/general/vector/metrics_mix.sim
tests/script/general/vector/metrics_mix.sim
+1
-1
tests/script/general/vector/metrics_query.sim
tests/script/general/vector/metrics_query.sim
+1
-1
tests/script/general/vector/metrics_tag.sim
tests/script/general/vector/metrics_tag.sim
+1
-1
tests/script/general/vector/metrics_time.sim
tests/script/general/vector/metrics_time.sim
+1
-1
tests/script/general/vector/multi.sim
tests/script/general/vector/multi.sim
+1
-1
tests/script/general/vector/single.sim
tests/script/general/vector/single.sim
+1
-1
tests/script/general/vector/table_field.sim
tests/script/general/vector/table_field.sim
+1
-1
tests/script/general/vector/table_mix.sim
tests/script/general/vector/table_mix.sim
+1
-1
tests/script/general/vector/table_query.sim
tests/script/general/vector/table_query.sim
+1
-1
tests/script/general/vector/table_time.sim
tests/script/general/vector/table_time.sim
+1
-1
tests/script/general/wal/kill.sim
tests/script/general/wal/kill.sim
+11
-11
tests/script/general/wal/maxtables.sim
tests/script/general/wal/maxtables.sim
+2
-2
tests/script/tmp/mnodes.sim
tests/script/tmp/mnodes.sim
+1
-1
tests/script/unique/account/account_create.sim
tests/script/unique/account/account_create.sim
+1
-1
tests/script/unique/account/account_delete.sim
tests/script/unique/account/account_delete.sim
+1
-1
tests/script/unique/account/account_len.sim
tests/script/unique/account/account_len.sim
+1
-1
tests/script/unique/account/authority.sim
tests/script/unique/account/authority.sim
+1
-1
tests/script/unique/account/basic.sim
tests/script/unique/account/basic.sim
+1
-1
tests/script/unique/account/paras.sim
tests/script/unique/account/paras.sim
+1
-1
tests/script/unique/account/pass_alter.sim
tests/script/unique/account/pass_alter.sim
+1
-1
tests/script/unique/account/pass_len.sim
tests/script/unique/account/pass_len.sim
+1
-1
tests/script/unique/account/usage.sim
tests/script/unique/account/usage.sim
+1
-1
tests/script/unique/account/user_create.sim
tests/script/unique/account/user_create.sim
+1
-1
tests/script/unique/account/user_len.sim
tests/script/unique/account/user_len.sim
+1
-1
tests/script/unique/arbitrator/check_cluster_cfg_para.sim
tests/script/unique/arbitrator/check_cluster_cfg_para.sim
+1
-1
tests/script/unique/arbitrator/dn2_mn1_cache_file_sync.sim
tests/script/unique/arbitrator/dn2_mn1_cache_file_sync.sim
+3
-3
tests/script/unique/arbitrator/dn2_mn1_cache_file_sync_second.sim
...ript/unique/arbitrator/dn2_mn1_cache_file_sync_second.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_full_createTableFail.sim
...script/unique/arbitrator/dn3_mn1_full_createTableFail.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_full_dropDnodeFail.sim
...s/script/unique/arbitrator/dn3_mn1_full_dropDnodeFail.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_multiCreateDropTable.sim
...script/unique/arbitrator/dn3_mn1_multiCreateDropTable.sim
+5
-5
tests/script/unique/arbitrator/dn3_mn1_nw_disable_timeout_autoDropDnode.sim
...e/arbitrator/dn3_mn1_nw_disable_timeout_autoDropDnode.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_r2_vnode_delDir.sim
tests/script/unique/arbitrator/dn3_mn1_r2_vnode_delDir.sim
+3
-3
tests/script/unique/arbitrator/dn3_mn1_r3_vnode_delDir.sim
tests/script/unique/arbitrator/dn3_mn1_r3_vnode_delDir.sim
+4
-4
tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
...t/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
+9
-9
tests/script/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
...ipt/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
+3
-3
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
...t/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
...pt/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_createErrData_online.sim
.../unique/arbitrator/dn3_mn1_vnode_createErrData_online.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_noCorruptFile_offline.sim
...unique/arbitrator/dn3_mn1_vnode_noCorruptFile_offline.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
+3
-3
tests/script/unique/arbitrator/dn3_mn2_killDnode.sim
tests/script/unique/arbitrator/dn3_mn2_killDnode.sim
+4
-4
tests/script/unique/arbitrator/insert_duplicationTs.sim
tests/script/unique/arbitrator/insert_duplicationTs.sim
+4
-4
tests/script/unique/arbitrator/offline_replica2_alterTable_online.sim
.../unique/arbitrator/offline_replica2_alterTable_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica2_alterTag_online.sim
...pt/unique/arbitrator/offline_replica2_alterTag_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica2_createTable_online.sim
...unique/arbitrator/offline_replica2_createTable_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica2_dropDb_online.sim
...ript/unique/arbitrator/offline_replica2_dropDb_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica2_dropTable_online.sim
...t/unique/arbitrator/offline_replica2_dropTable_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica3_alterTable_online.sim
.../unique/arbitrator/offline_replica3_alterTable_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica3_alterTag_online.sim
...pt/unique/arbitrator/offline_replica3_alterTag_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica3_createTable_online.sim
...unique/arbitrator/offline_replica3_createTable_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica3_dropDb_online.sim
...ript/unique/arbitrator/offline_replica3_dropDb_online.sim
+2
-2
tests/script/unique/arbitrator/offline_replica3_dropTable_online.sim
...t/unique/arbitrator/offline_replica3_dropTable_online.sim
+2
-2
tests/script/unique/arbitrator/replica_changeWithArbitrator.sim
...script/unique/arbitrator/replica_changeWithArbitrator.sim
+6
-6
tests/script/unique/arbitrator/sync_replica2_alterTable_add.sim
...script/unique/arbitrator/sync_replica2_alterTable_add.sim
+2
-2
tests/script/unique/arbitrator/sync_replica2_alterTable_drop.sim
...cript/unique/arbitrator/sync_replica2_alterTable_drop.sim
+2
-2
tests/script/unique/arbitrator/sync_replica2_dropDb.sim
tests/script/unique/arbitrator/sync_replica2_dropDb.sim
+2
-2
tests/script/unique/arbitrator/sync_replica2_dropTable.sim
tests/script/unique/arbitrator/sync_replica2_dropTable.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_alterTable_add.sim
...script/unique/arbitrator/sync_replica3_alterTable_add.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_alterTable_drop.sim
...cript/unique/arbitrator/sync_replica3_alterTable_drop.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_createTable.sim
tests/script/unique/arbitrator/sync_replica3_createTable.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_dnodeChang_DropAddAlterTableDropDb.sim
...ator/sync_replica3_dnodeChang_DropAddAlterTableDropDb.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_dropDb.sim
tests/script/unique/arbitrator/sync_replica3_dropDb.sim
+2
-2
tests/script/unique/arbitrator/sync_replica3_dropTable.sim
tests/script/unique/arbitrator/sync_replica3_dropTable.sim
+2
-2
tests/script/unique/big/maxvnodes.sim
tests/script/unique/big/maxvnodes.sim
+2
-2
tests/script/unique/big/restartSpeed.sim
tests/script/unique/big/restartSpeed.sim
+1
-1
tests/script/unique/cluster/alter.sim
tests/script/unique/cluster/alter.sim
+2
-2
tests/script/unique/cluster/balance2.sim
tests/script/unique/cluster/balance2.sim
+2
-2
tests/script/unique/cluster/cache.sim
tests/script/unique/cluster/cache.sim
+2
-2
tests/script/unique/cluster/cluster_main.sim
tests/script/unique/cluster/cluster_main.sim
+7
-7
tests/script/unique/cluster/cluster_main0.sim
tests/script/unique/cluster/cluster_main0.sim
+9
-9
tests/script/unique/cluster/cluster_main1.sim
tests/script/unique/cluster/cluster_main1.sim
+7
-7
tests/script/unique/cluster/cluster_main2.sim
tests/script/unique/cluster/cluster_main2.sim
+8
-8
tests/script/unique/cluster/flowctrl.sim
tests/script/unique/cluster/flowctrl.sim
+3
-3
tests/script/unique/clusterSimCase/cluster_main.sim
tests/script/unique/clusterSimCase/cluster_main.sim
+6
-6
tests/script/unique/db/commit.sim
tests/script/unique/db/commit.sim
+6
-6
tests/script/unique/db/delete.sim
tests/script/unique/db/delete.sim
+2
-2
tests/script/unique/db/replica_reduce32.sim
tests/script/unique/db/replica_reduce32.sim
+1
-1
tests/script/unique/dnode/alternativeRole.sim
tests/script/unique/dnode/alternativeRole.sim
+2
-2
tests/script/unique/dnode/balance2.sim
tests/script/unique/dnode/balance2.sim
+1
-1
tests/script/unique/dnode/balancex.sim
tests/script/unique/dnode/balancex.sim
+3
-3
tests/script/unique/dnode/data1.sim
tests/script/unique/dnode/data1.sim
+3
-3
tests/script/unique/dnode/datatrans_1node.sim
tests/script/unique/dnode/datatrans_1node.sim
+2
-2
tests/script/unique/dnode/datatrans_3node.sim
tests/script/unique/dnode/datatrans_3node.sim
+3
-3
tests/script/unique/dnode/datatrans_3node_2.sim
tests/script/unique/dnode/datatrans_3node_2.sim
+3
-3
tests/script/unique/dnode/monitor.sim
tests/script/unique/dnode/monitor.sim
+3
-3
tests/script/unique/dnode/monitor_bug.sim
tests/script/unique/dnode/monitor_bug.sim
+2
-2
tests/script/unique/dnode/offline1.sim
tests/script/unique/dnode/offline1.sim
+1
-1
tests/script/unique/dnode/offline2.sim
tests/script/unique/dnode/offline2.sim
+3
-3
tests/script/unique/dnode/simple.sim
tests/script/unique/dnode/simple.sim
+2
-2
tests/script/unique/http/admin.sim
tests/script/unique/http/admin.sim
+2
-2
tests/script/unique/http/opentsdb.sim
tests/script/unique/http/opentsdb.sim
+2
-2
tests/script/unique/import/replica3.sim
tests/script/unique/import/replica3.sim
+2
-2
tests/script/unique/mnode/mgmt20.sim
tests/script/unique/mnode/mgmt20.sim
+1
-1
tests/script/unique/mnode/mgmt22.sim
tests/script/unique/mnode/mgmt22.sim
+1
-1
tests/script/unique/mnode/mgmt26.sim
tests/script/unique/mnode/mgmt26.sim
+1
-1
tests/script/unique/mnode/mgmt30.sim
tests/script/unique/mnode/mgmt30.sim
+1
-1
tests/script/unique/mnode/mgmtr2.sim
tests/script/unique/mnode/mgmtr2.sim
+1
-1
tests/script/unique/stable/dnode2_stop.sim
tests/script/unique/stable/dnode2_stop.sim
+2
-2
tests/script/unique/stream/metrics_balance.sim
tests/script/unique/stream/metrics_balance.sim
+2
-2
tests/script/unique/stream/metrics_vnode_stop.sim
tests/script/unique/stream/metrics_vnode_stop.sim
+2
-2
tests/script/unique/stream/table_balance.sim
tests/script/unique/stream/table_balance.sim
+2
-2
tests/script/unique/stream/table_move.sim
tests/script/unique/stream/table_move.sim
+3
-3
tests/script/unique/stream/table_vnode_stop.sim
tests/script/unique/stream/table_vnode_stop.sim
+2
-2
tests/script/unique/vnode/many.sim
tests/script/unique/vnode/many.sim
+5
-5
tests/script/unique/vnode/replica2_a_large.sim
tests/script/unique/vnode/replica2_a_large.sim
+3
-3
tests/script/unique/vnode/replica2_basic2.sim
tests/script/unique/vnode/replica2_basic2.sim
+6
-6
tests/script/unique/vnode/replica2_repeat.sim
tests/script/unique/vnode/replica2_repeat.sim
+5
-5
tests/script/unique/vnode/replica3_repeat.sim
tests/script/unique/vnode/replica3_repeat.sim
+8
-8
tests/script/unique/vnode/replica3_vgroup.sim
tests/script/unique/vnode/replica3_vgroup.sim
+2
-2
tests/script/windows/alter/metrics.sim
tests/script/windows/alter/metrics.sim
+3
-3
tests/script/windows/alter/table.sim
tests/script/windows/alter/table.sim
+3
-3
tests/script/windows/compute/avg.sim
tests/script/windows/compute/avg.sim
+1
-1
tests/script/windows/compute/bottom.sim
tests/script/windows/compute/bottom.sim
+1
-1
tests/script/windows/compute/count.sim
tests/script/windows/compute/count.sim
+1
-1
tests/script/windows/compute/diff.sim
tests/script/windows/compute/diff.sim
+1
-1
tests/script/windows/compute/first.sim
tests/script/windows/compute/first.sim
+1
-1
tests/script/windows/compute/interval.sim
tests/script/windows/compute/interval.sim
+1
-1
tests/script/windows/compute/last.sim
tests/script/windows/compute/last.sim
+1
-1
tests/script/windows/compute/leastsquare.sim
tests/script/windows/compute/leastsquare.sim
+1
-1
tests/script/windows/compute/max.sim
tests/script/windows/compute/max.sim
+1
-1
tests/script/windows/compute/min.sim
tests/script/windows/compute/min.sim
+1
-1
tests/script/windows/compute/percentile.sim
tests/script/windows/compute/percentile.sim
+1
-1
tests/script/windows/compute/stddev.sim
tests/script/windows/compute/stddev.sim
+1
-1
tests/script/windows/compute/sum.sim
tests/script/windows/compute/sum.sim
+1
-1
tests/script/windows/compute/top.sim
tests/script/windows/compute/top.sim
+1
-1
tests/script/windows/db/basic.sim
tests/script/windows/db/basic.sim
+1
-1
tests/script/windows/db/len.sim
tests/script/windows/db/len.sim
+1
-1
tests/script/windows/field/2.sim
tests/script/windows/field/2.sim
+1
-1
tests/script/windows/field/3.sim
tests/script/windows/field/3.sim
+1
-1
tests/script/windows/field/4.sim
tests/script/windows/field/4.sim
+1
-1
tests/script/windows/field/5.sim
tests/script/windows/field/5.sim
+1
-1
tests/script/windows/field/6.sim
tests/script/windows/field/6.sim
+1
-1
tests/script/windows/field/bigint.sim
tests/script/windows/field/bigint.sim
+1
-1
tests/script/windows/field/binary.sim
tests/script/windows/field/binary.sim
+1
-1
tests/script/windows/field/bool.sim
tests/script/windows/field/bool.sim
+1
-1
tests/script/windows/field/double.sim
tests/script/windows/field/double.sim
+1
-1
tests/script/windows/field/float.sim
tests/script/windows/field/float.sim
+1
-1
tests/script/windows/field/int.sim
tests/script/windows/field/int.sim
+1
-1
tests/script/windows/field/single.sim
tests/script/windows/field/single.sim
+1
-1
tests/script/windows/field/smallint.sim
tests/script/windows/field/smallint.sim
+1
-1
tests/script/windows/field/tinyint.sim
tests/script/windows/field/tinyint.sim
+1
-1
tests/script/windows/import/basic.sim
tests/script/windows/import/basic.sim
+1
-1
tests/script/windows/insert/basic.sim
tests/script/windows/insert/basic.sim
+1
-1
tests/script/windows/insert/query_block1_file.sim
tests/script/windows/insert/query_block1_file.sim
+1
-1
tests/script/windows/insert/query_block1_memory.sim
tests/script/windows/insert/query_block1_memory.sim
+1
-1
tests/script/windows/insert/query_block2_file.sim
tests/script/windows/insert/query_block2_file.sim
+1
-1
tests/script/windows/insert/query_block2_memory.sim
tests/script/windows/insert/query_block2_memory.sim
+1
-1
tests/script/windows/insert/query_file_memory.sim
tests/script/windows/insert/query_file_memory.sim
+1
-1
tests/script/windows/insert/query_multi_file.sim
tests/script/windows/insert/query_multi_file.sim
+1
-1
tests/script/windows/table/binary.sim
tests/script/windows/table/binary.sim
+1
-1
tests/script/windows/table/bool.sim
tests/script/windows/table/bool.sim
+1
-1
tests/script/windows/table/column_name.sim
tests/script/windows/table/column_name.sim
+1
-1
tests/script/windows/table/column_num.sim
tests/script/windows/table/column_num.sim
+1
-1
tests/script/windows/table/column_value.sim
tests/script/windows/table/column_value.sim
+1
-1
tests/script/windows/table/db.table.sim
tests/script/windows/table/db.table.sim
+1
-1
tests/script/windows/table/double.sim
tests/script/windows/table/double.sim
+1
-1
tests/script/windows/table/float.sim
tests/script/windows/table/float.sim
+1
-1
tests/script/windows/table/table.sim
tests/script/windows/table/table.sim
+1
-1
tests/script/windows/table/table_len.sim
tests/script/windows/table/table_len.sim
+1
-1
tests/script/windows/tag/3.sim
tests/script/windows/tag/3.sim
+1
-1
tests/script/windows/tag/4.sim
tests/script/windows/tag/4.sim
+1
-1
tests/script/windows/tag/5.sim
tests/script/windows/tag/5.sim
+1
-1
tests/script/windows/tag/6.sim
tests/script/windows/tag/6.sim
+1
-1
tests/script/windows/tag/add.sim
tests/script/windows/tag/add.sim
+1
-1
tests/script/windows/tag/bigint.sim
tests/script/windows/tag/bigint.sim
+1
-1
tests/script/windows/tag/binary.sim
tests/script/windows/tag/binary.sim
+1
-1
tests/script/windows/tag/binary_binary.sim
tests/script/windows/tag/binary_binary.sim
+1
-1
tests/script/windows/tag/bool.sim
tests/script/windows/tag/bool.sim
+1
-1
tests/script/windows/tag/bool_binary.sim
tests/script/windows/tag/bool_binary.sim
+1
-1
tests/script/windows/tag/bool_int.sim
tests/script/windows/tag/bool_int.sim
+1
-1
tests/script/windows/tag/change.sim
tests/script/windows/tag/change.sim
+2
-2
tests/script/windows/tag/column.sim
tests/script/windows/tag/column.sim
+1
-1
tests/script/windows/tag/create.sim
tests/script/windows/tag/create.sim
+1
-1
tests/script/windows/tag/delete.sim
tests/script/windows/tag/delete.sim
+2
-2
tests/script/windows/tag/double.sim
tests/script/windows/tag/double.sim
+1
-1
tests/script/windows/tag/filter.sim
tests/script/windows/tag/filter.sim
+1
-1
tests/script/windows/tag/float.sim
tests/script/windows/tag/float.sim
+1
-1
tests/script/windows/tag/int.sim
tests/script/windows/tag/int.sim
+1
-1
tests/script/windows/tag/int_binary.sim
tests/script/windows/tag/int_binary.sim
+1
-1
tests/script/windows/tag/int_float.sim
tests/script/windows/tag/int_float.sim
+1
-1
tests/script/windows/tag/set.sim
tests/script/windows/tag/set.sim
+1
-1
tests/script/windows/tag/smallint.sim
tests/script/windows/tag/smallint.sim
+1
-1
tests/script/windows/tag/tinyint.sim
tests/script/windows/tag/tinyint.sim
+1
-1
tests/script/windows/vector/metrics_field.sim
tests/script/windows/vector/metrics_field.sim
+1
-1
tests/script/windows/vector/metrics_mix.sim
tests/script/windows/vector/metrics_mix.sim
+1
-1
tests/script/windows/vector/metrics_query.sim
tests/script/windows/vector/metrics_query.sim
+1
-1
tests/script/windows/vector/metrics_tag.sim
tests/script/windows/vector/metrics_tag.sim
+1
-1
tests/script/windows/vector/metrics_time.sim
tests/script/windows/vector/metrics_time.sim
+1
-1
tests/script/windows/vector/multi.sim
tests/script/windows/vector/multi.sim
+1
-1
tests/script/windows/vector/single.sim
tests/script/windows/vector/single.sim
+1
-1
tests/script/windows/vector/table_field.sim
tests/script/windows/vector/table_field.sim
+1
-1
tests/script/windows/vector/table_mix.sim
tests/script/windows/vector/table_mix.sim
+1
-1
tests/script/windows/vector/table_query.sim
tests/script/windows/vector/table_query.sim
+1
-1
tests/script/windows/vector/table_time.sim
tests/script/windows/vector/table_time.sim
+1
-1
未找到文件。
Jenkinsfile
浏览文件 @
2d21f1ec
...
...
@@ -41,13 +41,10 @@ def pre_test(){
cd ${WKC}
git checkout develop
git reset --hard HEAD~10
git pull
git fetch
git checkout ${CHANGE_BRANCH}
git reset --hard HEAD~10
git reset --hard HEAD~10 >/dev/null
git pull
git merge develop
git fetch origin +refs/pull/${CHANGE_ID}/merge
git checkout -qf FETCH_HEAD
cd ${WK}
git reset --hard HEAD~10
git checkout develop
...
...
@@ -87,12 +84,15 @@ pipeline {
steps
{
pre_test
()
timeout
(
time:
90
,
unit:
'MINUTES'
){
sh
'''
cd ${WKC}/tests
find pytest -name '*'sql|xargs rm -rf
./test-all.sh p1
date'''
}
}
}
stage
(
'python_2'
)
{
agent
{
label
'p2'
}
...
...
@@ -113,6 +113,7 @@ pipeline {
stage
(
'test_b1'
)
{
agent
{
label
'b1'
}
steps
{
timeout
(
time:
90
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
cd ${WKC}/tests
...
...
@@ -120,6 +121,7 @@ pipeline {
date'''
}
}
}
stage
(
'test_crash_gen'
)
{
agent
{
label
"b2"
}
...
...
@@ -137,6 +139,7 @@ pipeline {
./handle_crash_gen_val_log.sh
'''
}
timeout
(
time:
90
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -145,6 +148,7 @@ pipeline {
'''
}
}
}
stage
(
'test_valgrind'
)
{
agent
{
label
"b3"
}
...
...
@@ -158,6 +162,7 @@ pipeline {
./handle_val_log.sh
'''
}
timeout
(
time:
90
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -165,6 +170,7 @@ pipeline {
date'''
}
}
}
}
...
...
cmake/install.inc
浏览文件 @
2d21f1ec
...
...
@@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS)
#INSTALL(TARGETS taos RUNTIME DESTINATION driver)
#INSTALL(TARGETS shell RUNTIME DESTINATION .)
IF
(
TD_MVN_INSTALLED
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
2.0.1
6
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
2.0.1
7
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
ENDIF
()
ELSEIF
(
TD_DARWIN
)
SET
(
TD_MAKE_INSTALL_SH
"${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh"
)
...
...
documentation20/webdocs/assets/tdengine-jdbc-connector.png
0 → 100644
浏览文件 @
2d21f1ec
41.6 KB
documentation20/webdocs/markdowndocs/Queries-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -9,7 +9,7 @@
TDengine 采用 SQL 作为查询语言。应用程序可以通过 C/C++, Java, Go, Python 连接器发送 SQL 语句,用户可以通过 TDengine 提供的命令行(Command Line Interface, CLI)工具 TAOS Shell 手动执行 SQL 即席查询(Ad-Hoc Query)。TDengine 支持如下查询功能:
-
单列、多列数据查询
-
标签和数值的多种过滤条件:
\>
,
\<
, =,
\
<
>, like 等
-
标签和数值的多种过滤条件:
>,
<
,
=,
<
>
, like 等
-
聚合结果的分组(Group by)、排序(Order by)、约束输出(Limit/Offset)
-
数值列及聚合结果的四则运算
-
时间戳对齐的连接查询(Join Query: 隐式连接)操作
...
...
documentation20/webdocs/markdowndocs/TAOS SQL-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -1125,11 +1125,8 @@ SELECT function_list FROM stb_name
- WHERE语句可以指定查询的起止时间和其他过滤条件
- FILL语句指定某一时间区间数据缺失的情况下的填充模式。填充模式包括以下几种:
1. 不进行填充:NONE(默认填充模式)。
2. VALUE填充:固定值填充,此时需要指定填充的数值。例如:fill(value, 1.23)。
3. NULL填充:使用NULL填充数据。例如:fill(null)。
4. PREV填充:使用前一个非NULL值填充数据。例如:fill(prev)。
说明:
...
...
documentation20/webdocs/markdowndocs/administrator-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -124,10 +124,10 @@ taosd -C
对于一个应用场景,可能有多种数据特征的数据并存,最佳的设计是将具有相同数据特征的表放在一个库里,这样一个应用有多个库,而每个库可以配置不同的存储参数,从而保证系统有最优的性能。TDengine允许应用在创建库时指定上述存储参数,如果指定,该参数就将覆盖对应的系统配置参数。举例,有下述SQL:
```
create database demo days 10 cache 32 blocks 8 replica 3;
create database demo days 10 cache 32 blocks 8 replica 3
update 1
;
```
该SQL创建了一个库demo, 每个数据文件存储10天数据,内存块为32兆字节,每个VNODE占用8个内存块,副本数为3,而其他参数与系统配置完全一致。
该SQL创建了一个库demo, 每个数据文件存储10天数据,内存块为32兆字节,每个VNODE占用8个内存块,副本数为3,
允许更新,
而其他参数与系统配置完全一致。
TDengine集群中加入一个新的dnode时,涉及集群相关的一些参数必须与已有集群的配置相同,否则不能成功加入到集群中。会进行校验的参数如下:
...
...
documentation20/webdocs/markdowndocs/advanced features-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -197,7 +197,7 @@ select * from meters where ts > now - 1d and current > 10;
且
`restart`
是
**false**
(
**0**
),用户程序就不会读到之前已经读取的数据了。
`taos_subscribe`
的最后一个参数是以毫秒为单位的轮询周期。
在同步模式下,如
过
前后两次调用
`taos_consume`
的时间间隔小于此时间,
在同步模式下,如
果
前后两次调用
`taos_consume`
的时间间隔小于此时间,
`taos_consume`
会阻塞,直到间隔超过此时间。
异步模式下,这个时间是两次调用回调函数的最小时间间隔。
...
...
@@ -414,7 +414,7 @@ TDengine通过查询函数向用户提供毫秒级的数据获取能力。直接
TDengine分配固定大小的内存空间作为缓存空间,缓存空间可根据应用的需求和硬件资源配置。通过适当的设置缓存空间,TDengine可以提供极高性能的写入和查询的支持。TDengine中每个虚拟节点(virtual node)创建时分配独立的缓存池。每个虚拟节点管理自己的缓存池,不同虚拟节点间不共享缓存池。每个虚拟节点内部所属的全部表共享该虚拟节点的缓存池。
TDengine将内存池按块划分进行管理,数据在内存块里
按照列式存储。一个vnode的内存池是在vnode创建时按块分配好的,而且每个内存块按照先进先出的原则进行管理。一张表所需要的内存块是从vnode的内存池中进行分配的,块的大小由系统配置参数cache决定。每张表最大内存块的数目由配置参数tblocks决定,每张表平均的内存块的个数由配置参数ablocks决定。因此对于一个vnode, 总的内存大小为:
`cache * ablocks * tables`
。内存块参数cache不宜过小,一个cache block需要能存储至少几十条以上记录,才会有效率。参数ablocks最小为2,保证每张表平均至少能分配两个内存块
。
TDengine将内存池按块划分进行管理,数据在内存块里
是以行(row)的形式存储。一个vnode的内存池是在vnode创建时按块分配好,而且每个内存块按照先进先出的原则进行管理。在创建内存池时,块的大小由系统配置参数cache决定;每个vnode中内存块的数目则由配置参数blocks决定。因此对于一个vnode,总的内存大小为:
`cache * blocks`
。一个cache block需要保证每张表能存储至少几十条以上记录,才会有效率
。
你可以通过函数last_row快速获取一张表或一张超级表的最后一条记录,这样很便于在大屏显示各设备的实时状态或采集值。例如:
...
...
documentation20/webdocs/markdowndocs/cluster-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -225,7 +225,7 @@ SHOW MNODES;
## Arbitrator的使用
如果副本数为偶数,当一个vnode group里一半vnode不工作时,是无法从中选出master的。同理,一半mnode不工作时,是无法选出mnode的master的,因为存在“split brain”问题。为解决这个问题,TDengine引入了
arbitrator的概念。Arbitrator模拟一个vnode或mnode在工作,但只简单的负责网络连接,不处理任何数据插入或访问。只要包含arbitrator在内,超过半数的vnode或mnode工作,那么该vnode group或mnode组就可以正常的提供数据插入或查询服务。比如对于副本数为2的情形,如果一个节点A离线,但另外一个节点B正常,而且能连接到arbitrator,
那么节点B就能正常工作。
如果副本数为偶数,当一个vnode group里一半vnode不工作时,是无法从中选出master的。同理,一半mnode不工作时,是无法选出mnode的master的,因为存在“split brain”问题。为解决这个问题,TDengine引入了
Arbitrator的概念。Arbitrator模拟一个vnode或mnode在工作,但只简单的负责网络连接,不处理任何数据插入或访问。只要包含Arbitrator在内,超过半数的vnode或mnode工作,那么该vnode group或mnode组就可以正常的提供数据插入或查询服务。比如对于副本数为2的情形,如果一个节点A离线,但另外一个节点B正常,而且能连接到Arbitrator,
那么节点B就能正常工作。
TDengine提供一个执行程序
tarbitrator, 找任何一台Linux服务器运行它即可。请点击
[
安装包下载
](
https://www.taosdata.com/cn/all-downloads/
)
,在TDengine Arbitrator Linux一节中,选择适合的版本下载并安装。该程序对系统资源几乎没有要求,只需要保证有网络连接即可。该应用的命令行参数
`-p`
可以指定其对外服务的端口号,缺省是6042。配置每个taosd实例时,可以在配置文件taos.cfg里将参数arbitrator设置为arbitrator的End Point。如果该参数配置了,当副本数为偶数时,系统将自动连接配置的arbitrator。如果副本数为奇数,即使配置了arbitrator,
系统也不会去建立连接。
TDengine提供一个执行程序
,名为 tarbitrator,找任何一台Linux服务器运行它即可。请点击
[
安装包下载
](
https://www.taosdata.com/cn/all-downloads/
)
,在TDengine Arbitrator Linux一节中,选择适合的版本下载并安装。该程序对系统资源几乎没有要求,只需要保证有网络连接即可。该应用的命令行参数
`-p`
可以指定其对外服务的端口号,缺省是6042。配置每个taosd实例时,可以在配置文件taos.cfg里将参数arbitrator设置为Arbitrator的End Point。如果该参数配置了,当副本数为偶数时,系统将自动连接配置的Arbitrator。如果副本数为奇数,即使配置了Arbitrator,
系统也不会去建立连接。
documentation20/webdocs/markdowndocs/cluster.md
已删除
100644 → 0
浏览文件 @
b055dd66
#集群安装、管理
多个taosd的运行实例可以组成一个集群,以保证TDengine的高可靠运行,并提供水平扩展能力。要了解TDengine 2.0的集群管理,需要对集群的基本概念有所了解,请看TDengine 2.0整体架构一章。
集群的每个节点是由End Point来唯一标识的,End Point是由FQDN(Fully Qualified Domain Name)外加Port组成,比如 h1.taosdata.com:6030。一般FQDN就是服务器的hostname,可通过Linux命令“hostname"获取。端口是这个节点对外服务的端口号,缺省是6030,但可以通过taos.cfg里配置参数serverPort进行修改。
TDengine的集群管理极其简单,除添加和删除节点需要人工干预之外,其他全部是自动完成,最大程度的降低了运维的工作量。本章对集群管理的操作做详细的描述。
##安装、创建第一个节点
集群是由一个一个dnode组成的,是从一个dnode的创建开始的。创建第一个节点很简单,就按照
[
"立即开始“
](
https://www.taosdata.com/cn/getting-started/
)
一章的方法进行安装、启动即可。
启动后,请执行taos, 启动taos shell,从shell里执行命令"show dnodes;",如下所示:
```
Welcome to the TDengine shell from Linux, Client Version:2.0.0.0
Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.
taos> show dnodes;
id | end_point | vnodes | cores | status | role | create_time |
=====================================================================================
1 | h1.taos.com:6030 | 0 | 2 | ready | any | 2020-07-31 03:49:29.202 |
Query OK, 1 row(s) in set (0.006385s)
taos>
```
上述命令里,可以看到这个刚启动的这个节点的End Point是:h1.taos.com:6030
## 安装、创建后续节点
将新的节点添加到现有集群,具体有以下几步:
1.
按照
[
"立即开始“
](
https://www.taosdata.com/cn/getting-started/
)
一章的方法进行安装,但不要启动taosd
2.
如果是使用涛思数据的官方安装包进行安装,在安装结束时,会询问集群的End Port, 输入第一个节点的End Point即可。如果是源码安装,请编辑配置文件taos.cfg(缺省是在/etc/taos/目录),增加一行:
```
firstEp h1.taos.com:6030
```
请注意将示例的“h1.taos.com:6030" 替换为你自己第一个节点的End Point
3.
按照
[
"立即开始“
](
https://www.taosdata.com/cn/getting-started/
)
一章的方法启动taosd
4.
在Linux shell里执行命令"hostname"找出本机的FQDN, 假设为h2.taos.com。如果无法找到,可以查看taosd日志文件taosdlog.0里前面几行日志(一般在/var/log/taos目录),fqdn以及port都会打印出来。
5.
在第一个节点,使用CLI程序taos, 登录进TDengine系统, 使用命令:
```
CREATE DNODE "h2.taos.com:6030";
```
将新节点的End Point添加进集群的EP列表。
**"fqdn:port"需要用双引号引起来**
,否则出错。请注意将示例的“h2.taos.com:6030" 替换为你自己第一个节点的End Point
6.
使用命令
```
SHOW DNODES;
```
查看新节点是否被成功加入。
按照上述步骤可以源源不断的将新的节点加入到集群。
**提示:**
-
firstEp, secondEp这两个参数仅仅在该节点第一次加入集群时有作用,加入集群后,该节点会保存最新的mnode的End Point列表,不再依赖这两个参数。
-
两个没有配置first, second参数的dnode启动后,会独立运行起来。这个时候,无法将其中一个节点加入到另外一个节点,形成集群。
**无法将两个独立的集群合并成为新的集群**
。
##节点管理
###添加节点
执行CLI程序taos, 使用root账号登录进系统, 执行:
```
CREATE DNODE "fqdn:port";
```
将新节点的End Point添加进集群的EP列表。
**"fqdn:port"需要用双引号引起来**
,否则出错。一个节点对外服务的fqdn和port可以通过配置文件taos.cfg进行配置,缺省是自动获取。
###删除节点
执行CLI程序taos, 使用root账号登录进TDengine系统,执行:
```
DROP DNODE "fqdn:port";
```
其中fqdn是被删除的节点的FQDN,port是其对外服务器的端口号
###查看节点
执行CLI程序taos,使用root账号登录进TDengine系统,执行:
```
SHOW DNODES;
```
它将列出集群中所有的dnode,每个dnode的fqdn:port, 状态(ready, offline等),vnode数目,还未使用的vnode数目等信息。在添加或删除一个节点后,可以使用该命令查看。
如果集群配置了Arbitrator,那么它也会在这个节点列表中显示出来,其role列的值会是“arb”。
###查看虚拟节点组
为充分利用多核技术,并提供scalability,数据需要分片处理。因此TDengine会将一个DB的数据切分成多份,存放在多个vnode里。这些vnode可能分布在多个dnode里,这样就实现了水平扩展。一个vnode仅仅属于一个DB,但一个DB可以有多个vnode。vnode的是mnode根据当前系统资源的情况,自动进行分配的,无需任何人工干预。
执行CLI程序taos,使用root账号登录进TDengine系统,执行:
```
SHOW VGROUPS;
```
##高可用性
TDengine通过多副本的机制来提供系统的高可用性。副本数是与DB关联的,一个集群里可以有多个DB,根据运营的需求,每个DB可以配置不同的副本数。创建数据库时,通过参数replica 指定副本数(缺省为1)。如果副本数为1,系统的可靠性无法保证,只要数据所在的节点宕机,就将无法提供服务。集群的节点数必须大于等于副本数,否则创建表时将返回错误“more dnodes are needed"。比如下面的命令将创建副本数为3的数据库demo:
```
CREATE DATABASE demo replica 3;
```
一个DB里的数据会被切片分到多个vnode group,vnode group里的vnode数目就是DB的副本数,同一个vnode group里各vnode的数据是完全一致的。为保证高可用性,vnode group里的vnode一定要分布在不同的dnode里(实际部署时,需要在不同的物理机上),只要一个vgroup里超过半数的vnode处于工作状态,这个vgroup就能正常的对外服务。
一个dnode里可能有多个DB的数据,因此一个dnode离线时,可能会影响到多个DB。如果一个vnode group里的一半或一半以上的vnode不工作,那么该vnode group就无法对外服务,无法插入或读取数据,这样会影响到它所属的DB的一部分表的d读写操作。
因为vnode的引入,无法简单的给出结论:“集群中过半dnode工作,集群就应该工作”。但是对于简单的情形,很好下结论。比如副本数为3,只有三个dnode,那如果仅有一个节点不工作,整个集群还是可以正常工作的,但如果有两个节点不工作,那整个集群就无法正常工作了。
##Mnode的高可用
TDengine集群是由mnode (taosd的一个模块,逻辑节点) 负责管理的,为保证mnode的高可用,可以配置多个mnode副本,副本数由系统配置参数numOfMnodes决定,有效范围为1-3。为保证元数据的强一致性,mnode副本之间是通过同步的方式进行数据复制的。
一个集群有多个dnode, 但一个dnode至多运行一个mnode实例。多个dnode情况下,哪个dnode可以作为mnode呢?这是完全由系统根据整个系统资源情况,自动指定的。用户可通过CLI程序taos,在TDengine的console里,执行如下命令:
```
SHOW MNODES;
```
来查看mnode列表,该列表将列出mnode所处的dnode的End Point和角色(master, slave, unsynced 或offline)。
当集群中第一个节点启动时,该节点一定会运行一个mnode实例,否则该dnode无法正常工作,因为一个系统是必须有至少一个mnode的。如果numOfMnodes配置为2,启动第二个dnode时,该dnode也将运行一个mnode实例。
为保证mnode服务的高可用性,numOfMnodes必须设置为2或更大。因为mnode保存的元数据必须是强一致的,如果numOfMnodes大于2,复制参数quorum自动设为2,也就是说,至少要保证有两个副本写入数据成功,才通知客户端应用写入成功。
##负载均衡
有三种情况,将触发负载均衡,而且都无需人工干预。
-
当一个新节点添加进集群时,系统将自动触发负载均衡,一些节点上的数据将被自动转移到新节点上,无需任何人工干预。
-
当一个节点从集群中移除时,系统将自动把该节点上的数据转移到其他节点,无需任何人工干预。
-
如果一个节点过热(数据量过大),系统将自动进行负载均衡,将该节点的一些vnode自动挪到其他节点。
当上述三种情况发生时,系统将启动一各个节点的负载计算,从而决定如何挪动。
##节点离线处理
如果一个节点离线,TDengine集群将自动检测到。有如下两种情况:
-
改节点离线超过一定时间(taos.cfg里配置参数offlineThreshold控制时长),系统将自动把该节点删除,产生系统报警信息,触发负载均衡流程。如果该被删除的节点重现上线时,它将无法加入集群,需要系统管理员重新将其添加进集群才会开始工作。
-
离线后,在offlineThreshold的时长内重新上线,系统将自动启动数据恢复流程,等数据完全恢复后,该节点将开始正常工作。
##Arbitrator的使用
如果副本数为偶数,当一个vnode group里一半vnode不工作时,是无法从中选出master的。同理,一半mnode不工作时,是无法选出mnode的master的,因为存在“split brain”问题。为解决这个问题,TDengine引入了arbitrator的概念。Arbitrator模拟一个vnode或mnode在工作,但只简单的负责网络连接,不处理任何数据插入或访问。只要包含arbitrator在内,超过半数的vnode或mnode工作,那么该vnode group或mnode组就可以正常的提供数据插入或查询服务。比如对于副本数为2的情形,如果一个节点A离线,但另外一个节点B正常,而且能连接到arbitrator, 那么节点B就能正常工作。
TDengine安装包里带有一个执行程序tarbitrator, 找任何一台Linux服务器运行它即可。该程序对系统资源几乎没有要求,只需要保证有网络连接即可。该应用的命令行参数
`-p`
可以指定其对外服务的端口号,缺省是6030。配置每个taosd实例时,可以在配置文件taos.cfg里将参数arbitrator设置为Arbitrator的End Point。如果该参数配置了,当副本数为偶数时,系统将自动连接配置的Arbitrator。
在配置了Arbitrator的情况下,它也会显示在“show dnodes;”指令给出的节点列表中。
documentation20/webdocs/markdowndocs/connector-java-ch.md
浏览文件 @
2d21f1ec
# Java Connector
Java连接器支持的系统有:
|
**CPU类型**
| x64(64bit) | | | ARM64 | ARM32 |
| ------------ | ------------ | -------- | -------- | -------- | -------- |
|
**OS类型**
| Linux | Win64 | Win32 | Linux | Linux |
|
**支持与否**
|
**支持**
|
**支持**
|
**支持**
|
**支持**
|
**支持**
|
TDengine 提供了遵循 JDBC 标准(3.0)API 规范的
`taos-jdbcdriver`
实现,可在 maven 的中央仓库
[
Sonatype Repository
][
1
]
搜索下载。
Java连接器的使用请参见
<a
href=
https://www.taosdata.com/blog/2020/11/11/1955.html
>
视频教程
</a>
。
`taos-jdbcdriver`
的实现包括 2 种形式: JDBC-JNI 和 JDBC-RESTful(taos-jdbcdriver-2.0.17 开始支持 JDBC-RESTful)。 JDBC-JNI 通过调用客户端 libtaos.so(或 taos.dll )的本地方法实现, JDBC-RESTful 则在内部封装了 RESTful 接口实现
。
TDengine 为了方便 Java 应用使用,提供了遵循 JDBC 标准(3.0)API 规范的
`taos-jdbcdriver`
实现。目前可以通过
[
Sonatype Repository
][
1
]
搜索并下载。

由于 TDengine 是使用 c 语言开发的,使用 taos-jdbcdriver 驱动包时需要依赖系统对应的本地函数库。
上图显示了 3 种 Java 应用使用连接器访问 TDengine 的方式:
*
libtaos.so
在 linux 系统中成功安装 TDengine 后,依赖的本地函数库 libtaos.so 文件会被自动拷贝至 /usr/lib/libtaos.so,该目录包含在 Linux 自动扫描路径上,无需单独指定。
*
JDBC-JNI:Java 应用在物理节点1(pnode1)上使用 JDBC-JNI 的 API ,直接调用客户端 API(libtaos.so 或 taos.dll)将写入和查询请求发送到位于物理节点2(pnode2)上的 taosd 实例。
*
RESTful:应用将 SQL 发送给位于物理节点2(pnode2)上的 RESTful 连接器,再调用客户端 API(libtaos.so)。
*
JDBC-RESTful:Java 应用通过 JDBC-RESTful 的 API ,将 SQL 封装成一个 RESTful 请求,发送给物理节点2的 RESTful 连接器。
*
taos.dll
在 windows 系统中安装完客户端之后,驱动包依赖的 taos.dll 文件会自动拷贝到系统默认搜索路径 C:/Windows/System32 下,同样无需要单独指定。
TDengine 的 JDBC 驱动实现尽可能与关系型数据库驱动保持一致,但时序空间数据库与关系对象型数据库服务的对象和技术特征存在差异,导致
`taos-jdbcdriver`
与传统的 JDBC driver 也存在一定差异。在使用时需要注意以下几点:
> 注意:在 windows 环境开发时需要安装 TDengine 对应的 [windows 客户端][14],Linux 服务器安装完 TDengine 之后默认已安装 client,也可以单独安装 [Linux 客户端][15] 连接远程 TDengine Server。
TDengine 的 JDBC 驱动实现尽可能的与关系型数据库驱动保持一致,但时序空间数据库与关系对象型数据库服务的对象和技术特征的差异导致 taos-jdbcdriver 并未完全实现 JDBC 标准规范。在使用时需要注意以下几点:
*
TDengine 不提供针对单条数据记录的删除和修改的操作,驱动中也没有支持相关方法。
*
由于不支持删除和修改,所以也不支持事务操作。
*
TDengine 目前不支持针对单条数据记录的删除操作。
*
目前不支持事务操作。
*
目前不支持表间的 union 操作。
*
目前不支持嵌套查询(nested query),对每个 Connection 的实例,至多只能有一个打开的 ResultSet 实例;如果在 ResultSet还没关闭的情况下执行了新的查询,TSDBJDBCDriver 则会自动关闭上一个 ResultSet。
## TAOS-JDBCDriver 版本以及支持的 TDengine 版本和 JDK 版本
| taos-jdbcdriver 版本 | TDengine 版本 | JDK 版本 |
| --- | --- | --- |
| 2.0.12 及以上 | 2.0.8.0 及以上 | 1.8.x |
| 2.0.4 - 2.0.11 | 2.0.0.0 - 2.0.7.x | 1.8.x |
| 1.0.3 | 1.6.1.x 及以上 | 1.8.x |
| 1.0.2 | 1.6.1.x 及以上 | 1.8.x |
| 1.0.1 | 1.6.1.x 及以上 | 1.8.x |
## TDengine DataType 和 Java DataType
TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对应类型转换如下:
| TDengine DataType | Java DataType |
| --- | --- |
| TIMESTAMP | java.sql.Timestamp |
| INT | java.lang.Integer |
| BIGINT | java.lang.Long |
| FLOAT | java.lang.Float |
| DOUBLE | java.lang.Double |
| SMALLINT, TINYINT |java.lang.Short |
| BOOL | java.lang.Boolean |
| BINARY, NCHAR | java.lang.String |
## 如何获取 TAOS-JDBCDriver
*
目前不支持嵌套查询(nested query)。
*
对每个 Connection 的实例,至多只能有一个打开的 ResultSet 实例;如果在 ResultSet 还没关闭的情况下执行了新的查询,taos-jdbcdriver 会自动关闭上一个 ResultSet。
## JDBC-JNI和JDBC-RESTful的对比
<table
>
<tr
align=
"center"
><th>
对比项
</th><th>
JDBC-JNI
</th><th>
JDBC-RESTful
</th></tr>
<tr
align=
"center"
>
<td>
支持的操作系统
</td>
<td>
linux、windows
</td>
<td>
全平台
</td>
</tr>
<tr
align=
"center"
>
<td>
是否需要安装 client
</td>
<td>
需要
</td>
<td>
不需要
</td>
</tr>
<tr
align=
"center"
>
<td>
server 升级后是否需要升级 client
</td>
<td>
需要
</td>
<td>
不需要
</td>
</tr>
<tr
align=
"center"
>
<td>
写入性能
</td>
<td
colspan=
"2"
>
JDBC-RESTful 是 JDBC-JNI 的 50%~90%
</td>
</tr>
<tr
align=
"center"
>
<td>
查询性能
</td>
<td
colspan=
"2"
>
JDBC-RESTful 与 JDBC-JNI 没有差别
</td>
</tr>
</table>
## 如何获取 taos-jdbcdriver
### maven 仓库
目前 taos-jdbcdriver 已经发布到
[
Sonatype Repository
][
1
]
仓库,且各大仓库都已同步。
*
[
sonatype
][
8
]
*
[
mvnrepository
][
9
]
*
[
maven.aliyun
][
10
]
...
...
@@ -67,30 +67,63 @@ maven 项目中使用如下 pom.xml 配置即可:
<dependency>
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>
2.0.
4
</version>
<version>
2.0.
17
</version>
</dependency>
```
### 源码编译打包
下载
[
TDengine
][
3
]
源码之后,进入 taos-jdbcdriver 源码目录
`src/connector/jdbc`
执行
`mvn clean package`
即可生成相应 jar 包。
下载
[
TDengine
][
3
]
源码之后,进入 taos-jdbcdriver 源码目录
`src/connector/jdbc`
执行
`mvn clean package -Dmaven.test.skip=true`
即可生成相应 jar 包。
## 使用说明
##
JDBC的
使用说明
### 获取连接
#### 通过JdbcUrl获取连接
#### 指定URL获取连接
通过指定URL获取连接,如下所示:
```
java
Class
.
forName
(
"com.taosdata.jdbc.rs.RestfulDriver"
);
String
jdbcUrl
=
"jdbc:TAOS-RS://taosdemo.com:6041/test?user=root&password=taosdata"
;
Connection
conn
=
DriverManager
.
getConnection
(
jdbcUrl
);
```
以上示例,使用
**JDBC-RESTful**
的 driver,建立了到 hostname 为 taosdemo.com,端口为 6041,数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。
使用 JDBC-RESTful 接口,不需要依赖本地函数库。与 JDBC-JNI 相比,仅需要:
1.
driverClass 指定为“com.taosdata.jdbc.rs.RestfulDriver”;
2.
jdbcUrl 以“jdbc:TAOS-RS://”开头;
3.
使用 6041 作为连接端口。
如果希望获得更好的写入和查询性能,Java 应用可以使用
**JDBC-JNI**
的driver,如下所示:
通过指定的jdbcUrl获取连接,如下所示:
```
java
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
String
jdbcUrl
=
"jdbc:TAOS://taosdemo.com:6030/test?user=root&password=taosdata"
;
Connection
conn
=
DriverManager
.
getConnection
(
jdbcUrl
);
```
以上示例,建立了到hostname为taosdemo.com,端口为6030(TDengine的默认端口),数据库名为test的连接。这个url中指定用户名(user)为root,密码(password)为taosdata。
以上示例,使用了 JDBC-JNI 的 driver,建立了到 hostname 为 taosdemo.com,端口为 6030(TDengine 的默认端口),数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。
**注意**
:使用 JDBC-JNI 的 driver,taos-jdbcdriver 驱动包时需要依赖系统对应的本地函数库。
*
libtaos.so
在 linux 系统中成功安装 TDengine 后,依赖的本地函数库 libtaos.so 文件会被自动拷贝至 /usr/lib/libtaos.so,该目录包含在 Linux 自动扫描路径上,无需单独指定。
*
taos.dll
在 windows 系统中安装完客户端之后,驱动包依赖的 taos.dll 文件会自动拷贝到系统默认搜索路径 C:/Windows/System32 下,同样无需要单独指定。
> 在 windows 环境开发时需要安装 TDengine 对应的 [windows 客户端][14],Linux 服务器安装完 TDengine 之后默认已安装 client,也可以单独安装 [Linux 客户端][15] 连接远程 TDengine Server。
JDBC-JNI 的使用请参见
<a
href=
https://www.taosdata.com/blog/2020/11/11/1955.html
>
视频教程
</a>
。
TDengine 的 JDBC URL 规范格式为:
`jdbc:TAOS://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]`
`jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]`
url中的配置参数如下:
*
user:登录 TDengine 用户名,默认值 root。
*
password:用户登录密码,默认值 taosdata。
...
...
@@ -99,13 +132,17 @@ url中的配置参数如下:
*
locale:客户端语言环境,默认值系统当前 locale。
*
timezone:客户端使用的时区,默认值为系统当前时区。
#### 使用JdbcUrl和Properties获取连接
除了通过指定的jdbcUrl获取连接,还可以使用Properties指定建立连接时的参数,如下所示:
#### 指定URL和Properties获取连接
除了通过指定的 URL 获取连接,还可以使用 Properties 指定建立连接时的参数,如下所示:
```
java
public
Connection
getConn
()
throws
Exception
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
// Class.forName("com.taosdata.jdbc.rs.RestfulDriver");
String
jdbcUrl
=
"jdbc:TAOS://taosdemo.com:6030/test?user=root&password=taosdata"
;
// String jdbcUrl = "jdbc:TAOS-RS://taosdemo.com:6041/test?user=root&password=taosdata";
Properties
connProps
=
new
Properties
();
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
...
...
@@ -114,9 +151,10 @@ public Connection getConn() throws Exception{
return
conn
;
}
```
以上示例,建立一个到hostname为taosdemo.com,端口为6030,数据库名为test的连接。这个连接在url中指定了用户名(user)为root,密码(password)为taosdata,并在connProps中指定了使用的字符集、语言环境、时区等信息。
properties中的配置参数如下:
以上示例,建立一个到 hostname 为 taosdemo.com,端口为 6030,数据库名为 test 的连接。注释为使用 JDBC-RESTful 时的方法。这个连接在 url 中指定了用户名(user)为 root,密码(password)为 taosdata,并在 connProps 中指定了使用的字符集、语言环境、时区等信息。
properties 中的配置参数如下:
*
TSDBDriver.PROPERTY_KEY_USER:登录 TDengine 用户名,默认值 root。
*
TSDBDriver.PROPERTY_KEY_PASSWORD:用户登录密码,默认值 taosdata。
*
TSDBDriver.PROPERTY_KEY_CONFIG_DIR:客户端配置文件目录路径,Linux OS 上默认值 /etc/taos ,Windows OS 上默认值 C:/TDengine/cfg。
...
...
@@ -124,10 +162,14 @@ properties中的配置参数如下:
*
TSDBDriver.PROPERTY_KEY_LOCALE:客户端语言环境,默认值系统当前 locale。
*
TSDBDriver.PROPERTY_KEY_TIME_ZONE:客户端使用的时区,默认值为系统当前时区。
#### 使用客户端配置文件建立连接
当使用JDBC连接TDengine集群时,可以使用客户端配置文件,在客户端配置文件中指定集群的firstEp、secondEp参数。
当使用 JDBC-JNI 连接 TDengine 集群时,可以使用客户端配置文件,在客户端配置文件中指定集群的 firstEp、secondEp参数。
如下所示:
1.
在java中不指定hostname和port
1.
在 Java 应用中不指定 hostname 和 port
```
java
public
Connection
getConn
()
throws
Exception
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
...
...
@@ -140,7 +182,7 @@ public Connection getConn() throws Exception{
return
conn
;
}
```
2.
在配置文件中指定
firstEp和
secondEp
2.
在配置文件中指定
firstEp 和
secondEp
```
# first fully qualified domain name (FQDN) for TDengine system
firstEp cluster_node1:6030
...
...
@@ -155,17 +197,19 @@ secondEp cluster_node2:6030
# locale en_US.UTF-8
```
以上示例,jdbc
会使用客户端的配置文件,建立到hostname为cluster_node1,端口为6030,数据库名为test的连接。当集群中firstEp节点失效时,JDBC会尝试使用secondEp
连接集群。
TDengine
中,只要保证firstEp和secondEp
中一个节点有效,就可以正常建立到集群的连接。
以上示例,jdbc
会使用客户端的配置文件,建立到 hostname 为 cluster_node1、端口为 6030、数据库名为 test 的连接。当集群中 firstEp 节点失效时,JDBC 会尝试使用 secondEp
连接集群。
TDengine
中,只要保证 firstEp 和 secondEp
中一个节点有效,就可以正常建立到集群的连接。
> 注意:这里的配置文件指的是调用
JDBC Connector
的应用程序所在机器上的配置文件,Linux OS 上默认值 /etc/taos/taos.cfg ,Windows OS 上默认值 C://TDengine/cfg/taos.cfg。
> 注意:这里的配置文件指的是调用
JDBC Connector
的应用程序所在机器上的配置文件,Linux OS 上默认值 /etc/taos/taos.cfg ,Windows OS 上默认值 C://TDengine/cfg/taos.cfg。
#### 配置参数的优先级
通过以上3种方式获取连接,如果配置参数在url、Properties、客户端配置文件中有重复,则参数的
`优先级由高到低`
分别如下:
通过以上 3 种方式获取连接,如果配置参数在 url、Properties、客户端配置文件中有重复,则参数的
`优先级由高到低`
分别如下:
1.
JDBC URL 参数,如上所述,可以在 JDBC URL 的参数中指定。
2.
Properties connProps
3.
客户端配置文件 taos.cfg
例如:在url中指定了password为taosdata,在Properties中指定了password为taosdemo,那么,JDBC会使用url中的password建立连接。
例如:在 url 中指定了 password 为 taosdata,在 Properties 中指定了 password 为 taosdemo,那么,JDBC 会使用 url 中的 password 建立连接。
> 更多详细配置请参考[客户端配置][13]
...
...
@@ -183,6 +227,7 @@ stmt.executeUpdate("use db");
// create table
stmt
.
executeUpdate
(
"create table if not exists tb (ts timestamp, temperature int, humidity float)"
);
```
> 注意:如果不使用 `use db` 指定数据库,则后续对表的操作都需要增加数据库名称作为前缀,如 db.tb。
### 插入数据
...
...
@@ -193,6 +238,7 @@ int affectedRows = stmt.executeUpdate("insert into tb values(now, 23, 10.3) (now
System
.
out
.
println
(
"insert "
+
affectedRows
+
" rows."
);
```
> now 为系统内部函数,默认为服务器当前时间。
> `now + 1s` 代表服务器当前时间往后加 1 秒,数字后面代表时间单位:a(毫秒), s(秒), m(分), h(小时), d(天),w(周), n(月), y(年)。
...
...
@@ -214,6 +260,7 @@ while(resultSet.next()){
System
.
out
.
printf
(
"%s, %d, %s\n"
,
ts
,
temperature
,
humidity
);
}
```
> 查询和操作关系型数据库一致,使用下标获取返回字段内容时从 1 开始,建议使用字段名称获取。
### 订阅
...
...
@@ -248,7 +295,7 @@ while(true) {
}
```
`consume`
方法返回一个结果集,其中包含从上次
`consume`
到目前为止的所有新数据。请务必按需选择合理的调用
`consume`
的频率(如例子中的
`Thread.sleep(1000)`
),否则会给服务端造成不必要的压力。
`consume`
方法返回一个结果集,其中包含从上次
`consume`
到目前为止的所有新数据。请务必按需选择合理的调用
`consume`
的频率(如例子中的
`Thread.sleep(1000)`
),否则会给服务端造成不必要的压力。
#### 关闭订阅
...
...
@@ -265,8 +312,11 @@ resultSet.close();
stmt
.
close
();
conn
.
close
();
```
> `注意务必要将 connection 进行关闭`,否则会出现连接泄露。
## 与连接池使用
**HikariCP**
...
...
@@ -306,6 +356,7 @@ conn.close();
connection
.
close
();
// put back to conneciton pool
}
```
> 通过 HikariDataSource.getConnection() 获取连接后,使用完成后需要调用 close() 方法,实际上它并不会关闭连接,只是放回连接池中。
> 更多 HikariCP 使用问题请查看[官方说明][5]
...
...
@@ -356,6 +407,7 @@ public static void main(String[] args) throws Exception {
connection
.
close
();
// put back to conneciton pool
}
```
> 更多 druid 使用问题请查看[官方说明][6]
**注意事项**
...
...
@@ -370,10 +422,43 @@ server_status()|
Query OK, 1 row
(
s
)
in
set
(
0.000141s
)
```
## 与框架使用
*
Spring JdbcTemplate 中使用 taos-jdbcdriver,可参考
[
SpringJdbcTemplate
][
11
]
*
Springboot + Mybatis 中使用,可参考
[
springbootdemo
][
12
]
*
Springboot + Mybatis 中使用,可参考
[
springbootdemo
## TAOS-JDBCDriver 版本以及支持的 TDengine 版本和 JDK 版本
| taos-jdbcdriver 版本 | TDengine 版本 | JDK 版本 |
| -------------------- | ----------------- | -------- |
| 2.0.12 及以上 | 2.0.8.0 及以上 | 1.8.x |
| 2.0.4 - 2.0.11 | 2.0.0.0 - 2.0.7.x | 1.8.x |
| 1.0.3 | 1.6.1.x 及以上 | 1.8.x |
| 1.0.2 | 1.6.1.x 及以上 | 1.8.x |
| 1.0.1 | 1.6.1.x 及以上 | 1.8.x |
## TDengine DataType 和 Java DataType
TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对应类型转换如下:
| TDengine DataType | Java DataType |
| ----------------- | ------------------ |
| TIMESTAMP | java.sql.Timestamp |
| INT | java.lang.Integer |
| BIGINT | java.lang.Long |
| FLOAT | java.lang.Float |
| DOUBLE | java.lang.Double |
| SMALLINT, TINYINT | java.lang.Short |
| BOOL | java.lang.Boolean |
| BINARY, NCHAR | java.lang.String |
## 常见问题
...
...
@@ -381,7 +466,7 @@ Query OK, 1 row(s) in set (0.000141s)
**原因**:程序没有找到依赖的本地函数库 taos。
**解决方法**
:windows 下可以将 C:
\T
Dengine
\d
river
\t
aos.dll 拷贝到 C:
\W
indows
\S
ystem32
\
目录下,linux 下将建立如下软链
`
ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so`
即可。
**解决方法**:windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目录下,linux 下将建立如下软链 `ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so` 即可。
* java.lang.UnsatisfiedLinkError: taos.dll Can't load AMD 64 bit on a IA 32-bit platform
...
...
@@ -406,3 +491,4 @@ Query OK, 1 row(s) in set (0.000141s)
[
13
]:
https://www.taosdata.com/cn/documentation20/administrator/#%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE
[
14
]:
https://www.taosdata.com/cn/all-downloads/#TDengine-Windows-Client
[
15
]:
https://www.taosdata.com/cn/getting-started/#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B
documentation20/webdocs/markdowndocs/faq-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -85,7 +85,9 @@ TDengine还没有一组专用的validation queries。然而建议你使用系统
## 9. 我可以删除或更新一条记录吗?
不能。因为TDengine是为联网设备采集的数据设计的,不容许修改。但TDengine提供数据保留策略,只要数据记录超过保留时长,就会被自动删除。
TDengine 目前尚不支持删除功能,未来根据用户需求可能会支持。
从 2.0.8.0 开始,TDengine 支持更新已经写入数据的功能。使用更新功能需要在创建数据库时使用 UPDATE 1 参数,之后可以使用 INSERT INTO 命令更新已经写入的相同时间戳数据。UPDATE 参数不支持 ALTER DATABASE 命令修改。没有使用 UPDATE 1 参数创建的数据库,写入相同时间戳的数据不会修改之前的数据,也不会报错。
## 10. 我怎么创建超过1024列的表?
...
...
@@ -132,8 +134,3 @@ TDengine是根据hostname唯一标志一台机器的,在数据文件从机器A
-
2.0.7.0 及以后的版本,到/var/lib/taos/dnode下,修复dnodeEps.json的dnodeId对应的FQDN,重启。确保机器内所有机器的此文件是完全相同的。
-
1.x 和 2.x 版本的存储结构不兼容,需要使用迁移工具或者自己开发应用导出导入数据。
## 17. TDengine 是否支持删除或更新已经写入的数据?
TDengine 目前尚不支持删除功能,未来根据用户需求可能会支持。
从 2.0.8.0 开始,TDengine 支持更新已经写入数据的功能。使用更新功能需要在创建数据库时使用 UPDATE 1 参数,之后可以使用 INSERT INTO 命令更新已经写入的相同时间戳数据。UPDATE 参数不支持 ALTER DATABASE 命令修改。没有使用 UPDATE 1 参数创建的数据库,写入相同时间戳的数据不会修改之前的数据,也不会报错。
\ No newline at end of file
documentation20/webdocs/markdowndocs/insert-ch.md
浏览文件 @
2d21f1ec
...
...
@@ -222,7 +222,7 @@ MQTT是一流行的物联网数据传输协议,TDengine 可以很方便的接
## EMQ Broker 直接写入
<a
href=
"https://github.com/emqx/emqx"
>
EMQ
</a>
是一开源的MQTT Broker软件,无需任何代码,只需要在EMQ Dashboard里使用“规则”做简单配置,即可将MQTT的数据直接写入TDengine。EMQ X 支持通过 发送到 Web 服务 的方式保存数据到 TDengine,也在企业版上提供原生的 TD
E
ngine 驱动实现直接保存。详细使用方法请参考
<a
href=
"https://docs.emqx.io/broker/latest/cn/rule/rule-example.html#%E4%BF%9D%E5%AD%98%E6%95%B0%E6%8D%AE%E5%88%B0-tdengine"
>
EMQ 官方文档
</a>
。
<a
href=
"https://github.com/emqx/emqx"
>
EMQ
</a>
是一开源的MQTT Broker软件,无需任何代码,只需要在EMQ Dashboard里使用“规则”做简单配置,即可将MQTT的数据直接写入TDengine。EMQ X 支持通过 发送到 Web 服务 的方式保存数据到 TDengine,也在企业版上提供原生的 TD
e
ngine 驱动实现直接保存。详细使用方法请参考
<a
href=
"https://docs.emqx.io/broker/latest/cn/rule/rule-example.html#%E4%BF%9D%E5%AD%98%E6%95%B0%E6%8D%AE%E5%88%B0-tdengine"
>
EMQ 官方文档
</a>
。
## HiveMQ Broker 直接写入
...
...
packaging/cfg/taos.cfg
浏览文件 @
2d21f1ec
...
...
@@ -265,9 +265,6 @@
# maximum display width of binary and nchar fields in the shell. The parts exceeding this limit will be hidden
# maxBinaryDisplayWidth 30
# enable/disable telemetry reporting
# telemetryReporting 1
# enable/disable stream (continuous query)
# stream 1
...
...
src/client/inc/tscLocalMerge.h
浏览文件 @
2d21f1ec
...
...
@@ -38,7 +38,7 @@ typedef struct SLocalDataSource {
tFilePage
filePage
;
}
SLocalDataSource
;
typedef
struct
SLocal
Reduc
er
{
typedef
struct
SLocal
Merg
er
{
SLocalDataSource
**
pLocalDataSrc
;
int32_t
numOfBuffer
;
int32_t
numOfCompleted
;
...
...
@@ -62,7 +62,7 @@ typedef struct SLocalReducer {
bool
discard
;
int32_t
offset
;
// limit offset value
bool
orderPrjOnSTable
;
// projection query on stable
}
SLocal
Reduc
er
;
}
SLocal
Merg
er
;
typedef
struct
SRetrieveSupport
{
tExtMemBuffer
**
pExtMemBuffer
;
// for build loser tree
...
...
@@ -89,10 +89,10 @@ int32_t tscFlushTmpBuffer(tExtMemBuffer *pMemoryBuf, tOrderDescriptor *pDesc, tF
/*
* create local reducer to launch the second-stage reduce process at client site
*/
void
tscCreateLocal
Reduc
er
(
tExtMemBuffer
**
pMemBuffer
,
int32_t
numOfBuffer
,
tOrderDescriptor
*
pDesc
,
void
tscCreateLocal
Merg
er
(
tExtMemBuffer
**
pMemBuffer
,
int32_t
numOfBuffer
,
tOrderDescriptor
*
pDesc
,
SColumnModel
*
finalModel
,
SColumnModel
*
pFFModel
,
SSqlObj
*
pSql
);
void
tscDestroyLocal
Reduc
er
(
SSqlObj
*
pSql
);
void
tscDestroyLocal
Merg
er
(
SSqlObj
*
pSql
);
int32_t
tscDoLocalMerge
(
SSqlObj
*
pSql
);
...
...
src/client/inc/tscUtil.h
浏览文件 @
2d21f1ec
...
...
@@ -98,8 +98,7 @@ static FORCE_INLINE SQueryInfo* tscGetQueryInfoDetail(SSqlCmd* pCmd, int32_t sub
return
pCmd
->
pQueryInfo
[
subClauseIndex
];
}
int32_t
tscCreateDataBlock
(
size_t
initialSize
,
int32_t
rowSize
,
int32_t
startOffset
,
const
char
*
name
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
);
int32_t
tscCreateDataBlock
(
size_t
initialSize
,
int32_t
rowSize
,
int32_t
startOffset
,
SName
*
name
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
);
void
tscDestroyDataBlock
(
STableDataBlocks
*
pDataBlock
);
void
tscSortRemoveDataBlockDupRows
(
STableDataBlocks
*
dataBuf
);
...
...
@@ -111,7 +110,7 @@ void* tscDestroyBlockHashTable(SHashObj* pBlockHashTable);
int32_t
tscCopyDataBlockToPayload
(
SSqlObj
*
pSql
,
STableDataBlocks
*
pDataBlock
);
int32_t
tscMergeTableDataBlocks
(
SSqlObj
*
pSql
,
bool
freeBlockMap
);
int32_t
tscGetDataBlockFromList
(
SHashObj
*
pHashList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
const
char
*
tableId
,
STableMeta
*
pTableMeta
,
int32_t
tscGetDataBlockFromList
(
SHashObj
*
pHashList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
SName
*
pName
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
,
SArray
*
pBlockList
);
/**
...
...
@@ -142,10 +141,6 @@ void tscClearInterpInfo(SQueryInfo* pQueryInfo);
bool
tscIsInsertData
(
char
*
sqlstr
);
/* use for keep current db info temporarily, for handle table with db prefix */
// todo remove it
void
tscGetDBInfoFromTableFullName
(
char
*
tableId
,
char
*
db
);
int
tscAllocPayload
(
SSqlCmd
*
pCmd
,
int
size
);
TAOS_FIELD
tscCreateField
(
int8_t
type
,
const
char
*
name
,
int16_t
bytes
);
...
...
@@ -215,7 +210,7 @@ SQueryInfo *tscGetQueryInfoDetailSafely(SSqlCmd *pCmd, int32_t subClauseIndex);
void
tscClearTableMetaInfo
(
STableMetaInfo
*
pTableMetaInfo
);
STableMetaInfo
*
tscAddTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
const
char
*
name
,
STableMeta
*
pTableMeta
,
STableMetaInfo
*
tscAddTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
SName
*
name
,
STableMeta
*
pTableMeta
,
SVgroupsInfo
*
vgroupList
,
SArray
*
pTagCols
,
SArray
*
pVgroupTables
);
STableMetaInfo
*
tscAddEmptyMetaInfo
(
SQueryInfo
*
pQueryInfo
);
...
...
@@ -225,7 +220,7 @@ void tscInitQueryInfo(SQueryInfo* pQueryInfo);
void
tscClearSubqueryInfo
(
SSqlCmd
*
pCmd
);
void
tscFreeVgroupTableInfo
(
SArray
*
pVgroupTables
);
SArray
*
tscVgroupTableInfo
Clone
(
SArray
*
pVgroupTables
);
SArray
*
tscVgroupTableInfo
Dup
(
SArray
*
pVgroupTables
);
void
tscRemoveVgroupTableGroup
(
SArray
*
pVgroupTable
,
int32_t
index
);
void
tscVgroupTableCopy
(
SVgroupTableInfo
*
info
,
SVgroupTableInfo
*
pInfo
);
...
...
@@ -292,7 +287,7 @@ uint32_t tscGetTableMetaSize(STableMeta* pTableMeta);
CChildTableMeta
*
tscCreateChildMeta
(
STableMeta
*
pTableMeta
);
uint32_t
tscGetTableMetaMaxSize
();
int32_t
tscCreateTableMetaFromCChildMeta
(
STableMeta
*
pChild
,
const
char
*
name
);
STableMeta
*
tscTableMeta
Clone
(
STableMeta
*
pTableMeta
);
STableMeta
*
tscTableMeta
Dup
(
STableMeta
*
pTableMeta
);
void
*
malloc_throw
(
size_t
size
);
...
...
src/client/inc/tsclient.h
浏览文件 @
2d21f1ec
...
...
@@ -39,7 +39,7 @@ extern "C" {
// forward declaration
struct
SSqlInfo
;
struct
SLocal
Reduc
er
;
struct
SLocal
Merg
er
;
// data source from sql string or from file
enum
{
...
...
@@ -67,7 +67,7 @@ typedef struct CChildTableMeta {
int32_t
vgId
;
STableId
id
;
uint8_t
tableType
;
char
sTableName
[
TSDB_TABLE_FNAME_LEN
];
char
sTableName
[
TSDB_TABLE_FNAME_LEN
];
//super table name, not full name
}
CChildTableMeta
;
typedef
struct
STableMeta
{
...
...
@@ -91,7 +91,7 @@ typedef struct STableMetaInfo {
* 2. keep the vgroup index for multi-vnode insertion
*/
int32_t
vgroupIndex
;
char
name
[
TSDB_TABLE_FNAME_LEN
];
// (super) table name
SName
name
;
char
aliasName
[
TSDB_TABLE_NAME_LEN
];
// alias name of table specified in query sql
SArray
*
tagColList
;
// SArray<SColumn*>, involved tag columns
}
STableMetaInfo
;
...
...
@@ -142,7 +142,7 @@ typedef struct SCond {
}
SCond
;
typedef
struct
SJoinNode
{
char
table
Id
[
TSDB_TABLE_FNAME_LEN
];
char
table
Name
[
TSDB_TABLE_FNAME_LEN
];
uint64_t
uid
;
int16_t
tagColId
;
}
SJoinNode
;
...
...
@@ -176,7 +176,7 @@ typedef struct SParamInfo {
}
SParamInfo
;
typedef
struct
STableDataBlocks
{
char
tableName
[
TSDB_TABLE_FNAME_LEN
]
;
SName
tableName
;
int8_t
tsSource
;
// where does the UNIX timestamp come from, server or client
bool
ordered
;
// if current rows are ordered or not
int64_t
vgId
;
// virtual group id
...
...
@@ -254,7 +254,7 @@ typedef struct {
int8_t
submitSchema
;
// submit block is built with table schema
STagData
tagData
;
// NOTE: pTagData->data is used as a variant length array
char
**
pTableNameList
;
// all involved tableMeta list of current insert sql statement.
SName
**
pTableNameList
;
// all involved tableMeta list of current insert sql statement.
int32_t
numOfTables
;
SHashObj
*
pTableBlockHashList
;
// data block for each table
...
...
@@ -292,7 +292,7 @@ typedef struct {
SColumnIndex
*
pColumnIndex
;
SArithmeticSupport
*
pArithSup
;
// support the arithmetic expression calculation on agg functions
struct
SLocal
Reducer
*
pLocalReduc
er
;
struct
SLocal
Merger
*
pLocalMerg
er
;
}
SSqlRes
;
typedef
struct
STscObj
{
...
...
@@ -436,7 +436,7 @@ void waitForQueryRsp(void *param, TAOS_RES *tres, int code);
void
doAsyncQuery
(
STscObj
*
pObj
,
SSqlObj
*
pSql
,
__async_cb_func_t
fp
,
void
*
param
,
const
char
*
sqlstr
,
size_t
sqlLen
);
void
tsc
ProcessMultiVnodesImport
FromFile
(
SSqlObj
*
pSql
);
void
tsc
ImportData
FromFile
(
SSqlObj
*
pSql
);
void
tscInitResObjForLocalQuery
(
SSqlObj
*
pObj
,
int32_t
numOfRes
,
int32_t
rowLen
);
bool
tscIsUpdateQuery
(
SSqlObj
*
pSql
);
bool
tscHasReachLimitation
(
SQueryInfo
*
pQueryInfo
,
SSqlRes
*
pRes
);
...
...
src/client/src/tscLocal.c
浏览文件 @
2d21f1ec
...
...
@@ -569,10 +569,12 @@ static int32_t tscRebuildDDLForSubTable(SSqlObj *pSql, const char *tableName, ch
}
char
fullName
[
TSDB_TABLE_FNAME_LEN
*
2
]
=
{
0
};
extractDBName
(
pTableMetaInfo
->
name
,
fullName
);
tNameGetDbName
(
&
pTableMetaInfo
->
name
,
fullName
);
extractTableName
(
pMeta
->
sTableName
,
param
->
sTableName
);
snprintf
(
fullName
+
strlen
(
fullName
),
TSDB_TABLE_FNAME_LEN
-
strlen
(
fullName
),
".%s"
,
param
->
sTableName
);
extractTableName
(
pTableMetaInfo
->
name
,
param
->
buf
);
strncpy
(
param
->
buf
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
),
TSDB_TABLE_NAME_LEN
);
param
->
pParentSql
=
pSql
;
param
->
pInterSql
=
pInterSql
;
...
...
@@ -602,6 +604,7 @@ static int32_t tscRebuildDDLForSubTable(SSqlObj *pSql, const char *tableName, ch
return
TSDB_CODE_TSC_ACTION_IN_PROGRESS
;
}
static
int32_t
tscRebuildDDLForNormalTable
(
SSqlObj
*
pSql
,
const
char
*
tableName
,
char
*
ddl
)
{
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
&
pSql
->
cmd
,
0
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
...
...
@@ -675,8 +678,7 @@ static int32_t tscProcessShowCreateTable(SSqlObj *pSql) {
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
assert
(
pTableMetaInfo
->
pTableMeta
!=
NULL
);
char
tableName
[
TSDB_TABLE_NAME_LEN
]
=
{
0
};
extractTableName
(
pTableMetaInfo
->
name
,
tableName
);
const
char
*
tableName
=
tNameGetTableName
(
&
pTableMetaInfo
->
name
);
char
*
result
=
(
char
*
)
calloc
(
1
,
TSDB_MAX_BINARY_LEN
);
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
@@ -712,7 +714,9 @@ static int32_t tscProcessShowCreateDatabase(SSqlObj *pSql) {
free
(
pInterSql
);
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
extractTableName
(
pTableMetaInfo
->
name
,
param
->
buf
);
strncpy
(
param
->
buf
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
),
TSDB_TABLE_NAME_LEN
);
param
->
pParentSql
=
pSql
;
param
->
pInterSql
=
pInterSql
;
param
->
fp
=
tscRebuildCreateDBStatement
;
...
...
src/client/src/tscLocalMerge.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/client/src/tscParseInsert.c
浏览文件 @
2d21f1ec
...
...
@@ -703,7 +703,7 @@ static int32_t doParseInsertStatement(SSqlCmd* pCmd, char **str, SParsedDataColI
STableDataBlocks
*
dataBuf
=
NULL
;
int32_t
ret
=
tscGetDataBlockFromList
(
pCmd
->
pTableBlockHashList
,
pTableMeta
->
id
.
uid
,
TSDB_DEFAULT_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
tinfo
.
rowSize
,
pTableMetaInfo
->
name
,
pTableMeta
,
&
dataBuf
,
NULL
);
sizeof
(
SSubmitBlk
),
tinfo
.
rowSize
,
&
pTableMetaInfo
->
name
,
pTableMeta
,
&
dataBuf
,
NULL
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
...
...
@@ -813,26 +813,26 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
tscAddEmptyMetaInfo
(
pQueryInfo
);
}
STableMetaInfo
*
pSTableMet
erMet
aInfo
=
tscGetMetaInfo
(
pQueryInfo
,
STABLE_INDEX
);
code
=
tscSetTableFullName
(
pSTableMet
erMet
aInfo
,
&
sToken
,
pSql
);
STableMetaInfo
*
pSTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
STABLE_INDEX
);
code
=
tscSetTableFullName
(
pSTableMetaInfo
,
&
sToken
,
pSql
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
t
strncpy
(
pCmd
->
tagData
.
name
,
pSTableMeterMetaInfo
->
name
,
sizeof
(
pCmd
->
tagData
.
name
)
);
t
NameExtractFullName
(
&
pSTableMetaInfo
->
name
,
pCmd
->
tagData
.
name
);
pCmd
->
tagData
.
dataLen
=
0
;
code
=
tscGetTableMeta
(
pSql
,
pSTableMet
erMet
aInfo
);
code
=
tscGetTableMeta
(
pSql
,
pSTableMetaInfo
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
if
(
!
UTIL_TABLE_IS_SUPER_TABLE
(
pSTableMet
erMet
aInfo
))
{
if
(
!
UTIL_TABLE_IS_SUPER_TABLE
(
pSTableMetaInfo
))
{
return
tscInvalidSQLErrMsg
(
pCmd
->
payload
,
"create table only from super table is allowed"
,
sToken
.
z
);
}
SSchema
*
pTagSchema
=
tscGetTableTagSchema
(
pSTableMet
erMet
aInfo
->
pTableMeta
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pSTableMet
erMet
aInfo
->
pTableMeta
);
SSchema
*
pTagSchema
=
tscGetTableTagSchema
(
pSTableMetaInfo
->
pTableMeta
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pSTableMetaInfo
->
pTableMeta
);
index
=
0
;
sToken
=
tStrGetToken
(
sql
,
&
index
,
false
,
0
,
NULL
);
...
...
@@ -840,7 +840,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
SParsedDataColInfo
spd
=
{
0
};
uint8_t
numOfTags
=
tscGetNumOfTags
(
pSTableMet
erMet
aInfo
->
pTableMeta
);
uint8_t
numOfTags
=
tscGetNumOfTags
(
pSTableMetaInfo
->
pTableMeta
);
spd
.
numOfCols
=
numOfTags
;
// if specify some tags column
...
...
@@ -1406,39 +1406,38 @@ typedef struct SImportFileSupport {
FILE
*
fp
;
}
SImportFileSupport
;
static
void
parseFileSendDataBlock
(
void
*
param
,
TAOS_RES
*
tres
,
int
code
)
{
static
void
parseFileSendDataBlock
(
void
*
param
,
TAOS_RES
*
tres
,
int
32_t
numOfRows
)
{
assert
(
param
!=
NULL
&&
tres
!=
NULL
);
char
*
tokenBuf
=
NULL
;
size_t
n
=
0
;
ssize_t
readLen
=
0
;
char
*
line
=
NULL
;
int32_t
count
=
0
;
int32_t
maxRows
=
0
;
FILE
*
fp
=
NULL
;
SSqlObj
*
pSql
=
tres
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SImportFileSupport
*
pSupporter
=
(
SImportFileSupport
*
)
param
;
SImportFileSupport
*
pSupporter
=
(
SImportFileSupport
*
)
param
;
SSqlObj
*
pParentSql
=
pSupporter
->
pSql
;
FILE
*
fp
=
pSupporter
->
fp
;
fp
=
pSupporter
->
fp
;
if
(
taos_errno
(
pSql
)
!=
TSDB_CODE_SUCCESS
)
{
// handle error
assert
(
taos_errno
(
pSql
)
==
code
);
int32_t
code
=
pSql
->
res
.
code
;
do
{
// retry parse data from file and import data from the begining again
if
(
code
==
TSDB_CODE_TDB_TABLE_RECONFIGURE
)
{
assert
(
pSql
->
res
.
numOfRows
==
0
);
int32_t
errc
=
fseek
(
fp
,
0
,
SEEK_SET
);
if
(
errc
<
0
)
{
int32_t
ret
=
fseek
(
fp
,
0
,
SEEK_SET
);
if
(
ret
<
0
)
{
tscError
(
"%p failed to seek SEEK_SET since:%s"
,
pSql
,
tstrerror
(
errno
));
}
else
{
break
;
}
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_error
;
}
taos_free_result
(
pSql
);
tfree
(
pSupporter
);
fclose
(
fp
);
pParentSql
->
res
.
code
=
code
;
tscAsyncResultOnError
(
pParentSql
);
return
;
}
while
(
0
);
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
}
// accumulate the total submit records
...
...
@@ -1452,28 +1451,32 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int code) {
SParsedDataColInfo
spd
=
{.
numOfCols
=
tinfo
.
numOfColumns
};
tscSetAssignedColumnInfo
(
&
spd
,
pSchema
,
tinfo
.
numOfColumns
);
size_t
n
=
0
;
ssize_t
readLen
=
0
;
char
*
line
=
NULL
;
int32_t
count
=
0
;
int32_t
maxRows
=
0
;
tfree
(
pCmd
->
pTableNameList
);
pCmd
->
pDataBlocks
=
tscDestroyBlockArrayList
(
pCmd
->
pDataBlocks
);
if
(
pCmd
->
pTableBlockHashList
==
NULL
)
{
pCmd
->
pTableBlockHashList
=
taosHashInit
(
16
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
false
);
if
(
pCmd
->
pTableBlockHashList
==
NULL
)
{
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
_error
;
}
}
STableDataBlocks
*
pTableDataBlock
=
NULL
;
int32_t
ret
=
tscGetDataBlockFromList
(
pCmd
->
pTableBlockHashList
,
pTableMeta
->
id
.
uid
,
TSDB_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
tinfo
.
rowSize
,
pTableMetaInfo
->
name
,
pTableMeta
,
&
pTableDataBlock
,
NULL
);
int32_t
ret
=
tscGetDataBlockFromList
(
pCmd
->
pTableBlockHashList
,
pTableMeta
->
id
.
uid
,
TSDB_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
tinfo
.
rowSize
,
&
pTableMetaInfo
->
name
,
pTableMeta
,
&
pTableDataBlock
,
NULL
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
// return ret;
pParentSql
->
res
.
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
_error
;
}
tscAllocateMemIfNeed
(
pTableDataBlock
,
tinfo
.
rowSize
,
&
maxRows
);
char
*
tokenBuf
=
calloc
(
1
,
4096
);
tokenBuf
=
calloc
(
1
,
TSDB_MAX_BYTES_PER_ROW
);
if
(
tokenBuf
==
NULL
)
{
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
_error
;
}
while
((
readLen
=
tgetline
(
&
line
,
&
n
,
fp
))
!=
-
1
)
{
if
((
'\r'
==
line
[
readLen
-
1
])
||
(
'\n'
==
line
[
readLen
-
1
]))
{
...
...
@@ -1501,16 +1504,17 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int code) {
}
tfree
(
tokenBuf
);
free
(
line
);
t
free
(
line
);
pParentSql
->
res
.
code
=
code
;
if
(
code
==
TSDB_CODE_SUCCESS
)
{
if
(
count
>
0
)
{
code
=
doPackSendDataBlock
(
pSql
,
count
,
pTableDataBlock
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
pParentSql
->
res
.
code
=
code
;
tscAsyncResultOnError
(
pParentSql
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
return
;
}
else
{
goto
_error
;
}
}
else
{
taos_free_result
(
pSql
);
tfree
(
pSupporter
);
...
...
@@ -1519,12 +1523,23 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int code) {
pParentSql
->
fp
=
pParentSql
->
fetchFp
;
// all data has been sent to vnode, call user function
int32_t
v
=
(
pParentSql
->
res
.
code
!=
TSDB_CODE_SUCCESS
)
?
pParentSql
->
res
.
code
:
(
int32_t
)
pParentSql
->
res
.
numOfRows
;
int32_t
v
=
(
code
!=
TSDB_CODE_SUCCESS
)
?
code
:
(
int32_t
)
pParentSql
->
res
.
numOfRows
;
(
*
pParentSql
->
fp
)(
pParentSql
->
param
,
pParentSql
,
v
);
return
;
}
}
_error:
tfree
(
tokenBuf
);
tfree
(
line
);
taos_free_result
(
pSql
);
tfree
(
pSupporter
);
fclose
(
fp
);
tscAsyncResultOnError
(
pParentSql
);
}
void
tsc
ProcessMultiVnodesImport
FromFile
(
SSqlObj
*
pSql
)
{
void
tsc
ImportData
FromFile
(
SSqlObj
*
pSql
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
if
(
pCmd
->
command
!=
TSDB_SQL_INSERT
)
{
return
;
...
...
@@ -1543,12 +1558,11 @@ void tscProcessMultiVnodesImportFromFile(SSqlObj *pSql) {
tfree
(
pSupporter
);
tscAsyncResultOnError
(
pSql
);
return
;
}
pSupporter
->
pSql
=
pSql
;
pSupporter
->
fp
=
fp
;
parseFileSendDataBlock
(
pSupporter
,
pNew
,
0
);
parseFileSendDataBlock
(
pSupporter
,
pNew
,
TSDB_CODE_SUCCESS
);
}
src/client/src/tscPrepare.c
浏览文件 @
2d21f1ec
...
...
@@ -707,7 +707,7 @@ static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
int32_t
ret
=
tscGetDataBlockFromList
(
pCmd
->
pTableBlockHashList
,
pTableMeta
->
id
.
uid
,
TSDB_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
pTableMeta
->
tableInfo
.
rowSize
,
pTableMetaInfo
->
name
,
pTableMeta
,
&
pBlock
,
NULL
);
pTableMeta
->
tableInfo
.
rowSize
,
&
pTableMetaInfo
->
name
,
pTableMeta
,
&
pBlock
,
NULL
);
if
(
ret
!=
0
)
{
// todo handle error
}
...
...
@@ -790,7 +790,7 @@ static int insertStmtExecute(STscStmt* stmt) {
int32_t
ret
=
tscGetDataBlockFromList
(
pCmd
->
pTableBlockHashList
,
pTableMeta
->
id
.
uid
,
TSDB_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
pTableMeta
->
tableInfo
.
rowSize
,
pTableMetaInfo
->
name
,
pTableMeta
,
&
pBlock
,
NULL
);
pTableMeta
->
tableInfo
.
rowSize
,
&
pTableMetaInfo
->
name
,
pTableMeta
,
&
pBlock
,
NULL
);
assert
(
ret
==
0
);
pBlock
->
size
=
sizeof
(
SSubmitBlk
)
+
pCmd
->
batchSize
*
pBlock
->
rowSize
;
SSubmitBlk
*
pBlk
=
(
SSubmitBlk
*
)
pBlock
->
pData
;
...
...
src/client/src/tscSQLParser.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/client/src/tscSchemaUtil.c
浏览文件 @
2d21f1ec
...
...
@@ -106,6 +106,7 @@ STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg) {
pTableMeta
->
sversion
=
pTableMetaMsg
->
sversion
;
pTableMeta
->
tversion
=
pTableMetaMsg
->
tversion
;
tstrncpy
(
pTableMeta
->
sTableName
,
pTableMetaMsg
->
sTableName
,
TSDB_TABLE_FNAME_LEN
);
memcpy
(
pTableMeta
->
schema
,
pTableMetaMsg
->
schema
,
schemaSize
);
...
...
src/client/src/tscServer.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/client/src/tscSql.c
浏览文件 @
2d21f1ec
...
...
@@ -995,7 +995,8 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
return
code
;
}
if
(
payloadLen
+
strlen
(
pTableMetaInfo
->
name
)
+
128
>=
pCmd
->
allocSize
)
{
int32_t
xlen
=
tNameLen
(
&
pTableMetaInfo
->
name
);
if
(
payloadLen
+
xlen
+
128
>=
pCmd
->
allocSize
)
{
char
*
pNewMem
=
realloc
(
pCmd
->
payload
,
pCmd
->
allocSize
+
tblListLen
);
if
(
pNewMem
==
NULL
)
{
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
...
...
@@ -1008,7 +1009,9 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
pMsg
=
pCmd
->
payload
;
}
payloadLen
+=
sprintf
(
pMsg
+
payloadLen
,
"%s,"
,
pTableMetaInfo
->
name
);
char
n
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
n
);
payloadLen
+=
sprintf
(
pMsg
+
payloadLen
,
"%s,"
,
n
);
}
*
(
pMsg
+
payloadLen
)
=
'\0'
;
...
...
src/client/src/tscStream.c
浏览文件 @
2d21f1ec
...
...
@@ -104,7 +104,7 @@ static void doLaunchQuery(void* param, TAOS_RES* tres, int32_t code) {
// failed to get table Meta or vgroup list, retry in 10sec.
if
(
code
==
TSDB_CODE_SUCCESS
)
{
tscTansformSQLFuncForSTableQuery
(
pQueryInfo
);
tscDebug
(
"%p stream:%p, start stream query on:%s"
,
pSql
,
pStream
,
pTableMetaInfo
->
name
);
tscDebug
(
"%p stream:%p, start stream query on:%s"
,
pSql
,
pStream
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
)
);
pSql
->
fp
=
tscProcessStreamQueryCallback
;
pSql
->
fetchFp
=
tscProcessStreamQueryCallback
;
...
...
@@ -191,8 +191,9 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pStream
->
pSql
->
cmd
,
0
,
0
);
char
*
name
=
pTableMetaInfo
->
name
;
taosHashRemove
(
tscTableMetaInfo
,
name
,
strnlen
(
name
,
TSDB_TABLE_FNAME_LEN
));
assert
(
0
);
// char* name = pTableMetaInfo->name;
// taosHashRemove(tscTableMetaInfo, name, strnlen(name, TSDB_TABLE_FNAME_LEN));
pTableMetaInfo
->
vgroupList
=
tscVgroupInfoClear
(
pTableMetaInfo
->
vgroupList
);
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retryDelay
);
...
...
@@ -291,8 +292,8 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
pStream
->
stime
+=
1
;
}
tscDebug
(
"%p stream:%p, query on:%s, fetch result completed, fetched rows:%"
PRId64
,
pSql
,
pStream
,
pTableMetaInfo
->
name
,
pStream
->
numOfRes
);
//
tscDebug("%p stream:%p, query on:%s, fetch result completed, fetched rows:%" PRId64, pSql, pStream, pTableMetaInfo->name,
//
pStream->numOfRes);
tfree
(
pTableMetaInfo
->
pTableMeta
);
...
...
@@ -555,8 +556,8 @@ static void tscCreateStream(void *param, TAOS_RES *res, int code) {
taosTmrReset
(
tscProcessStreamTimer
,
(
int32_t
)
starttime
,
pStream
,
tscTmr
,
&
pStream
->
pTimer
);
tscDebug
(
"%p stream:%p is opened, query on:%s, interval:%"
PRId64
", sliding:%"
PRId64
", first launched in:%"
PRId64
", sql:%s"
,
pSql
,
pStream
,
pTableMetaInfo
->
name
,
pStream
->
interval
.
interval
,
pStream
->
interval
.
sliding
,
starttime
,
pSql
->
sqlstr
);
//
tscDebug("%p stream:%p is opened, query on:%s, interval:%" PRId64 ", sliding:%" PRId64 ", first launched in:%" PRId64 ", sql:%s", pSql,
//
pStream, pTableMetaInfo->name, pStream->interval.interval, pStream->interval.sliding, starttime, pSql->sqlstr);
}
void
tscSetStreamDestTable
(
SSqlStream
*
pStream
,
const
char
*
dstTable
)
{
...
...
src/client/src/tscSubquery.c
浏览文件 @
2d21f1ec
...
...
@@ -534,7 +534,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
size_t
numOfCols
=
taosArrayGetSize
(
pQueryInfo
->
colList
);
tscDebug
(
"%p subquery:%p tableIndex:%d, vgroupIndex:%d, type:%d, exprInfo:%"
PRIzu
", colList:%"
PRIzu
", fieldsInfo:%d, name:%s"
,
pSql
,
pNew
,
0
,
pTableMetaInfo
->
vgroupIndex
,
pQueryInfo
->
type
,
taosArrayGetSize
(
pQueryInfo
->
exprList
),
numOfCols
,
pQueryInfo
->
fieldsInfo
.
numOfOutput
,
pTableMetaInfo
->
name
);
numOfCols
,
pQueryInfo
->
fieldsInfo
.
numOfOutput
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
)
);
}
//prepare the subqueries object failed, abort
...
...
@@ -730,7 +730,7 @@ static void issueTSCompQuery(SSqlObj* pSql, SJoinSupporter* pSupporter, SSqlObj*
"%p subquery:%p tableIndex:%d, vgroupIndex:%d, numOfVgroups:%d, type:%d, ts_comp query to retrieve timestamps, "
"numOfExpr:%"
PRIzu
", colList:%"
PRIzu
", numOfOutputFields:%d, name:%s"
,
pParent
,
pSql
,
0
,
pTableMetaInfo
->
vgroupIndex
,
pTableMetaInfo
->
vgroupList
->
numOfVgroups
,
pQueryInfo
->
type
,
tscSqlExprNumOfExprs
(
pQueryInfo
),
numOfCols
,
pQueryInfo
->
fieldsInfo
.
numOfOutput
,
pTableMetaInfo
->
name
);
tscSqlExprNumOfExprs
(
pQueryInfo
),
numOfCols
,
pQueryInfo
->
fieldsInfo
.
numOfOutput
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
)
);
tscProcessSql
(
pSql
);
}
...
...
@@ -951,10 +951,10 @@ static void tidTagRetrieveCallback(void* param, TAOS_RES* tres, int32_t numOfRow
tscBuildVgroupTableInfo
(
pParentSql
,
pTableMetaInfo2
,
s2
);
SSqlObj
*
psub1
=
pParentSql
->
pSubs
[
0
];
((
SJoinSupporter
*
)
psub1
->
param
)
->
pVgroupTables
=
tscVgroupTableInfo
Clone
(
pTableMetaInfo1
->
pVgroupTables
);
((
SJoinSupporter
*
)
psub1
->
param
)
->
pVgroupTables
=
tscVgroupTableInfo
Dup
(
pTableMetaInfo1
->
pVgroupTables
);
SSqlObj
*
psub2
=
pParentSql
->
pSubs
[
1
];
((
SJoinSupporter
*
)
psub2
->
param
)
->
pVgroupTables
=
tscVgroupTableInfo
Clone
(
pTableMetaInfo2
->
pVgroupTables
);
((
SJoinSupporter
*
)
psub2
->
param
)
->
pVgroupTables
=
tscVgroupTableInfo
Dup
(
pTableMetaInfo2
->
pVgroupTables
);
pParentSql
->
subState
.
numOfSub
=
2
;
...
...
@@ -1636,7 +1636,7 @@ int32_t tscCreateJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSupporter
"%p subquery:%p tableIndex:%d, vgroupIndex:%d, type:%d, transfer to tid_tag query to retrieve (tableId, tags), "
"exprInfo:%"
PRIzu
", colList:%"
PRIzu
", fieldsInfo:%d, tagIndex:%d, name:%s"
,
pSql
,
pNew
,
tableIndex
,
pTableMetaInfo
->
vgroupIndex
,
pNewQueryInfo
->
type
,
tscSqlExprNumOfExprs
(
pNewQueryInfo
),
numOfCols
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
colIndex
.
columnIndex
,
pNewQueryInfo
->
pTableMetaInfo
[
0
]
->
name
);
numOfCols
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
colIndex
.
columnIndex
,
tNameGetTableName
(
&
pNewQueryInfo
->
pTableMetaInfo
[
0
]
->
name
)
);
}
else
{
SSchema
colSchema
=
{.
type
=
TSDB_DATA_TYPE_BINARY
,
.
bytes
=
1
};
SColumnIndex
colIndex
=
{
0
,
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
...
...
@@ -1671,7 +1671,7 @@ int32_t tscCreateJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSupporter
"%p subquery:%p tableIndex:%d, vgroupIndex:%d, type:%u, transfer to ts_comp query to retrieve timestamps, "
"exprInfo:%"
PRIzu
", colList:%"
PRIzu
", fieldsInfo:%d, name:%s"
,
pSql
,
pNew
,
tableIndex
,
pTableMetaInfo
->
vgroupIndex
,
pNewQueryInfo
->
type
,
tscSqlExprNumOfExprs
(
pNewQueryInfo
),
numOfCols
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
pNewQueryInfo
->
pTableMetaInfo
[
0
]
->
name
);
numOfCols
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
tNameGetTableName
(
&
pNewQueryInfo
->
pTableMetaInfo
[
0
]
->
name
)
);
}
}
else
{
assert
(
0
);
...
...
@@ -2133,7 +2133,7 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
SQueryInfo
*
pPQueryInfo
=
tscGetQueryInfoDetail
(
&
pParentSql
->
cmd
,
0
);
tscClearInterpInfo
(
pPQueryInfo
);
tscCreateLocal
Reduc
er
(
trsupport
->
pExtMemBuffer
,
pState
->
numOfSub
,
pDesc
,
trsupport
->
pFinalColModel
,
trsupport
->
pFFColModel
,
pParentSql
);
tscCreateLocal
Merg
er
(
trsupport
->
pExtMemBuffer
,
pState
->
numOfSub
,
pDesc
,
trsupport
->
pFinalColModel
,
trsupport
->
pFFColModel
,
pParentSql
);
tscDebug
(
"%p build loser tree completed"
,
pParentSql
);
pParentSql
->
res
.
precision
=
pSql
->
res
.
precision
;
...
...
@@ -2421,7 +2421,7 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
tscFreeQueryInfo
(
&
pSql
->
cmd
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetailSafely
(
&
pSql
->
cmd
,
0
);
STableMetaInfo
*
pMasterTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pParentObj
->
cmd
,
pSql
->
cmd
.
clauseIndex
,
0
);
tscAddTableMetaInfo
(
pQueryInfo
,
pMasterTableMetaInfo
->
name
,
NULL
,
NULL
,
NULL
,
NULL
);
tscAddTableMetaInfo
(
pQueryInfo
,
&
pMasterTableMetaInfo
->
name
,
NULL
,
NULL
,
NULL
,
NULL
);
subquerySetState
(
pSql
,
&
pParentObj
->
subState
,
i
,
0
);
...
...
@@ -2434,7 +2434,8 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
tscDebug
(
"%p cleanup %d tableMeta in hashTable"
,
pParentObj
,
pParentObj
->
cmd
.
numOfTables
);
for
(
int32_t
i
=
0
;
i
<
pParentObj
->
cmd
.
numOfTables
;
++
i
)
{
char
*
name
=
pParentObj
->
cmd
.
pTableNameList
[
i
];
char
name
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameExtractFullName
(
pParentObj
->
cmd
.
pTableNameList
[
i
],
name
);
taosHashRemove
(
tscTableMetaInfo
,
name
,
strnlen
(
name
,
TSDB_TABLE_FNAME_LEN
));
}
...
...
src/client/src/tscUtil.c
浏览文件 @
2d21f1ec
...
...
@@ -89,21 +89,6 @@ bool tscQueryTags(SQueryInfo* pQueryInfo) {
return
true
;
}
// todo refactor, extract methods and move the common module
void
tscGetDBInfoFromTableFullName
(
char
*
tableId
,
char
*
db
)
{
char
*
st
=
strstr
(
tableId
,
TS_PATH_DELIMITER
);
if
(
st
!=
NULL
)
{
char
*
end
=
strstr
(
st
+
1
,
TS_PATH_DELIMITER
);
if
(
end
!=
NULL
)
{
memcpy
(
db
,
tableId
,
(
end
-
tableId
));
db
[
end
-
tableId
]
=
0
;
return
;
}
}
db
[
0
]
=
0
;
}
bool
tscIsTwoStageSTableQuery
(
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
)
{
if
(
pQueryInfo
==
NULL
)
{
return
false
;
...
...
@@ -420,7 +405,7 @@ void tscResetSqlCmdObj(SSqlCmd* pCmd) {
}
void
tscFreeSqlResult
(
SSqlObj
*
pSql
)
{
tscDestroyLocal
Reduc
er
(
pSql
);
tscDestroyLocal
Merg
er
(
pSql
);
SSqlRes
*
pRes
=
&
pSql
->
res
;
tscDestroyResPointerInfo
(
pRes
);
...
...
@@ -612,15 +597,13 @@ int32_t tscCopyDataBlockToPayload(SSqlObj* pSql, STableDataBlocks* pDataBlock) {
// todo refactor
// set the correct table meta object, the table meta has been locked in pDataBlocks, so it must be in the cache
if
(
pTableMetaInfo
->
pTableMeta
!=
pDataBlock
->
pTableMeta
)
{
t
strncpy
(
pTableMetaInfo
->
name
,
pDataBlock
->
tableName
,
sizeof
(
pTableMetaInfo
->
name
)
);
t
NameAssign
(
&
pTableMetaInfo
->
name
,
&
pDataBlock
->
tableName
);
if
(
pTableMetaInfo
->
pTableMeta
!=
NULL
)
{
tfree
(
pTableMetaInfo
->
pTableMeta
);
}
pTableMetaInfo
->
pTableMeta
=
tscTableMetaClone
(
pDataBlock
->
pTableMeta
);
}
else
{
assert
(
strncmp
(
pTableMetaInfo
->
name
,
pDataBlock
->
tableName
,
tListLen
(
pDataBlock
->
tableName
))
==
0
);
pTableMetaInfo
->
pTableMeta
=
tscTableMetaDup
(
pDataBlock
->
pTableMeta
);
}
/*
...
...
@@ -655,7 +638,7 @@ int32_t tscCopyDataBlockToPayload(SSqlObj* pSql, STableDataBlocks* pDataBlock) {
* @param dataBlocks
* @return
*/
int32_t
tscCreateDataBlock
(
size_t
initialSize
,
int32_t
rowSize
,
int32_t
startOffset
,
const
char
*
name
,
int32_t
tscCreateDataBlock
(
size_t
initialSize
,
int32_t
rowSize
,
int32_t
startOffset
,
SName
*
name
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
)
{
STableDataBlocks
*
dataBuf
=
(
STableDataBlocks
*
)
calloc
(
1
,
sizeof
(
STableDataBlocks
));
if
(
dataBuf
==
NULL
)
{
...
...
@@ -683,18 +666,18 @@ int32_t tscCreateDataBlock(size_t initialSize, int32_t rowSize, int32_t startOff
dataBuf
->
size
=
startOffset
;
dataBuf
->
tsSource
=
-
1
;
t
strncpy
(
dataBuf
->
tableName
,
name
,
sizeof
(
dataBuf
->
tableName
)
);
t
NameAssign
(
&
dataBuf
->
tableName
,
name
);
//Here we keep the tableMeta to avoid it to be remove by other threads.
dataBuf
->
pTableMeta
=
tscTableMeta
Clone
(
pTableMeta
);
dataBuf
->
pTableMeta
=
tscTableMeta
Dup
(
pTableMeta
);
assert
(
initialSize
>
0
&&
pTableMeta
!=
NULL
&&
dataBuf
->
pTableMeta
!=
NULL
);
*
dataBlocks
=
dataBuf
;
return
TSDB_CODE_SUCCESS
;
}
int32_t
tscGetDataBlockFromList
(
SHashObj
*
pHashList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
const
char
*
tableId
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
,
SArray
*
pBlockList
)
{
int32_t
tscGetDataBlockFromList
(
SHashObj
*
pHashList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
SName
*
name
,
STableMeta
*
pTableMeta
,
STableDataBlocks
**
dataBlocks
,
SArray
*
pBlockList
)
{
*
dataBlocks
=
NULL
;
STableDataBlocks
**
t1
=
(
STableDataBlocks
**
)
taosHashGet
(
pHashList
,
(
const
char
*
)
&
id
,
sizeof
(
id
));
if
(
t1
!=
NULL
)
{
...
...
@@ -702,7 +685,7 @@ int32_t tscGetDataBlockFromList(SHashObj* pHashList, int64_t id, int32_t size, i
}
if
(
*
dataBlocks
==
NULL
)
{
int32_t
ret
=
tscCreateDataBlock
((
size_t
)
size
,
rowSize
,
startOffset
,
tableId
,
pTableMeta
,
dataBlocks
);
int32_t
ret
=
tscCreateDataBlock
((
size_t
)
size
,
rowSize
,
startOffset
,
name
,
pTableMeta
,
dataBlocks
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
...
...
@@ -803,7 +786,7 @@ static void extractTableNameList(SSqlCmd* pCmd, bool freeBlockMap) {
int32_t
i
=
0
;
while
(
p1
)
{
STableDataBlocks
*
pBlocks
=
*
p1
;
pCmd
->
pTableNameList
[
i
++
]
=
strndup
(
pBlocks
->
tableName
,
TSDB_TABLE_FNAME_LEN
);
pCmd
->
pTableNameList
[
i
++
]
=
tNameDup
(
&
pBlocks
->
tableName
);
p1
=
taosHashIterate
(
pCmd
->
pTableBlockHashList
,
p1
);
}
...
...
@@ -828,7 +811,7 @@ int32_t tscMergeTableDataBlocks(SSqlObj* pSql, bool freeBlockMap) {
STableDataBlocks
*
dataBuf
=
NULL
;
int32_t
ret
=
tscGetDataBlockFromList
(
pVnodeDataBlockHashList
,
pOneTableBlock
->
vgId
,
TSDB_PAYLOAD_SIZE
,
INSERT_HEAD_SIZE
,
0
,
pOneTableBlock
->
tableName
,
pOneTableBlock
->
pTableMeta
,
&
dataBuf
,
pVnodeDataBlockList
);
INSERT_HEAD_SIZE
,
0
,
&
pOneTableBlock
->
tableName
,
pOneTableBlock
->
pTableMeta
,
&
dataBuf
,
pVnodeDataBlockList
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
tscError
(
"%p failed to prepare the data block buffer for merging table data, code:%d"
,
pSql
,
ret
);
taosHashCleanup
(
pVnodeDataBlockHashList
);
...
...
@@ -862,7 +845,7 @@ int32_t tscMergeTableDataBlocks(SSqlObj* pSql, bool freeBlockMap) {
tscSortRemoveDataBlockDupRows
(
pOneTableBlock
);
char
*
ekey
=
(
char
*
)
pBlocks
->
data
+
pOneTableBlock
->
rowSize
*
(
pBlocks
->
numOfRows
-
1
);
tscDebug
(
"%p name:%s,
sid:%d rows:%d sversion:%d skey:%"
PRId64
", ekey:%"
PRId64
,
pSql
,
pOneTableBlock
->
tableName
,
tscDebug
(
"%p name:%s,
name:%d rows:%d sversion:%d skey:%"
PRId64
", ekey:%"
PRId64
,
pSql
,
tNameGetTableName
(
&
pOneTableBlock
->
tableName
)
,
pBlocks
->
tid
,
pBlocks
->
numOfRows
,
pBlocks
->
sversion
,
GET_INT64_VAL
(
pBlocks
->
data
),
GET_INT64_VAL
(
ekey
));
int32_t
len
=
pBlocks
->
numOfRows
*
(
pOneTableBlock
->
rowSize
+
expandSize
)
+
sizeof
(
STColumn
)
*
tscGetNumOfColumns
(
pOneTableBlock
->
pTableMeta
);
...
...
@@ -1310,7 +1293,7 @@ SColumn* tscColumnClone(const SColumn* src) {
dst
->
colIndex
=
src
->
colIndex
;
dst
->
numOfFilters
=
src
->
numOfFilters
;
dst
->
filterInfo
=
t
scFilterInfoClone
(
src
->
filterInfo
,
src
->
numOfFilters
);
dst
->
filterInfo
=
t
FilterInfoDup
(
src
->
filterInfo
,
src
->
numOfFilters
);
return
dst
;
}
...
...
@@ -1816,10 +1799,10 @@ void tscVgroupTableCopy(SVgroupTableInfo* info, SVgroupTableInfo* pInfo) {
info
->
vgInfo
.
epAddr
[
j
].
fqdn
=
strdup
(
pInfo
->
vgInfo
.
epAddr
[
j
].
fqdn
);
}
info
->
itemList
=
taosArray
Clone
(
pInfo
->
itemList
);
info
->
itemList
=
taosArray
Dup
(
pInfo
->
itemList
);
}
SArray
*
tscVgroupTableInfo
Clone
(
SArray
*
pVgroupTables
)
{
SArray
*
tscVgroupTableInfo
Dup
(
SArray
*
pVgroupTables
)
{
if
(
pVgroupTables
==
NULL
)
{
return
NULL
;
}
...
...
@@ -1850,7 +1833,7 @@ void clearAllTableMetaInfo(SQueryInfo* pQueryInfo) {
tfree
(
pQueryInfo
->
pTableMetaInfo
);
}
STableMetaInfo
*
tscAddTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
const
char
*
name
,
STableMeta
*
pTableMeta
,
STableMetaInfo
*
tscAddTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
SName
*
name
,
STableMeta
*
pTableMeta
,
SVgroupsInfo
*
vgroupList
,
SArray
*
pTagCols
,
SArray
*
pVgroupTables
)
{
void
*
pAlloc
=
realloc
(
pQueryInfo
->
pTableMetaInfo
,
(
pQueryInfo
->
numOfTables
+
1
)
*
POINTER_BYTES
);
if
(
pAlloc
==
NULL
)
{
...
...
@@ -1868,7 +1851,7 @@ STableMetaInfo* tscAddTableMetaInfo(SQueryInfo* pQueryInfo, const char* name, ST
pQueryInfo
->
pTableMetaInfo
[
pQueryInfo
->
numOfTables
]
=
pTableMetaInfo
;
if
(
name
!=
NULL
)
{
t
strncpy
(
pTableMetaInfo
->
name
,
name
,
sizeof
(
pTableMetaInfo
->
name
)
);
t
NameAssign
(
&
pTableMetaInfo
->
name
,
name
);
}
pTableMetaInfo
->
pTableMeta
=
pTableMeta
;
...
...
@@ -1887,7 +1870,7 @@ STableMetaInfo* tscAddTableMetaInfo(SQueryInfo* pQueryInfo, const char* name, ST
tscColumnListCopy
(
pTableMetaInfo
->
tagColList
,
pTagCols
,
-
1
);
}
pTableMetaInfo
->
pVgroupTables
=
tscVgroupTableInfo
Clone
(
pVgroupTables
);
pTableMetaInfo
->
pVgroupTables
=
tscVgroupTableInfo
Dup
(
pVgroupTables
);
pQueryInfo
->
numOfTables
+=
1
;
return
pTableMetaInfo
;
...
...
@@ -1965,7 +1948,7 @@ SSqlObj* createSimpleSubObj(SSqlObj* pSql, __async_cb_func_t fp, void* param, in
assert
(
pSql
->
cmd
.
clauseIndex
==
0
);
STableMetaInfo
*
pMasterTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pSql
->
cmd
,
pSql
->
cmd
.
clauseIndex
,
0
);
tscAddTableMetaInfo
(
pQueryInfo
,
pMasterTableMetaInfo
->
name
,
NULL
,
NULL
,
NULL
,
NULL
);
tscAddTableMetaInfo
(
pQueryInfo
,
&
pMasterTableMetaInfo
->
name
,
NULL
,
NULL
,
NULL
,
NULL
);
registerSqlObj
(
pNew
);
return
pNew
;
...
...
@@ -2070,7 +2053,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t
pNewQueryInfo
->
groupbyExpr
=
pQueryInfo
->
groupbyExpr
;
if
(
pQueryInfo
->
groupbyExpr
.
columnInfo
!=
NULL
)
{
pNewQueryInfo
->
groupbyExpr
.
columnInfo
=
taosArray
Clone
(
pQueryInfo
->
groupbyExpr
.
columnInfo
);
pNewQueryInfo
->
groupbyExpr
.
columnInfo
=
taosArray
Dup
(
pQueryInfo
->
groupbyExpr
.
columnInfo
);
if
(
pNewQueryInfo
->
groupbyExpr
.
columnInfo
==
NULL
)
{
terrno
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
_error
;
...
...
@@ -2121,27 +2104,26 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t
pNew
->
param
=
param
;
pNew
->
maxRetry
=
TSDB_MAX_REPLICA
;
char
*
name
=
pTableMetaInfo
->
name
;
STableMetaInfo
*
pFinalInfo
=
NULL
;
if
(
pPrevSql
==
NULL
)
{
STableMeta
*
pTableMeta
=
tscTableMeta
Clone
(
pTableMetaInfo
->
pTableMeta
);
STableMeta
*
pTableMeta
=
tscTableMeta
Dup
(
pTableMetaInfo
->
pTableMeta
);
assert
(
pTableMeta
!=
NULL
);
pFinalInfo
=
tscAddTableMetaInfo
(
pNewQueryInfo
,
name
,
pTableMeta
,
pTableMetaInfo
->
vgroupList
,
pFinalInfo
=
tscAddTableMetaInfo
(
pNewQueryInfo
,
&
pTableMetaInfo
->
name
,
pTableMeta
,
pTableMetaInfo
->
vgroupList
,
pTableMetaInfo
->
tagColList
,
pTableMetaInfo
->
pVgroupTables
);
}
else
{
// transfer the ownership of pTableMeta to the newly create sql object.
STableMetaInfo
*
pPrevInfo
=
tscGetTableMetaInfoFromCmd
(
&
pPrevSql
->
cmd
,
pPrevSql
->
cmd
.
clauseIndex
,
0
);
STableMeta
*
pPrevTableMeta
=
tscTableMeta
Clone
(
pPrevInfo
->
pTableMeta
);
STableMeta
*
pPrevTableMeta
=
tscTableMeta
Dup
(
pPrevInfo
->
pTableMeta
);
SVgroupsInfo
*
pVgroupsInfo
=
pPrevInfo
->
vgroupList
;
pFinalInfo
=
tscAddTableMetaInfo
(
pNewQueryInfo
,
name
,
pPrevTableMeta
,
pVgroupsInfo
,
pTableMetaInfo
->
tagColList
,
pFinalInfo
=
tscAddTableMetaInfo
(
pNewQueryInfo
,
&
pTableMetaInfo
->
name
,
pPrevTableMeta
,
pVgroupsInfo
,
pTableMetaInfo
->
tagColList
,
pTableMetaInfo
->
pVgroupTables
);
}
// this case cannot be happened
if
(
pFinalInfo
->
pTableMeta
==
NULL
)
{
tscError
(
"%p new subquery failed since no tableMeta, name:%s"
,
pSql
,
name
);
tscError
(
"%p new subquery failed since no tableMeta, name:%s"
,
pSql
,
tNameGetTableName
(
&
pTableMetaInfo
->
name
)
);
if
(
pPrevSql
!=
NULL
)
{
// pass the previous error to client
assert
(
pPrevSql
->
res
.
code
!=
TSDB_CODE_SUCCESS
);
...
...
@@ -2166,7 +2148,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t
"%p new subquery:%p, tableIndex:%d, vgroupIndex:%d, type:%d, exprInfo:%"
PRIzu
", colList:%"
PRIzu
","
"fieldInfo:%d, name:%s, qrang:%"
PRId64
" - %"
PRId64
" order:%d, limit:%"
PRId64
,
pSql
,
pNew
,
tableIndex
,
pTableMetaInfo
->
vgroupIndex
,
pNewQueryInfo
->
type
,
tscSqlExprNumOfExprs
(
pNewQueryInfo
),
size
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
pFinalInfo
->
name
,
pNewQueryInfo
->
window
.
skey
,
size
,
pNewQueryInfo
->
fieldsInfo
.
numOfOutput
,
tNameGetTableName
(
&
pFinalInfo
->
name
)
,
pNewQueryInfo
->
window
.
skey
,
pNewQueryInfo
->
window
.
ekey
,
pNewQueryInfo
->
order
.
order
,
pNewQueryInfo
->
limit
.
limit
);
tscPrintSelectClause
(
pNew
,
0
);
...
...
@@ -2203,7 +2185,7 @@ void tscDoQuery(SSqlObj* pSql) {
}
if
(
pCmd
->
dataSourceType
==
DATA_FROM_DATA_FILE
)
{
tsc
ProcessMultiVnodesImport
FromFile
(
pSql
);
tsc
ImportData
FromFile
(
pSql
);
}
else
{
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
uint16_t
type
=
pQueryInfo
->
type
;
...
...
@@ -2303,7 +2285,6 @@ int32_t tscSQLSyntaxErrMsg(char* msg, const char* additionalInfo, const char* s
}
return
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
;
}
int32_t
tscInvalidSQLErrMsg
(
char
*
msg
,
const
char
*
additionalInfo
,
const
char
*
sql
)
{
...
...
@@ -2701,7 +2682,7 @@ uint32_t tscGetTableMetaMaxSize() {
return
sizeof
(
STableMeta
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
}
STableMeta
*
tscTableMeta
Clone
(
STableMeta
*
pTableMeta
)
{
STableMeta
*
tscTableMeta
Dup
(
STableMeta
*
pTableMeta
)
{
assert
(
pTableMeta
!=
NULL
);
uint32_t
size
=
tscGetTableMetaSize
(
pTableMeta
);
STableMeta
*
p
=
calloc
(
1
,
size
);
...
...
src/common/inc/tname.h
浏览文件 @
2d21f1ec
...
...
@@ -21,6 +21,20 @@ typedef struct SColumnInfoData {
void
*
pData
;
// the corresponding block data in memory
}
SColumnInfoData
;
#define TSDB_DB_NAME_T 1
#define TSDB_TABLE_NAME_T 2
#define T_NAME_ACCT 0x1u
#define T_NAME_DB 0x2u
#define T_NAME_TABLE 0x4u
typedef
struct
SName
{
uint8_t
type
;
//db_name_t, table_name_t
char
acctId
[
TSDB_ACCT_ID_LEN
];
char
dbname
[
TSDB_DB_NAME_LEN
];
char
tname
[
TSDB_TABLE_NAME_LEN
];
}
SName
;
void
extractTableName
(
const
char
*
tableId
,
char
*
name
);
char
*
extractDBName
(
const
char
*
tableId
,
char
*
name
);
...
...
@@ -35,9 +49,9 @@ SSchema tGetUserSpecifiedColumnSchema(tVariant* pVal, SStrToken* exprStr, const
bool
tscValidateTableNameLength
(
size_t
len
);
SColumnFilterInfo
*
t
scFilterInfoClone
(
const
SColumnFilterInfo
*
src
,
int32_t
numOfFilters
);
SColumnFilterInfo
*
t
FilterInfoDup
(
const
SColumnFilterInfo
*
src
,
int32_t
numOfFilters
);
SSchema
t
sc
GetTbnameColumnSchema
();
SSchema
tGetTbnameColumnSchema
();
/**
* check if the schema is valid or not, including following aspects:
...
...
@@ -51,6 +65,28 @@ SSchema tscGetTbnameColumnSchema();
* @param numOfCols
* @return
*/
bool
isValidSchema
(
struct
SSchema
*
pSchema
,
int32_t
numOfCols
,
int32_t
numOfTags
);
bool
tIsValidSchema
(
struct
SSchema
*
pSchema
,
int32_t
numOfCols
,
int32_t
numOfTags
);
int32_t
tNameExtractFullName
(
const
SName
*
name
,
char
*
dst
);
int32_t
tNameLen
(
const
SName
*
name
);
SName
*
tNameDup
(
const
SName
*
name
);
bool
tIsValidName
(
const
SName
*
name
);
const
char
*
tNameGetTableName
(
const
SName
*
name
);
int32_t
tNameGetDbName
(
const
SName
*
name
,
char
*
dst
);
int32_t
tNameGetFullDbName
(
const
SName
*
name
,
char
*
dst
);
bool
tNameIsEmpty
(
const
SName
*
name
);
void
tNameAssign
(
SName
*
dst
,
const
SName
*
src
);
int32_t
tNameFromString
(
SName
*
dst
,
const
char
*
str
,
uint32_t
type
);
int32_t
tNameSetAcctId
(
SName
*
dst
,
const
char
*
acct
);
int32_t
tNameSetDbName
(
SName
*
dst
,
const
char
*
acct
,
SStrToken
*
dbToken
);
#endif // TDENGINE_NAME_H
src/common/src/tname.c
浏览文件 @
2d21f1ec
...
...
@@ -3,31 +3,12 @@
#include "tname.h"
#include "tstoken.h"
#include "ttokendef.h"
#include "tvariant.h"
#define VALIDNUMOFCOLS(x) ((x) >= TSDB_MIN_COLUMNS && (x) <= TSDB_MAX_COLUMNS)
#define VALIDNUMOFTAGS(x) ((x) >= 0 && (x) <= TSDB_MAX_TAGS)
// todo refactor
UNUSED_FUNC
static
FORCE_INLINE
const
char
*
skipSegments
(
const
char
*
input
,
char
delim
,
int32_t
num
)
{
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
while
(
*
input
!=
0
&&
*
input
++
!=
delim
)
{
};
}
return
input
;
}
UNUSED_FUNC
static
FORCE_INLINE
size_t
copy
(
char
*
dst
,
const
char
*
src
,
char
delimiter
)
{
size_t
len
=
0
;
while
(
*
src
!=
delimiter
&&
*
src
!=
0
)
{
*
dst
++
=
*
src
++
;
len
++
;
}
return
len
;
}
#define VALID_NAME_TYPE(x) ((x) == TSDB_DB_NAME_T || (x) == TSDB_TABLE_NAME_T)
void
extractTableName
(
const
char
*
tableId
,
char
*
name
)
{
size_t
s1
=
strcspn
(
tableId
,
&
TS_PATH_DELIMITER
[
0
]);
...
...
@@ -85,7 +66,7 @@ bool tscValidateTableNameLength(size_t len) {
return
len
<
TSDB_TABLE_NAME_LEN
;
}
SColumnFilterInfo
*
t
scFilterInfoClone
(
const
SColumnFilterInfo
*
src
,
int32_t
numOfFilters
)
{
SColumnFilterInfo
*
t
FilterInfoDup
(
const
SColumnFilterInfo
*
src
,
int32_t
numOfFilters
)
{
if
(
numOfFilters
==
0
)
{
assert
(
src
==
NULL
);
return
NULL
;
...
...
@@ -200,7 +181,7 @@ void extractTableNameFromToken(SStrToken* pToken, SStrToken* pTable) {
}
}
SSchema
t
sc
GetTbnameColumnSchema
()
{
SSchema
tGetTbnameColumnSchema
()
{
struct
SSchema
s
=
{
.
colId
=
TSDB_TBNAME_COLUMN_INDEX
,
.
type
=
TSDB_DATA_TYPE_BINARY
,
...
...
@@ -248,7 +229,7 @@ static bool doValidateSchema(SSchema* pSchema, int32_t numOfCols, int32_t maxLen
return
rowLen
<=
maxLen
;
}
bool
i
sValidSchema
(
struct
SSchema
*
pSchema
,
int32_t
numOfCols
,
int32_t
numOfTags
)
{
bool
tI
sValidSchema
(
struct
SSchema
*
pSchema
,
int32_t
numOfCols
,
int32_t
numOfTags
)
{
if
(
!
VALIDNUMOFCOLS
(
numOfCols
))
{
return
false
;
}
...
...
@@ -272,3 +253,179 @@ bool isValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags
return
true
;
}
int32_t
tNameExtractFullName
(
const
SName
*
name
,
char
*
dst
)
{
assert
(
name
!=
NULL
&&
dst
!=
NULL
);
// invalid full name format, abort
if
(
!
tIsValidName
(
name
))
{
return
-
1
;
}
int32_t
len
=
snprintf
(
dst
,
TSDB_ACCT_ID_LEN
+
1
+
TSDB_DB_NAME_LEN
,
"%s.%s"
,
name
->
acctId
,
name
->
dbname
);
size_t
tnameLen
=
strlen
(
name
->
tname
);
if
(
tnameLen
>
0
)
{
assert
(
name
->
type
==
TSDB_TABLE_NAME_T
);
dst
[
len
]
=
TS_PATH_DELIMITER
[
0
];
memcpy
(
dst
+
len
+
1
,
name
->
tname
,
tnameLen
);
dst
[
len
+
tnameLen
+
1
]
=
0
;
}
return
0
;
}
int32_t
tNameLen
(
const
SName
*
name
)
{
assert
(
name
!=
NULL
);
int32_t
len
=
(
int32_t
)
strlen
(
name
->
acctId
);
int32_t
len1
=
(
int32_t
)
strlen
(
name
->
dbname
);
int32_t
len2
=
(
int32_t
)
strlen
(
name
->
tname
);
if
(
name
->
type
==
TSDB_DB_NAME_T
)
{
assert
(
len2
==
0
);
return
len
+
len1
+
TS_PATH_DELIMITER_LEN
;
}
else
{
assert
(
len2
>
0
);
return
len
+
len1
+
len2
+
TS_PATH_DELIMITER_LEN
*
2
;
}
}
bool
tIsValidName
(
const
SName
*
name
)
{
assert
(
name
!=
NULL
);
if
(
!
VALID_NAME_TYPE
(
name
->
type
))
{
return
false
;
}
if
(
strlen
(
name
->
acctId
)
<=
0
)
{
return
false
;
}
if
(
name
->
type
==
TSDB_DB_NAME_T
)
{
return
strlen
(
name
->
dbname
)
>
0
;
}
else
{
return
strlen
(
name
->
dbname
)
>
0
&&
strlen
(
name
->
tname
)
>
0
;
}
}
SName
*
tNameDup
(
const
SName
*
name
)
{
assert
(
name
!=
NULL
);
SName
*
p
=
calloc
(
1
,
sizeof
(
SName
));
memcpy
(
p
,
name
,
sizeof
(
SName
));
return
p
;
}
int32_t
tNameGetDbName
(
const
SName
*
name
,
char
*
dst
)
{
assert
(
name
!=
NULL
&&
dst
!=
NULL
);
strncpy
(
dst
,
name
->
dbname
,
tListLen
(
name
->
dbname
));
return
0
;
}
int32_t
tNameGetFullDbName
(
const
SName
*
name
,
char
*
dst
)
{
assert
(
name
!=
NULL
&&
dst
!=
NULL
);
snprintf
(
dst
,
TSDB_ACCT_ID_LEN
+
TS_PATH_DELIMITER_LEN
+
TSDB_DB_NAME_LEN
,
"%s.%s"
,
name
->
acctId
,
name
->
dbname
);
return
0
;
}
bool
tNameIsEmpty
(
const
SName
*
name
)
{
assert
(
name
!=
NULL
);
return
name
->
type
==
0
||
strlen
(
name
->
acctId
)
<=
0
;
}
const
char
*
tNameGetTableName
(
const
SName
*
name
)
{
assert
(
name
!=
NULL
&&
name
->
type
==
TSDB_TABLE_NAME_T
);
return
&
name
->
tname
[
0
];
}
void
tNameAssign
(
SName
*
dst
,
const
SName
*
src
)
{
memcpy
(
dst
,
src
,
sizeof
(
SName
));
}
int32_t
tNameSetDbName
(
SName
*
dst
,
const
char
*
acct
,
SStrToken
*
dbToken
)
{
assert
(
dst
!=
NULL
&&
dbToken
!=
NULL
&&
acct
!=
NULL
);
// too long account id or too long db name
if
(
strlen
(
acct
)
>=
tListLen
(
dst
->
acctId
)
||
dbToken
->
n
>=
tListLen
(
dst
->
dbname
))
{
return
-
1
;
}
dst
->
type
=
TSDB_DB_NAME_T
;
tstrncpy
(
dst
->
acctId
,
acct
,
tListLen
(
dst
->
acctId
));
tstrncpy
(
dst
->
dbname
,
dbToken
->
z
,
dbToken
->
n
+
1
);
return
0
;
}
int32_t
tNameSetAcctId
(
SName
*
dst
,
const
char
*
acct
)
{
assert
(
dst
!=
NULL
&&
acct
!=
NULL
);
// too long account id or too long db name
if
(
strlen
(
acct
)
>=
tListLen
(
dst
->
acctId
))
{
return
-
1
;
}
tstrncpy
(
dst
->
acctId
,
acct
,
tListLen
(
dst
->
acctId
));
return
0
;
}
int32_t
tNameFromString
(
SName
*
dst
,
const
char
*
str
,
uint32_t
type
)
{
assert
(
dst
!=
NULL
&&
str
!=
NULL
&&
strlen
(
str
)
>
0
);
char
*
p
=
NULL
;
if
((
type
&
T_NAME_ACCT
)
==
T_NAME_ACCT
)
{
p
=
strstr
(
str
,
TS_PATH_DELIMITER
);
if
(
p
==
NULL
)
{
return
-
1
;
}
int32_t
len
=
(
int32_t
)(
p
-
str
);
// too long account id or too long db name
if
(
len
>=
tListLen
(
dst
->
acctId
)
||
len
==
0
)
{
return
-
1
;
}
memcpy
(
dst
->
acctId
,
str
,
len
);
dst
->
acctId
[
len
]
=
0
;
}
if
((
type
&
T_NAME_DB
)
==
T_NAME_DB
)
{
dst
->
type
=
TSDB_DB_NAME_T
;
char
*
start
=
(
char
*
)((
p
==
NULL
)
?
str
:
(
p
+
1
));
int32_t
len
=
0
;
p
=
strstr
(
start
,
TS_PATH_DELIMITER
);
if
(
p
==
NULL
)
{
len
=
(
int32_t
)
strlen
(
start
);
}
else
{
len
=
(
int32_t
)
(
p
-
start
);
}
// too long account id or too long db name
if
(
len
>=
tListLen
(
dst
->
dbname
)
||
len
==
0
)
{
return
-
1
;
}
memcpy
(
dst
->
dbname
,
start
,
len
);
dst
->
dbname
[
len
]
=
0
;
}
if
((
type
&
T_NAME_TABLE
)
==
T_NAME_TABLE
)
{
dst
->
type
=
TSDB_TABLE_NAME_T
;
char
*
start
=
(
char
*
)
((
p
==
NULL
)
?
str
:
(
p
+
1
));
int32_t
len
=
(
int32_t
)
strlen
(
start
);
// too long account id or too long db name
if
(
len
>=
tListLen
(
dst
->
tname
)
||
len
==
0
)
{
return
-
1
;
}
memcpy
(
dst
->
tname
,
start
,
len
);
dst
->
tname
[
len
]
=
0
;
}
return
0
;
}
src/connector/jdbc/CMakeLists.txt
浏览文件 @
2d21f1ec
...
...
@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
ADD_CUSTOM_COMMAND
(
OUTPUT
${
JDBC_CMD_NAME
}
POST_BUILD
COMMAND mvn -Dmaven.test.skip=true install -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_CURRENT_SOURCE_DIR
}
/target/taos-jdbcdriver-2.0.1
6
-dist.jar
${
LIBRARY_OUTPUT_PATH
}
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_CURRENT_SOURCE_DIR
}
/target/taos-jdbcdriver-2.0.1
7
-dist.jar
${
LIBRARY_OUTPUT_PATH
}
COMMAND mvn -Dmaven.test.skip=true clean -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMENT
"build jdbc driver"
)
ADD_CUSTOM_TARGET
(
${
JDBC_TARGET_NAME
}
ALL WORKING_DIRECTORY
${
EXECUTABLE_OUTPUT_PATH
}
DEPENDS
${
JDBC_CMD_NAME
}
)
...
...
src/connector/jdbc/deploy-pom.xml
浏览文件 @
2d21f1ec
...
...
@@ -5,7 +5,7 @@
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>
2.0.1
6
</version>
<version>
2.0.1
7
</version>
<packaging>
jar
</packaging>
<name>
JDBCDriver
</name>
...
...
src/connector/jdbc/pom.xml
浏览文件 @
2d21f1ec
...
...
@@ -3,7 +3,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>
2.0.1
6
</version>
<version>
2.0.1
7
</version>
<packaging>
jar
</packaging>
<name>
JDBCDriver
</name>
<url>
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
</url>
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/CatalogResultSet.java
浏览文件 @
2d21f1ec
...
...
@@ -24,7 +24,6 @@ import java.sql.SQLException;
*/
public
class
CatalogResultSet
extends
TSDBResultSetWrapper
{
public
CatalogResultSet
(
ResultSet
resultSet
)
{
super
.
setOriginalResultSet
(
resultSet
);
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/GetColumnsResultSet.java
已删除
100644 → 0
浏览文件 @
b055dd66
/***************************************************************************
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/
package
com.taosdata.jdbc
;
import
java.sql.ResultSet
;
/*
* TDengine only supports a subset of the standard SQL, thus this implemetation of the
* standard JDBC API contains more or less some adjustments customized for certain
* compatibility needs.
*/
public
class
GetColumnsResultSet
extends
TSDBResultSetWrapper
{
private
String
catalog
;
private
String
schemaPattern
;
private
String
tableNamePattern
;
private
String
columnNamePattern
;
public
GetColumnsResultSet
(
ResultSet
resultSet
,
String
catalog
,
String
schemaPattern
,
String
tableNamePattern
,
String
columnNamePattern
)
{
super
.
setOriginalResultSet
(
resultSet
);
this
.
catalog
=
catalog
;
this
.
schemaPattern
=
schemaPattern
;
this
.
tableNamePattern
=
tableNamePattern
;
this
.
columnNamePattern
=
columnNamePattern
;
}
@Override
public
String
getString
(
int
columnIndex
)
{
switch
(
columnIndex
)
{
case
1
:
return
catalog
;
case
2
:
return
null
;
case
3
:
return
tableNamePattern
;
default
:
return
null
;
}
}
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBParameterMetaData.java
已删除
100644 → 0
浏览文件 @
b055dd66
/***************************************************************************
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/
package
com.taosdata.jdbc
;
import
java.sql.ParameterMetaData
;
import
java.sql.SQLException
;
public
class
TSDBParameterMetaData
implements
ParameterMetaData
{
@Override
public
int
getParameterCount
()
throws
SQLException
{
return
0
;
}
@Override
public
int
isNullable
(
int
param
)
throws
SQLException
{
return
0
;
}
@Override
public
boolean
isSigned
(
int
param
)
throws
SQLException
{
return
false
;
}
@Override
public
int
getPrecision
(
int
param
)
throws
SQLException
{
return
0
;
}
@Override
public
int
getScale
(
int
param
)
throws
SQLException
{
return
0
;
}
@Override
public
int
getParameterType
(
int
param
)
throws
SQLException
{
return
0
;
}
@Override
public
String
getParameterTypeName
(
int
param
)
throws
SQLException
{
return
null
;
}
@Override
public
String
getParameterClassName
(
int
param
)
throws
SQLException
{
return
null
;
}
@Override
public
int
getParameterMode
(
int
param
)
throws
SQLException
{
return
0
;
}
@Override
public
<
T
>
T
unwrap
(
Class
<
T
>
iface
)
throws
SQLException
{
return
null
;
}
@Override
public
boolean
isWrapperFor
(
Class
<?>
iface
)
throws
SQLException
{
return
false
;
}
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
浏览文件 @
2d21f1ec
...
...
@@ -28,7 +28,7 @@ public class TSDBResultSetRowData {
}
public
TSDBResultSetRowData
()
{
this
.
data
=
new
ArrayList
<
Object
>();
this
.
data
=
new
ArrayList
<>();
this
.
setColSize
(
0
);
}
...
...
@@ -39,7 +39,7 @@ public class TSDBResultSetRowData {
if
(
this
.
colSize
==
0
)
{
return
;
}
this
.
data
=
new
ArrayList
<
Object
>(
colSize
);
this
.
data
=
new
ArrayList
<>(
colSize
);
this
.
data
.
addAll
(
Collections
.
nCopies
(
this
.
colSize
,
null
));
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBSubscribeCallBack.java
已删除
100644 → 0
浏览文件 @
b055dd66
/***************************************************************************
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/
package
com.taosdata.jdbc
;
public
interface
TSDBSubscribeCallBack
{
void
invoke
(
TSDBResultSet
resultSet
);
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
浏览文件 @
2d21f1ec
...
...
@@ -44,6 +44,8 @@ public class RestfulDriver extends AbstractTaosDriver {
String
result
=
HttpClientPoolUtil
.
execute
(
loginUrl
);
JSONObject
jsonResult
=
JSON
.
parseObject
(
result
);
String
status
=
jsonResult
.
getString
(
"status"
);
String
token
=
jsonResult
.
getString
(
"desc"
);
HttpClientPoolUtil
.
token
=
token
;
if
(!
status
.
equals
(
"succ"
))
{
throw
new
SQLException
(
jsonResult
.
getString
(
"desc"
));
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/util/HttpClientPoolUtil.java
浏览文件 @
2d21f1ec
...
...
@@ -23,6 +23,7 @@ import java.nio.charset.Charset;
public
class
HttpClientPoolUtil
{
public
static
PoolingHttpClientConnectionManager
cm
=
null
;
public
static
CloseableHttpClient
httpClient
=
null
;
public
static
String
token
=
"cm9vdDp0YW9zZGF0YQ=="
;
/**
* 默认content 类型
*/
...
...
@@ -61,9 +62,7 @@ public class HttpClientPoolUtil {
try
{
return
Long
.
parseLong
(
value
)
*
1000
;
}
catch
(
Exception
e
)
{
new
Exception
(
"format KeepAlive timeout exception, exception:"
+
e
.
toString
())
.
printStackTrace
();
new
Exception
(
"format KeepAlive timeout exception, exception:"
+
e
.
toString
()).
printStackTrace
();
}
}
}
...
...
@@ -96,7 +95,7 @@ public class HttpClientPoolUtil {
initPools
();
}
method
=
(
HttpEntityEnclosingRequestBase
)
getRequest
(
uri
,
HttpPost
.
METHOD_NAME
,
DEFAULT_CONTENT_TYPE
,
0
);
method
.
setHeader
(
"Authorization"
,
"
Basic cm9vdDp0YW9zZGF0YQ=="
);
method
.
setHeader
(
"Authorization"
,
"
Taosd "
+
token
);
method
.
setHeader
(
"Content-Type"
,
"text/plain"
);
method
.
setEntity
(
new
StringEntity
(
data
,
Charset
.
forName
(
"UTF-8"
)));
HttpContext
context
=
HttpClientContext
.
create
();
...
...
src/connector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
已删除
100644 → 0
浏览文件 @
b055dd66
import
com.taosdata.jdbc.TSDBDriver
;
import
java.sql.*
;
import
java.util.Properties
;
public
class
TestTSDBDatabaseMetaData
{
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
Connection
connection
=
null
;
DatabaseMetaData
dbMetaData
=
null
;
ResultSet
resSet
=
null
;
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
"localhost"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://localhost:0/"
,
properties
);
dbMetaData
=
connection
.
getMetaData
();
resSet
=
dbMetaData
.
getCatalogs
();
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
"dbMetaData.getCatalogs(%d) = %s\n"
,
i
,
resSet
.
getString
(
i
));
}
}
resSet
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
if
(
null
!=
connection
)
{
connection
.
close
();
}
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
浏览文件 @
2d21f1ec
...
...
@@ -10,7 +10,7 @@ import java.util.Properties;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
StatementTest
extends
BaseTest
{
public
class
StatementTest
{
static
Connection
connection
=
null
;
static
Statement
statement
=
null
;
static
String
dbName
=
"test"
;
...
...
@@ -26,14 +26,29 @@ public class StatementTest extends BaseTest {
return
;
}
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
host
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
,
properties
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/
?user=root&password=taosdata
"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"drop database if exists "
+
dbName
);
}
@Test
public
void
testCase
()
{
try
{
ResultSet
rs
=
statement
.
executeQuery
(
"show databases"
);
ResultSetMetaData
metaData
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
metaData
.
getColumnLabel
(
i
)
+
":"
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
...
...
@@ -54,9 +69,6 @@ public class StatementTest extends BaseTest {
@Test
public
void
testUnsupport
()
{
// if(null == resSet) {
// return;
// }
TSDBStatement
tsdbStatement
=
(
TSDBStatement
)
statement
;
try
{
tsdbStatement
.
unwrap
(
null
);
...
...
@@ -163,11 +175,10 @@ public class StatementTest extends BaseTest {
@AfterClass
public
static
void
close
()
throws
Exception
{
if
(!
statement
.
isClosed
())
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
executeUpdate
(
"drop database
if exists
"
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
浏览文件 @
2d21f1ec
...
...
@@ -4,10 +4,7 @@ import org.junit.Assert;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.*
;
import
java.util.Properties
;
public
class
TSDBDatabaseMetaDataTest
{
...
...
@@ -642,7 +639,16 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getTables
()
throws
SQLException
{
Assert
.
assertNull
(
metaData
.
getTables
(
""
,
""
,
"*"
,
null
));
ResultSet
tables
=
metaData
.
getTables
(
"log"
,
""
,
null
,
null
);
ResultSetMetaData
metaData
=
tables
.
getMetaData
();
while
(
tables
.
next
())
{
System
.
out
.
print
(
metaData
.
getColumnLabel
(
1
)
+
":"
+
tables
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
3
)
+
":"
+
tables
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
4
)
+
":"
+
tables
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
5
)
+
":"
+
tables
.
getString
(
5
)
+
"\n"
);
}
System
.
out
.
println
();
Assert
.
assertNotNull
(
tables
);
}
@Test
...
...
@@ -652,17 +658,41 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getCatalogs
()
throws
SQLException
{
Assert
.
assertNotNull
(
metaData
.
getCatalogs
());
ResultSet
catalogs
=
metaData
.
getCatalogs
();
ResultSetMetaData
meta
=
catalogs
.
getMetaData
();
while
(
catalogs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
catalogs
.
getString
(
i
));
}
System
.
out
.
println
();
}
}
@Test
public
void
getTableTypes
()
throws
SQLException
{
ResultSet
tableTypes
=
metaData
.
getTableTypes
();
while
(
tableTypes
.
next
())
{
System
.
out
.
println
(
tableTypes
.
getString
(
"TABLE_TYPE"
));
}
Assert
.
assertNotNull
(
metaData
.
getTableTypes
());
}
@Test
public
void
getColumns
()
throws
SQLException
{
Assert
.
assertNotNull
(
metaData
.
getColumns
(
""
,
""
,
""
,
""
));
ResultSet
columns
=
metaData
.
getColumns
(
"log"
,
""
,
"dn"
,
""
);
ResultSetMetaData
meta
=
columns
.
getMetaData
();
while
(
columns
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
columns
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
columns
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
columns
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
columns
.
getString
(
5
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
6
)
+
": "
+
columns
.
getString
(
6
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
7
)
+
": "
+
columns
.
getString
(
7
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
9
)
+
": "
+
columns
.
getString
(
9
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
10
)
+
": "
+
columns
.
getString
(
10
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
11
)
+
": "
+
columns
.
getString
(
11
)
+
"\n"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
12
)
+
": "
+
columns
.
getString
(
12
)
+
"\n"
);
}
}
@Test
...
...
@@ -687,7 +717,15 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getPrimaryKeys
()
throws
SQLException
{
Assert
.
assertNotNull
(
metaData
.
getPrimaryKeys
(
""
,
""
,
""
));
ResultSet
rs
=
metaData
.
getPrimaryKeys
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"COLUMN_NAME: "
+
rs
.
getString
(
"COLUMN_NAME"
));
System
.
out
.
println
(
"KEY_SEQ: "
+
rs
.
getString
(
"KEY_SEQ"
));
System
.
out
.
println
(
"PK_NAME: "
+
rs
.
getString
(
"PK_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
@@ -812,7 +850,12 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getSuperTables
()
throws
SQLException
{
Assert
.
assertNotNull
(
metaData
.
getSuperTables
(
""
,
""
,
""
));
ResultSet
rs
=
metaData
.
getSuperTables
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"SUPERTABLE_NAME: "
+
rs
.
getString
(
"SUPERTABLE_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/AuthenticationTest.java
0 → 100644
浏览文件 @
2d21f1ec
package
com.taosdata.jdbc.rs
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.*
;
public
class
AuthenticationTest
{
// private static final String host = "127.0.0.1";
private
static
final
String
host
=
"master"
;
private
static
final
String
user
=
"root"
;
private
static
final
String
password
=
"123456"
;
private
Connection
conn
;
@Test
public
void
test
()
{
// change password
try
{
conn
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://"
+
host
+
":6041/restful_test?user="
+
user
+
"&password=taosdata"
);
Statement
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"alter user "
+
user
+
" pass '"
+
password
+
"'"
);
stmt
.
close
();
conn
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
// use new to login and execute query
try
{
conn
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://"
+
host
+
":6041/restful_test?user="
+
user
+
"&password="
+
password
);
Statement
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"show databases"
);
ResultSet
rs
=
stmt
.
getResultSet
();
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
":"
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
// change password back
try
{
conn
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://"
+
host
+
":6041/restful_test?user="
+
user
+
"&password="
+
password
);
Statement
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"alter user "
+
user
+
" pass 'taosdata'"
);
stmt
.
close
();
conn
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@Before
public
void
before
()
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.rs.RestfulDriver"
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulDriverTest.java
浏览文件 @
2d21f1ec
...
...
@@ -6,6 +6,7 @@ import org.junit.Test;
import
java.sql.*
;
public
class
RestfulDriverTest
{
private
static
final
String
host
=
"master"
;
@Test
public
void
connect
()
{
...
...
@@ -15,9 +16,9 @@ public class RestfulDriverTest {
@Test
public
void
acceptsURL
()
throws
SQLException
{
Driver
driver
=
new
RestfulDriver
();
boolean
isAccept
=
driver
.
acceptsURL
(
"jdbc:TAOS-RS://
master
:6041"
);
boolean
isAccept
=
driver
.
acceptsURL
(
"jdbc:TAOS-RS://
"
+
host
+
"
:6041"
);
Assert
.
assertTrue
(
isAccept
);
isAccept
=
driver
.
acceptsURL
(
"jdbc:TAOS://
master
:6041"
);
isAccept
=
driver
.
acceptsURL
(
"jdbc:TAOS://
"
+
host
+
"
:6041"
);
Assert
.
assertFalse
(
isAccept
);
}
...
...
@@ -26,6 +27,9 @@ public class RestfulDriverTest {
Driver
driver
=
new
RestfulDriver
();
final
String
url
=
""
;
DriverPropertyInfo
[]
propertyInfo
=
driver
.
getPropertyInfo
(
url
,
null
);
for
(
DriverPropertyInfo
prop
:
propertyInfo
)
{
System
.
out
.
println
(
prop
);
}
}
@Test
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulJDBCTest.java
浏览文件 @
2d21f1ec
package
com.taosdata.jdbc.rs
;
import
org.junit.*
;
import
org.junit.runners.MethodSorters
;
...
...
@@ -10,12 +9,13 @@ import java.util.Random;
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
RestfulJDBCTest
{
private
static
final
String
host
=
"master"
;
private
Connection
connection
;
@Before
public
void
before
()
throws
ClassNotFoundException
,
SQLException
{
Class
.
forName
(
"com.taosdata.jdbc.rs.RestfulDriver"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://
master
:6041/restful_test?user=root&password=taosdata"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://
"
+
host
+
"
:6041/restful_test?user=root&password=taosdata"
);
}
@After
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
浏览文件 @
2d21f1ec
...
...
@@ -21,4 +21,5 @@ public class SqlSyntaxValidatorTest {
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isUseSql
(
"drop database test"
));
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isUseSql
(
"drop database if exist test"
));
}
}
\ No newline at end of file
src/connector/nodejs/nodetaos/cinterface.js
浏览文件 @
2d21f1ec
...
...
@@ -3,15 +3,15 @@
* @module CTaosInterface
*/
const
ref
=
require
(
'
ref
'
);
const
ref
=
require
(
'
ref
-napi
'
);
const
os
=
require
(
'
os
'
);
const
ffi
=
require
(
'
ffi
'
);
const
ArrayType
=
require
(
'
ref-array
'
);
const
Struct
=
require
(
'
ref-struct
'
);
const
ffi
=
require
(
'
ffi
-napi
'
);
const
ArrayType
=
require
(
'
ref-array
-napi
'
);
const
Struct
=
require
(
'
ref-struct
-napi
'
);
const
FieldTypes
=
require
(
'
./constants
'
);
const
errors
=
require
(
'
./error
'
);
const
TaosObjects
=
require
(
'
./taosobjects
'
);
const
{
NULL_POINTER
}
=
require
(
'
ref
'
);
const
{
NULL_POINTER
}
=
require
(
'
ref
-napi
'
);
module
.
exports
=
CTaosInterface
;
...
...
src/connector/nodejs/nodetaos/cursor.js
浏览文件 @
2d21f1ec
const
ref
=
require
(
'
ref
'
);
const
ref
=
require
(
'
ref
-napi
'
);
require
(
'
./globalfunc.js
'
)
const
CTaosInterface
=
require
(
'
./cinterface
'
)
const
errors
=
require
(
'
./error
'
)
...
...
src/connector/nodejs/package-lock.json
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/connector/nodejs/package.json
浏览文件 @
2d21f1ec
{
"name"
:
"td2.0-connector"
,
"version"
:
"2.0.
5
"
,
"version"
:
"2.0.
6
"
,
"description"
:
"A Node.js connector for TDengine."
,
"main"
:
"tdengine.js"
,
"directories"
:
{
"test"
:
"test"
},
"scripts"
:
{
"test"
:
"node test/test.js"
},
"repository"
:
{
"type"
:
"git"
,
"url"
:
"git+https://github.com/taosdata/tdengine.git"
},
"keywords"
:
[
"TDengine"
,
"TAOS Data"
,
"Time Series Database"
,
"Connector"
],
"author"
:
"StoneT2000"
,
"license"
:
"AGPL-3.0"
,
"dependencies"
:
{
"ffi"
:
"^2.3.0"
,
"node-gyp"
:
"^5.0.2"
,
"ref"
:
"^1.3.5"
,
"ref-array"
:
"^1.2.0"
},
"homepage"
:
"https://github.com/taosdata/tdengine"
,
"author"
:
"TaosData Inc."
,
"license"
:
"AGPL-3.0-or-later"
,
"bugs"
:
{
"url"
:
"https://github.com/taosdata/tdengine/issues"
},
"repository"
:
{
"type"
:
"git"
,
"url"
:
"https://github.com/taosdata/tdengine.git"
"homepage"
:
"https://github.com/taosdata/tdengine#readme"
,
"dependencies"
:
{
"ffi-napi"
:
"^3.1.0"
,
"ref-array-napi"
:
"^1.2.1"
,
"ref-napi"
:
"^1.5.2"
,
"ref-struct-napi"
:
"^1.1.1"
}
}
src/inc/taosmsg.h
浏览文件 @
2d21f1ec
...
...
@@ -268,8 +268,7 @@ typedef struct {
typedef
struct
{
int32_t
len
;
// one create table message
char
tableFname
[
TSDB_TABLE_FNAME_LEN
];
char
db
[
TSDB_ACCT_ID_LEN
+
TSDB_DB_NAME_LEN
];
char
tableName
[
TSDB_TABLE_FNAME_LEN
];
int8_t
igExists
;
int8_t
getMeta
;
int16_t
numOfTags
;
...
...
@@ -285,7 +284,7 @@ typedef struct {
}
SCMCreateTableMsg
;
typedef
struct
{
char
tableF
name
[
TSDB_TABLE_FNAME_LEN
];
char
name
[
TSDB_TABLE_FNAME_LEN
];
int8_t
igNotExists
;
}
SCMDropTableMsg
;
...
...
src/inc/ttokendef.h
浏览文件 @
2d21f1ec
...
...
@@ -227,9 +227,6 @@
#define TK_SPACE 300
#define TK_COMMENT 301
#define TK_ILLEGAL 302
...
...
src/mnode/inc/mnodeDb.h
浏览文件 @
2d21f1ec
...
...
@@ -32,7 +32,7 @@ int32_t mnodeInitDbs();
void
mnodeCleanupDbs
();
int64_t
mnodeGetDbNum
();
SDbObj
*
mnodeGetDb
(
char
*
db
);
SDbObj
*
mnodeGetDbByTable
Id
(
char
*
db
);
SDbObj
*
mnodeGetDbByTable
Name
(
char
*
db
);
void
*
mnodeGetNextDb
(
void
*
pIter
,
SDbObj
**
pDb
);
void
mnodeCancelGetNextDb
(
void
*
pIter
);
void
mnodeIncDbRef
(
SDbObj
*
pDb
);
...
...
src/mnode/src/mnodeDb.c
浏览文件 @
2d21f1ec
...
...
@@ -199,18 +199,13 @@ void mnodeDecDbRef(SDbObj *pDb) {
return
sdbDecRef
(
tsDbSdb
,
pDb
);
}
SDbObj
*
mnodeGetDbByTableId
(
char
*
tableId
)
{
char
db
[
TSDB_TABLE_FNAME_LEN
],
*
pos
;
SDbObj
*
mnodeGetDbByTableName
(
char
*
tableName
)
{
SName
name
=
{
0
};
tNameFromString
(
&
name
,
tableName
,
T_NAME_ACCT
|
T_NAME_DB
|
T_NAME_TABLE
);
// tableId format should be : acct.db.table
pos
=
strstr
(
tableId
,
TS_PATH_DELIMITER
);
assert
(
NULL
!=
pos
);
pos
=
strstr
(
pos
+
1
,
TS_PATH_DELIMITER
);
assert
(
NULL
!=
pos
);
memset
(
db
,
0
,
sizeof
(
db
));
strncpy
(
db
,
tableId
,
pos
-
tableId
);
// validate the tableName?
char
db
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameGetFullDbName
(
&
name
,
db
);
return
mnodeGetDb
(
db
);
}
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/os/src/detail/osTime.c
浏览文件 @
2d21f1ec
...
...
@@ -504,13 +504,13 @@ int64_t taosTimeTruncate(int64_t t, const SInterval* pInterval, int32_t precisio
int64_t
end
=
0
;
// not enough time range
if
(
INT64_MAX
-
start
>
pInterval
->
interval
-
1
)
{
if
(
start
<
0
||
INT64_MAX
-
start
>
pInterval
->
interval
-
1
)
{
end
=
start
+
pInterval
->
interval
-
1
;
while
(
end
<
t
&&
((
start
+
pInterval
->
sliding
)
<=
INT64_MAX
))
{
// move forward to the correct time window
start
+=
pInterval
->
sliding
;
if
(
INT64_MAX
-
start
>
pInterval
->
interval
-
1
)
{
if
(
start
<
0
||
INT64_MAX
-
start
>
pInterval
->
interval
-
1
)
{
end
=
start
+
pInterval
->
interval
-
1
;
}
else
{
end
=
INT64_MAX
;
...
...
src/query/inc/qSqlparser.h
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/query/inc/sql.y
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/query/src/qAst.c
浏览文件 @
2d21f1ec
...
...
@@ -407,7 +407,7 @@ tExprNode* exprTreeFromTableName(const char* tbnameCond) {
SSchema
*
pSchema
=
exception_calloc
(
1
,
sizeof
(
SSchema
));
left
->
pSchema
=
pSchema
;
*
pSchema
=
t
sc
GetTbnameColumnSchema
();
*
pSchema
=
tGetTbnameColumnSchema
();
tExprNode
*
right
=
exception_calloc
(
1
,
sizeof
(
tExprNode
));
expr
->
_node
.
pRight
=
right
;
...
...
src/query/src/qExecutor.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/query/src/qParserImpl.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/query/src/sql.c
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
src/tsdb/src/tsdbRead.c
浏览文件 @
2d21f1ec
...
...
@@ -1388,8 +1388,8 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
break
;
}
if
(((
tsArray
[
pos
]
>
pQueryHandle
->
window
.
ekey
||
pos
>
endPos
)
&&
ASCENDING_TRAVERSE
(
pQueryHandle
->
order
))
||
((
tsArray
[
pos
]
<
pQueryHandle
->
window
.
ekey
||
pos
<
endPos
)
&&
!
ASCENDING_TRAVERSE
(
pQueryHandle
->
order
)))
{
if
(((
pos
>
endPos
||
tsArray
[
pos
]
>
pQueryHandle
->
window
.
ekey
)
&&
ASCENDING_TRAVERSE
(
pQueryHandle
->
order
))
||
((
pos
<
endPos
||
tsArray
[
pos
]
<
pQueryHandle
->
window
.
ekey
)
&&
!
ASCENDING_TRAVERSE
(
pQueryHandle
->
order
)))
{
break
;
}
...
...
src/util/inc/tarray.h
浏览文件 @
2d21f1ec
...
...
@@ -110,7 +110,7 @@ void taosArrayCopy(SArray* pDst, const SArray* pSrc);
* clone a new array
* @param pSrc
*/
SArray
*
taosArray
Clone
(
const
SArray
*
pSrc
);
SArray
*
taosArray
Dup
(
const
SArray
*
pSrc
);
/**
* clear the array (remove all element)
...
...
src/util/src/tarray.c
浏览文件 @
2d21f1ec
...
...
@@ -165,7 +165,7 @@ void taosArrayCopy(SArray* pDst, const SArray* pSrc) {
pDst
->
size
=
pSrc
->
size
;
}
SArray
*
taosArray
Clone
(
const
SArray
*
pSrc
)
{
SArray
*
taosArray
Dup
(
const
SArray
*
pSrc
)
{
assert
(
pSrc
!=
NULL
);
if
(
pSrc
->
size
==
0
)
{
// empty array list
...
...
tests/examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/JDBCDemo.java
浏览文件 @
2d21f1ec
...
...
@@ -48,7 +48,6 @@ public class JDBCDemo {
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
}
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
"host"
,
host
);
properties
.
setProperty
(
"charset"
,
"UTF-8"
);
properties
.
setProperty
(
"locale"
,
"en_US.UTF-8"
);
properties
.
setProperty
(
"timezone"
,
"UTC-8"
);
...
...
tests/examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/JdbcRestfulDemo.java
0 → 100644
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/examples/JDBC/taosdemo/pom.xml
浏览文件 @
2d21f1ec
...
...
@@ -67,9 +67,9 @@
<dependency>
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>
2.0.1
5
</version>
<
scope>
system
</scope
>
<
systemPath>
${project.basedir}/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar
</systemPath
>
<version>
2.0.1
7
</version>
<
!-- <scope>system</scope>--
>
<
!-- <systemPath>${project.basedir}/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar</systemPath>--
>
</dependency>
<!-- fastjson -->
<dependency>
...
...
tests/examples/JDBC/taosdemo/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar
已删除
100644 → 0
浏览文件 @
b055dd66
文件已删除
tests/examples/c/CMakeLists.txt
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/examples/nodejs/nodejsChecker.js
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/pytest/account/account_create.py
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/pytest/alter/alter_table.py
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/pytest/concurrent_inquiry.py
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/pytest/fulltest.sh
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/pytest/query/queryGroupbySort.py
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/cached_schema_after_alter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/count.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/dnode.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/import.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/insert1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/insert2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/alter/table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/cache/new_metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/cache/restart_metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/cache/restart_table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/column/commit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/column/metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/column/table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compress/commitlog.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compress/compress.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compress/compress2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compress/uncompress.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/avg.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/bottom.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/count.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/diff.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/diff2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/first.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/interval.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/last.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/last_row.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/leastsquare.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/max.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/min.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/null.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/percentile.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/stddev.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/sum.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/compute/top.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/connection/connection.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/connection/mqtt.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/alter_option.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/alter_tables_d2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/alter_tables_v4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/alter_vgroups.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/backup/keep.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/basic5.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete_reuse1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete_reuse2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete_reusevnode2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete_writing1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/delete_writing2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/dropdnodes.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/nosuchfile.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/repeat.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/show_create_db.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/show_create_table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/tables.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/db/vnodes.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/5.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/6.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/bigint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/single.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/smallint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/field/tinyint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/autocreate.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/chunked.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/grafana.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/grafana_bug.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/gzip.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/prepare.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/restful.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/restful_full.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/restful_insert.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/restful_limit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/http/telegraf.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/import/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/import/commit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/import/large.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/import/replica1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/insert_drop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_block1_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_block1_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_block2_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_block2_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_file_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/query_multi_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/insert/tcp.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/alter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/auto_create_tb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/col_arithmetic_operation.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/commit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/first_last.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/function.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/import_commit1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/import_commit2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/import_commit3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/interp.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/lastrow.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/limit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/limit1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/limit1_tblocks100.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/limit2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/mixed_blocks.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/projection_limit_offset.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/selectResNum.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/select_from_cache_disk.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/single_row_in_tb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/slimit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/slimit1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/slimit_alter_tags.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/stableOp.sim
0 → 100644
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/tbnameIn.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/parser/topbot.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/disk.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/refcount.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/show.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/values.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stable/vnode3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/agg_stream.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/column_stream.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/metrics_del.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/metrics_replica1_vnoden.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/restart_stream.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/stream_3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/stream_restart.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/table_del.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/stream/table_replica1_vnoden.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/autocreate.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/basic1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/basic2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/basic3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/bigint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/column2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/column_name.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/column_num.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/column_value.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/createmulti.sim
0 → 100644
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/date.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/db.table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/delete_reuse1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/delete_reuse2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/delete_writing.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/describe.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/fill.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/limit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/smallint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/table_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/tinyint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/table/vgroup.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/5.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/6.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/add.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/bigint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/binary_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/bool_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/bool_int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/change.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/column.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/commit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/create.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/delete.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/filter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/int_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/int_float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/set.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/smallint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/tag/tinyint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/user/authority.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/user/monitor.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/user/pass_alter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/user/pass_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/user/user_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/metrics_field.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/metrics_mix.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/metrics_query.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/metrics_tag.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/metrics_time.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/multi.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/single.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/table_field.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/table_mix.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/table_query.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/vector/table_time.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/wal/kill.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/general/wal/maxtables.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/tmp/mnodes.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/account_create.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/account_delete.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/account_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/authority.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/paras.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/pass_alter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/pass_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/usage.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/user_create.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/account/user_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/check_cluster_cfg_para.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn2_mn1_cache_file_sync.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn2_mn1_cache_file_sync_second.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_full_createTableFail.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_full_dropDnodeFail.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_multiCreateDropTable.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_nw_disable_timeout_autoDropDnode.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_r2_vnode_delDir.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_r3_vnode_delDir.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_createErrData_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_noCorruptFile_offline.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/dn3_mn2_killDnode.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/insert_duplicationTs.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica2_alterTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica2_alterTag_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica2_createTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica2_dropDb_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica2_dropTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica3_alterTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica3_alterTag_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica3_createTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica3_dropDb_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/offline_replica3_dropTable_online.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/replica_changeWithArbitrator.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica2_alterTable_add.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica2_alterTable_drop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica2_dropDb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica2_dropTable.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_alterTable_add.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_alterTable_drop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_createTable.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_dnodeChang_DropAddAlterTableDropDb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_dropDb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/arbitrator/sync_replica3_dropTable.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/big/maxvnodes.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/big/restartSpeed.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/alter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/balance2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/cache.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/cluster_main.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/cluster_main0.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/cluster_main1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/cluster_main2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/cluster/flowctrl.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/clusterSimCase/cluster_main.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/db/commit.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/db/delete.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/db/replica_reduce32.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/alternativeRole.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/balance2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/balancex.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/data1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/datatrans_1node.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/datatrans_3node.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/datatrans_3node_2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/monitor.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/monitor_bug.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/offline1.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/offline2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/dnode/simple.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/http/admin.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/http/opentsdb.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/import/replica3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/mnode/mgmt20.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/mnode/mgmt22.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/mnode/mgmt26.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/mnode/mgmt30.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/mnode/mgmtr2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stable/dnode2_stop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stream/metrics_balance.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stream/metrics_vnode_stop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stream/table_balance.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stream/table_move.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/stream/table_vnode_stop.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/many.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/replica2_a_large.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/replica2_basic2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/replica2_repeat.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/replica3_repeat.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/unique/vnode/replica3_vgroup.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/alter/metrics.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/alter/table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/avg.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/bottom.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/count.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/diff.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/first.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/interval.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/last.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/leastsquare.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/max.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/min.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/percentile.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/stddev.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/sum.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/compute/top.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/db/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/db/len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/2.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/5.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/6.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/bigint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/single.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/smallint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/field/tinyint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/import/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/basic.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_block1_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_block1_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_block2_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_block2_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_file_memory.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/insert/query_multi_file.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/column_name.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/column_num.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/column_value.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/db.table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/table.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/table/table_len.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/3.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/4.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/5.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/6.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/add.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/bigint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/binary_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/bool.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/bool_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/bool_int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/change.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/column.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/create.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/delete.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/double.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/filter.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/int.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/int_binary.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/int_float.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/set.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/smallint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/tag/tinyint.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/metrics_field.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/metrics_mix.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/metrics_query.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/metrics_tag.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/metrics_time.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/multi.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/single.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/table_field.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/table_mix.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/table_query.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
tests/script/windows/vector/table_time.sim
浏览文件 @
2d21f1ec
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录