Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6c917382
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6c917382
编写于
9月 11, 2020
作者:
R
root
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/crash
上级
7334f519
c30d9b60
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
115 addition
and
152 deletion
+115
-152
documentation20/webdocs/markdowndocs/administrator-ch.md
documentation20/webdocs/markdowndocs/administrator-ch.md
+69
-9
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+1
-1
src/kit/shell/src/shellLinux.c
src/kit/shell/src/shellLinux.c
+1
-1
tests/pytest/query/queryNullValueTest.py
tests/pytest/query/queryNullValueTest.py
+33
-131
tests/script/unique/db/delete.sim
tests/script/unique/db/delete.sim
+2
-1
tests/script/unique/import/replica3.sim
tests/script/unique/import/replica3.sim
+1
-1
tests/script/unique/stable/dnode3.sim
tests/script/unique/stable/dnode3.sim
+1
-1
tests/script/unique/stream/metrics_replica2_dnode3.sim
tests/script/unique/stream/metrics_replica2_dnode3.sim
+1
-1
tests/script/unique/stream/metrics_replica3_dnode4.sim
tests/script/unique/stream/metrics_replica3_dnode4.sim
+2
-2
tests/script/unique/stream/table_replica2_dnode3.sim
tests/script/unique/stream/table_replica2_dnode3.sim
+1
-1
tests/script/unique/stream/table_replica3_dnode4.sim
tests/script/unique/stream/table_replica3_dnode4.sim
+2
-2
tests/script/unique/vnode/replica2_basic2.sim
tests/script/unique/vnode/replica2_basic2.sim
+1
-1
未找到文件。
documentation20/webdocs/markdowndocs/administrator-ch.md
浏览文件 @
6c917382
...
...
@@ -131,23 +131,83 @@ TDengine集群中加入一个新的dnode时,涉及集群相关的一些参数
-
maxTablesPerVnode: 每个vnode中能够创建的最大表个数。默认值:1000000。
-
maxVgroupsPerDb: 每个数据库中能够使用的最大vnode个数。
-
arbitrator: 系统中裁决器的end point,缺省为空
-
timezone:时区。从系统中动态获取当前的时区设置。
-
locale:系统区位信息及编码格式。系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置。
-
charset:字符集编码。系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置。
-
timezone、locale、charset 的配置见客户端配置。
## 客户端配置
TDengine系统的前台交互客户端应用程序为taos,它与taosd共享同一个配置文件taos.cfg。运行taos时,使用参数-c指定配置文件目录,如taos -c /home/cfg,表示使用/home/cfg/目录下的taos.cfg配置文件中的参数,缺省目录是/etc/taos。
更多taos的使用方法请见
[
Shell命令行程序
](
#_TDengine_Shell命令行程序
)
。本节主要讲解taos客户端应用在配置文件taos.cfg
文件中使用到的参数。
TDengine系统的前台交互客户端应用程序为taos,它与taosd共享同一个配置文件taos.cfg。运行taos时,使用参数-c指定配置文件目录,如taos -c /home/cfg,表示使用/home/cfg/目录下的taos.cfg配置文件中的参数,缺省目录是/etc/taos。
本节主要说明 taos 客户端应用在配置文件 taos.cfg
文件中使用到的参数。
客户端配置参数
列表及解释
客户端配置参数
-
firstEp: taos启动时,主动连接的集群中第一个taosd实例的end point, 缺省值为 localhost:6030。
-
secondEp: taos启动时,如果first连接不上,尝试连接集群中第二个taosd实例的end point, 缺省值为空。
-
charset:字符集编码。系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置。
-
locale:系统区位信息及编码格式。系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置。
-
maxBinaryDisplayWidth:Shell中binary 和 nchar字段的显示宽度上限,超过此限制的部分将被隐藏。默认值:30。可在 shell 中通过命令 set max_binary_display_width
*nn*
动态修改此选项。
-
locale
日志的配置参数,与server的配置参数完全一样。
> 默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
TDengine为存储中文、日文、韩文等非ASCII编码的宽字符,提供一种专门的字段类型nchar。写入nchar字段的数据将统一采用UCS4-LE格式进行编码并发送到服务器。需要注意的是,编码正确性是客户端来保证。因此,如果用户想要正常使用nchar字段来存储诸如中文、日文、韩文等非ASCII字符,需要正确设置客户端的编码格式。
客户端的输入的字符均采用操作系统当前默认的编码格式,在Linux系统上多为UTF-8,部分中文系统编码则可能是GB18030或GBK等。在docker环境中默认的编码是POSIX。在中文版Windows系统中,编码则是CP936。客户端需要确保正确设置自己所使用的字符集,即客户端运行的操作系统当前编码字符集,才能保证nchar中的数据正确转换为UCS4-LE编码格式。
在 Linux 中 locale 的命名规则为:
<语言>
_<地区>.<字符集编码> 如:zh_
CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。字符集编码为客户端正确解析本地字符串提供编码转换的说明。Linux系统与 Mac OSX 系统可以通过设置locale来确定系统的字符编码,由于Windows使用的locale中不是POSIX标准的locale格式,因此在Windows下需要采用另一个配置参数charset来指定字符编码。在Linux 系统中也可以使用charset来指定字符编码。
-
charset
> 默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
如果配置文件中不设置charset,在Linux系统中,taos在启动时候,自动读取系统当前的locale信息,并从locale信息中解析提取charset编码格式。如果自动读取locale信息失败,则尝试读取charset配置,如果读取charset配置也失败,则中断启动过程。
在Linux系统中,locale信息包含了字符编码信息,因此正确设置了Linux系统locale以后可以不用再单独设置charset。例如:
```
locale zh_CN.UTF-8
```
在Windows系统中,无法从locale获取系统当前编码。如果无法从配置文件中读取字符串编码信息,taos默认设置为字符编码为CP936。其等效在配置文件中添加如下配置:
```
charset CP936
```
如果需要调整字符编码,请查阅当前操作系统使用的编码,并在配置文件中正确设置。
在Linux系统中,如果用户同时设置了locale和字符集编码charset,并且locale和charset的不一致,后设置的值将覆盖前面设置的值。
```
locale zh_CN.UTF-8
charset GBK
```
则charset的有效值是GBK。
```
charset GBK
locale zh_CN.UTF-8
```
charset的有效值是UTF-8。
日志的配置参数,与server 的配置参数完全一样。
-
timezone
默认值:从系统中动态获取当前的时区设置
客户端运行系统所在的时区。为应对多时区的数据写入和查询问题,TDengine 采用 Unix 时间戳(Unix Timestamp)来记录和存储时间戳。Unix 时间戳的特点决定了任一时刻不论在任何时区,产生的时间戳均一致。需要注意的是,Unix时间戳是在客户端完成转换和记录。为了确保客户端其他形式的时间转换为正确的 Unix 时间戳,需要设置正确的时区。
在Linux系统中,客户端会自动读取系统设置的时区信息。用户也可以采用多种方式在配置文件设置时区。例如:
```
timezone UTC-8
timezone GMT-8
timezone Asia/Shanghai
```
均是合法的设置东八区时区的格式。
时区的设置对于查询和写入SQL语句中非Unix时间戳的内容(时间戳字符串、关键词now的解析)产生影响。例如:
```
SELECT count(*) FROM table_name WHERE TS<'2019-04-11 12:01:08';
```
在东八区,SQL语句等效于
```
SELECT count(*) FROM table_name WHERE TS<1554955268000;
```
在UTC时区,SQL语句等效于
```
SELECT count(*) FROM table_name WHERE TS<1554984068000;
```
为了避免使用字符串时间格式带来的不确定性,也可以直接使用Unix时间戳。此外,还可以在SQL语句中使用带有时区的时间戳字符串,例如:RFC3339格式的时间戳字符串,2013-04-12T15:52:01.123+08:00或者ISO-8601格式时间戳字符串2013-04-12T15:52:01.123+0800。上述两个字符串转化为Unix时间戳不受系统所在时区的影响。
启动taos时,也可以从命令行指定一个taosd实例的end point,否则就从taos.cfg读取。
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
6c917382
...
...
@@ -786,7 +786,7 @@ void read_history() {
}
void
write_history
()
{
char
f_history
[
128
];
char
f_history
[
TSDB_FILENAME_LEN
];
get_history_path
(
f_history
);
FILE
*
f
=
fopen
(
f_history
,
"w"
);
...
...
src/kit/shell/src/shellLinux.c
浏览文件 @
6c917382
...
...
@@ -409,7 +409,7 @@ void set_terminal_mode() {
}
}
void
get_history_path
(
char
*
history
)
{
s
printf
(
history
,
"%s/%s"
,
getenv
(
"HOME"
),
HISTORY_FILE
);
}
void
get_history_path
(
char
*
history
)
{
s
nprintf
(
history
,
TSDB_FILENAME_LEN
,
"%s/%s"
,
getenv
(
"HOME"
),
HISTORY_FILE
);
}
void
clearScreen
(
int
ecmd_pos
,
int
cursor_pos
)
{
struct
winsize
w
;
...
...
tests/pytest/query/queryNullValueTest.py
浏览文件 @
6c917382
...
...
@@ -25,7 +25,7 @@ class TDTestCase:
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
self
.
numOfRecords
=
10
self
.
types
=
[
"tinyint"
,
"smallint"
,
"int"
,
"bigint"
,
"float"
,
"double"
,
"bool"
,
"binary(10)"
,
"nchar(10)"
]
self
.
ts
=
1537146000000
def
checkNullValue
(
self
,
result
):
...
...
@@ -38,139 +38,41 @@ class TDTestCase:
return
False
return
True
def
restartTaosd
(
self
):
tdDnodes
.
stop
(
1
)
tdDnodes
.
start
(
1
)
tdSql
.
execute
(
"use db"
)
def
run
(
self
):
tdSql
.
prepare
()
print
(
"==============step1"
)
tdSql
.
execute
(
"create table meters (ts timestamp, col1 int) tags(tgcol1 int)"
)
tdSql
.
execute
(
"create table t0 using meters tags(NULL)"
)
for
i
in
range
(
self
.
numOfRecords
):
tdSql
.
execute
(
"insert into t0 values (%d, %d)"
%
(
self
.
ts
+
i
,
i
));
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col2 tinyint"
)
tdSql
.
execute
(
"alter table meters drop column col1"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col2 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col1 int"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col1 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col3 smallint"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col3 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col4 bigint"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col4 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col5 float"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col5 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col6 double"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col6 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col7 bool"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col7 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col8 binary(20)"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col8 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add column col9 nchar(20)"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select col9 from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
execute
(
"alter table meters add tag tgcol2 tinyint"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol2 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol3 smallint"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol3 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol4 bigint"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol4 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol5 float"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol5 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol6 double"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol6 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol7 bool"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol7 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol8 binary(20)"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol8 from meters"
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"alter table meters add tag tgcol9 nchar(20)"
)
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select tgcol9 from meters"
)
tdSql
.
checkRows
(
1
)
self
.
restartTaosd
()
tdSql
.
query
(
"select * from meters"
)
tdSql
.
checkRows
(
10
)
if
self
.
checkNullValue
(
tdSql
.
queryResult
)
is
False
:
tdLog
.
exit
(
"non None value is detected"
)
for
i
in
range
(
len
(
self
.
types
)):
print
(
"======== checking type %s =========="
%
self
.
types
[
i
])
tdSql
.
execute
(
"create table t0 (ts timestamp, col %s)"
%
self
.
types
[
i
])
tdSql
.
execute
(
"insert into t0 values (%d, NULL)"
%
(
self
.
ts
))
tdDnodes
.
stop
(
1
)
tdLog
.
sleep
(
10
)
tdDnodes
.
start
(
1
)
tdSql
.
execute
(
"use db"
)
tdSql
.
query
(
"select * from t0"
)
tdSql
.
checkRows
(
1
)
if
self
.
checkNullValue
(
tdSql
.
queryResult
)
is
False
:
tdLog
.
exit
(
"no None value is detected"
)
tdSql
.
execute
(
"create table t1 (ts timestamp, col %s)"
%
self
.
types
[
i
])
tdSql
.
execute
(
"insert into t1 values (%d, NULL)"
%
(
self
.
ts
))
tdDnodes
.
stop
(
1
)
tdLog
.
sleep
(
10
)
tdDnodes
.
start
(
1
)
tdSql
.
execute
(
"use db"
)
for
j
in
range
(
150
):
tdSql
.
execute
(
"insert into t1 values (%d, NULL)"
%
(
self
.
ts
+
j
+
1
));
tdSql
.
query
(
"select * from t1"
)
tdSql
.
checkRows
(
151
)
if
self
.
checkNullValue
(
tdSql
.
queryResult
)
is
False
:
tdLog
.
exit
(
"no None value is detected"
)
print
(
"======== None value check for type %s is OK =========="
%
self
.
types
[
i
])
def
stop
(
self
):
tdSql
.
close
()
...
...
tests/script/unique/db/delete.sim
浏览文件 @
6c917382
...
...
@@ -21,9 +21,10 @@ system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ======== step1
sql create database db replica 3 blocks 3
...
...
tests/script/unique/import/replica3.sim
浏览文件 @
6c917382
...
...
@@ -31,8 +31,8 @@ sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
...
...
tests/script/unique/stable/dnode3.sim
浏览文件 @
6c917382
...
...
@@ -13,8 +13,8 @@ system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
...
...
tests/script/unique/stream/metrics_replica2_dnode3.sim
浏览文件 @
6c917382
...
...
@@ -17,8 +17,8 @@ system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
createDnode:
...
...
tests/script/unique/stream/metrics_replica3_dnode4.sim
浏览文件 @
6c917382
...
...
@@ -21,10 +21,10 @@ system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname4
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
...
...
tests/script/unique/stream/table_replica2_dnode3.sim
浏览文件 @
6c917382
...
...
@@ -18,8 +18,8 @@ system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
createDnode:
...
...
tests/script/unique/stream/table_replica3_dnode4.sim
浏览文件 @
6c917382
...
...
@@ -21,10 +21,10 @@ system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname4
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
createDnode:
...
...
tests/script/unique/vnode/replica2_basic2.sim
浏览文件 @
6c917382
...
...
@@ -25,8 +25,8 @@ system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录