Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
b9d4476b
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看板
提交
b9d4476b
编写于
5月 26, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge from develop
上级
0542a345
cadf32d3
变更
16
展开全部
隐藏空白更改
内联
并排
Showing
16 changed file
with
759 addition
and
658 deletion
+759
-658
.circleci/config.yml
.circleci/config.yml
+13
-0
.gitmodules
.gitmodules
+3
-3
cmake/version.inc
cmake/version.inc
+1
-1
documentation20/cn/12.taos-sql/01.error-code/docs.md
documentation20/cn/12.taos-sql/01.error-code/docs.md
+170
-170
documentation20/cn/12.taos-sql/docs.md
documentation20/cn/12.taos-sql/docs.md
+94
-74
documentation20/cn/13.faq/docs.md
documentation20/cn/13.faq/docs.md
+17
-14
snap/snapcraft.yaml
snap/snapcraft.yaml
+2
-2
src/connector/grafanaplugin
src/connector/grafanaplugin
+1
-1
src/connector/odbc/examples/c/main.c
src/connector/odbc/examples/c/main.c
+1
-5
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+427
-356
src/os/src/detail/osMemory.c
src/os/src/detail/osMemory.c
+11
-11
src/os/src/windows/wSemphone.c
src/os/src/windows/wSemphone.c
+11
-13
tests/Jenkinsfile
tests/Jenkinsfile
+3
-3
tests/script/unique/cluster/cache.sim
tests/script/unique/cluster/cache.sim
+1
-1
tests/script/unique/dnode/monitor.sim
tests/script/unique/dnode/monitor.sim
+1
-1
tests/script/unique/dnode/monitor_bug.sim
tests/script/unique/dnode/monitor_bug.sim
+3
-3
未找到文件。
.circleci/config.yml
0 → 100644
浏览文件 @
b9d4476b
# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
version
:
2.1
# Use a package of configuration called an orb.
orbs
:
# Declare a dependency on the welcome-orb
welcome
:
circleci/welcome-orb@0.4.1
# Orchestrate or schedule a set of jobs
workflows
:
# Name the workflow "welcome"
welcome
:
# Run the welcome/run job in its own container
jobs
:
-
welcome/run
.gitmodules
浏览文件 @
b9d4476b
[submodule "src/connector/go"]
path = src/connector/go
url =
https://github.com/taosdata/driver-go
url =
git@github.com:taosdata/driver-go.git
[submodule "src/connector/grafanaplugin"]
path = src/connector/grafanaplugin
url =
https://github.com/taosdata/grafanaplugin
url =
git@github.com:taosdata/grafanaplugin.git
[submodule "src/connector/hivemq-tdengine-extension"]
path = src/connector/hivemq-tdengine-extension
url =
https://github.com/huskar-t
/hivemq-tdengine-extension.git
url =
git@github.com:taosdata
/hivemq-tdengine-extension.git
[submodule "tests/examples/rust"]
path = tests/examples/rust
url = https://github.com/songtianyi/tdengine-rust-bindings.git
cmake/version.inc
浏览文件 @
b9d4476b
...
...
@@ -4,7 +4,7 @@ PROJECT(TDengine)
IF
(
DEFINED
VERNUMBER
)
SET
(
TD_VER_NUMBER
$
{
VERNUMBER
})
ELSE
()
SET
(
TD_VER_NUMBER
"2.1.
0
.0"
)
SET
(
TD_VER_NUMBER
"2.1.
1
.0"
)
ENDIF
()
IF
(
DEFINED
VERCOMPATIBLE
)
...
...
documentation20/cn/12.taos-sql/01.error-code/docs.md
浏览文件 @
b9d4476b
此差异已折叠。
点击以展开。
documentation20/cn/12.taos-sql/docs.md
浏览文件 @
b9d4476b
此差异已折叠。
点击以展开。
documentation20/cn/13.faq/docs.md
浏览文件 @
b9d4476b
...
...
@@ -26,17 +26,17 @@
## 2. Windows平台下JDBCDriver找不到动态链接库,怎么办?
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/03/
jdbcdriver找不到动态链接库/
)
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/03/
950.html
)
## 3. 创建数据表时提示more dnodes are needed
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/03/
创建数据表时提示more-dnodes-are-needed/
)
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/03/
965.html
)
## 4. 如何让TDengine crash时生成core文件?
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/06/
tdengine-crash时生成core文件的方法/
)
请看为此问题撰写的
[
技术博客
](
https://www.taosdata.com/blog/2019/12/06/
974.html
)
## 5. 遇到错误
"Unable to establish connection"
, 我怎么办?
## 5. 遇到错误
“Unable to establish connection”
, 我怎么办?
客户端遇到连接故障,请按照下面的步骤进行检查:
...
...
@@ -51,13 +51,13 @@
4.
确认客户端连接时指定了正确的服务器FQDN (Fully Qualified Domain Name(可在服务器上执行Linux命令hostname -f获得)),FQDN配置参考:
[
一篇文章说清楚TDengine的FQDN
](
https://www.taosdata.com/blog/2020/09/11/1824.html
)
。
5.
ping服务器FQDN,如果没有反应,请检查你的网络,DNS设置,或客户端所在计算机的系统hosts文件
5.
ping服务器FQDN,如果没有反应,请检查你的网络,DNS设置,或客户端所在计算机的系统hosts文件
。如果部署的是TDengine集群,客户端需要能ping通所有集群节点的FQDN。
6.
检查防火墙设置(Ubuntu 使用 ufw status,CentOS 使用 firewall-cmd --list-port),确认TCP/UDP 端口6030-6042 是打开的
7.
对于Linux上的JDBC(ODBC, Python, Go等接口类似)连接, 确保
*libtaos.so*
在目录
*/usr/local/taos/driver*
里, 并且
*/usr/local/taos/driver*
在系统库函数搜索路径
*LD_LIBRARY_PATH*
里
8.
对于
w
indows上的JDBC, ODBC, Python, Go等连接,确保
*C:\TDengine\driver\taos.dll*
在你的系统库函数搜索目录里 (建议
*taos.dll*
放在目录
*C:\Windows\System32*
)
8.
对于
W
indows上的JDBC, ODBC, Python, Go等连接,确保
*C:\TDengine\driver\taos.dll*
在你的系统库函数搜索目录里 (建议
*taos.dll*
放在目录
*C:\Windows\System32*
)
9.
如果仍不能排除连接故障
...
...
@@ -70,7 +70,8 @@
10.
也可以使用taos程序内嵌的网络连通检测功能,来验证服务器和客户端之间指定的端口连接是否通畅(包括TCP和UDP):
[
TDengine 内嵌网络检测工具使用指南
](
https://www.taosdata.com/blog/2020/09/08/1816.html
)
。
## 6. 遇到错误“Unexpected generic error in RPC”或者"TDengine Error: Unable to resolve FQDN", 我怎么办?
## 6. 遇到错误“Unexpected generic error in RPC”或者“Unable to resolve FQDN”,我怎么办?
产生这个错误,是由于客户端或数据节点无法解析FQDN(Fully Qualified Domain Name)导致。对于TAOS Shell或客户端应用,请做如下检查:
1.
请检查连接的服务器的FQDN是否正确,FQDN配置参考:
[
一篇文章说清楚TDengine的FQDN
](
https://www.taosdata.com/blog/2020/09/11/1824.html
)
。
...
...
@@ -102,7 +103,7 @@ TDengine 目前尚不支持删除功能,未来根据用户需求可能会支
批量插入。每条写入语句可以一张表同时插入多条记录,也可以同时插入多张表的多条记录。
## 12.
w
indows系统下插入的nchar类数据中的汉字被解析成了乱码如何解决?
## 12.
W
indows系统下插入的nchar类数据中的汉字被解析成了乱码如何解决?
Windows下插入nchar类的数据中如果有中文,请先确认系统的地区设置成了中国(在Control Panel里可以设置),这时cmd中的
`taos`
客户端应该已经可以正常工作了;如果是在IDE里开发Java应用,比如Eclipse, Intellij,请确认IDE里的文件编码为GBK(这是Java默认的编码类型),然后在生成Connection时,初始化客户端的配置,具体语句如下:
```
JAVA
...
...
@@ -115,15 +116,15 @@ Connection = DriverManager.getConnection(url, properties);
## 13.JDBC报错: the excuted SQL is not a DML or a DDL?
请更新至最新的JDBC驱动
```
JAVA
```
xml
<dependency>
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>2.0.
4
</version>
<version>
2.0.
27
</version>
</dependency>
```
## 14. taos connect failed, reason
:
invalid timestamp
## 14. taos connect failed, reason
:
invalid timestamp
常见原因是服务器和客户端时间没有校准,可以通过和时间服务器同步的方式(Linux 下使用 ntpdate 命令,Windows 在系统时间设置中选择自动同步)校准。
...
...
@@ -157,7 +158,8 @@ ALTER LOCAL RESETLOG;
其含义是,清空本机所有由客户端生成的日志文件。
## <a class="anchor" id="timezone"></a>18. 时间戳的时区信息是怎样处理的?
<a
class=
"anchor"
id=
"timezone"
></a>
## 18. 时间戳的时区信息是怎样处理的?
TDengine 中时间戳的时区总是由客户端进行处理,而与服务端无关。具体来说,客户端会对 SQL 语句中的时间戳进行时区转换,转为 UTC 时区(即 Unix 时间戳——Unix Timestamp)再交由服务端进行写入和查询;在读取数据时,服务端也是采用 UTC 时区提供原始数据,客户端收到后再根据本地设置,把时间戳转换为本地系统所要求的时区进行显示。
...
...
@@ -167,12 +169,13 @@ TDengine 中时间戳的时区总是由客户端进行处理,而与服务端
3.
如果在 C/C++/Java/Python 等各种编程语言的 Connector Driver 中,在建立数据库连接时显式指定了 timezone,那么会以这个指定的时区设置为准。例如 Java Connector 的 JDBC URL 中就有 timezone 参数。
4.
在书写 SQL 语句时,也可以直接使用 Unix 时间戳(例如
`1554984068000`
)或带有时区的时间戳字符串,也即以 RFC 3339 格式(例如
`2013-04-12T15:52:01.123+08:00`
)或 ISO-8601 格式(例如
`2013-04-12T15:52:01.123+0800`
)来书写时间戳,此时这些时间戳的取值将不再受其他时区设置的影响。
## <a class="anchor" id="port"></a>19. TDengine 都会用到哪些网络端口?
<a
class=
"anchor"
id=
"port"
></a>
## 19. TDengine 都会用到哪些网络端口?
在 TDengine 2.0 版本中,会用到以下这些网络端口(以默认端口 6030 为前提进行说明,如果修改了配置文件中的设置,那么这里列举的端口都会出现变化),管理员可以参考这里的信息调整防火墙设置:
| 协议 | 默认端口 | 用途说明 | 修改方法 |
|
--- | --------- | ------------------------------- |
------------------------------ |
|
:--- | :-------- | :---------------------------------- | :-
------------------------------ |
| TCP | 6030 | 客户端与服务端之间通讯。 | 由配置文件设置 serverPort 决定。 |
| TCP | 6035 | 多节点集群的节点间通讯。 | 随 serverPort 端口变化。 |
| TCP | 6040 | 多节点集群的节点间数据同步。 | 随 serverPort 端口变化。 |
...
...
snap/snapcraft.yaml
浏览文件 @
b9d4476b
name
:
tdengine
base
:
core18
version
:
'
2.1.
0
.0'
version
:
'
2.1.
1
.0'
icon
:
snap/gui/t-dengine.svg
summary
:
an open-source big data platform designed and optimized for IoT.
description
:
|
...
...
@@ -73,7 +73,7 @@ parts:
-
usr/bin/taosd
-
usr/bin/taos
-
usr/bin/taosdemo
-
usr/lib/libtaos.so.2.1.
0
.0
-
usr/lib/libtaos.so.2.1.
1
.0
-
usr/lib/libtaos.so.1
-
usr/lib/libtaos.so
...
...
grafanaplugin
@
3530c6df
Subproject commit 3
2e2c97a4cf7bedaa99f5d6dd8cb036e7f4470df
Subproject commit 3
530c6df097134a410bacec6b3cd013ef38a61aa
src/connector/odbc/examples/c/main.c
浏览文件 @
b9d4476b
...
...
@@ -312,11 +312,7 @@ static int test_sqls_in_stmt(SQLHENV env, SQLHDBC conn, SQLHSTMT stmt, const cha
size_t
len
=
0
;
ssize_t
n
=
0
;
#ifdef _MSC_VER
n
=
taosGetlineImp
(
&
line
,
&
len
,
f
);
#else
n
=
getline
(
&
line
,
&
len
,
f
);
#endif
n
=
tgetline
(
&
line
,
&
len
,
f
);
if
(
n
==-
1
)
break
;
const
char
*
p
=
NULL
;
...
...
src/kit/taosdemo/taosdemo.c
浏览文件 @
b9d4476b
此差异已折叠。
点击以展开。
src/os/src/detail/osMemory.c
浏览文件 @
b9d4476b
...
...
@@ -62,7 +62,7 @@ static void* taosRandomRealloc(void* ptr, size_t size, const char* file, uint32_
static
char
*
taosRandomStrdup
(
const
char
*
str
,
const
char
*
file
,
uint32_t
line
)
{
size_t
len
=
strlen
(
str
);
return
taosRandomAllocFail
(
len
+
1
,
file
,
line
)
?
NULL
:
t
aosStrdupIm
p
(
str
);
return
taosRandomAllocFail
(
len
+
1
,
file
,
line
)
?
NULL
:
t
strdu
p
(
str
);
}
static
char
*
taosRandomStrndup
(
const
char
*
str
,
size_t
size
,
const
char
*
file
,
uint32_t
line
)
{
...
...
@@ -70,11 +70,11 @@ static char* taosRandomStrndup(const char* str, size_t size, const char* file, u
if
(
len
>
size
)
{
len
=
size
;
}
return
taosRandomAllocFail
(
len
+
1
,
file
,
line
)
?
NULL
:
t
aosStrndupIm
p
(
str
,
len
);
return
taosRandomAllocFail
(
len
+
1
,
file
,
line
)
?
NULL
:
t
strndu
p
(
str
,
len
);
}
static
ssize_t
taosRandomGetline
(
char
**
lineptr
,
size_t
*
n
,
FILE
*
stream
,
const
char
*
file
,
uint32_t
line
)
{
return
taosRandomAllocFail
(
*
n
,
file
,
line
)
?
-
1
:
t
aosGetlineImp
(
lineptr
,
n
,
stream
);
return
taosRandomAllocFail
(
*
n
,
file
,
line
)
?
-
1
:
t
getline
(
lineptr
,
n
,
stream
);
}
////////////////////////////////////////////////////////////////////////////////
...
...
@@ -242,7 +242,7 @@ static char* taosStrndupDetectLeak(const char* str, size_t size, const char* fil
static
ssize_t
taosGetlineDetectLeak
(
char
**
lineptr
,
size_t
*
n
,
FILE
*
stream
,
const
char
*
file
,
uint32_t
line
)
{
char
*
buf
=
NULL
;
size_t
bufSize
=
0
;
ssize_t
size
=
t
aosGetlineImp
(
&
buf
,
&
bufSize
,
stream
);
ssize_t
size
=
t
getline
(
&
buf
,
&
bufSize
,
stream
);
if
(
size
!=
-
1
)
{
if
(
*
n
<
size
+
1
)
{
void
*
p
=
taosReallocDetectLeak
(
*
lineptr
,
size
+
1
,
file
,
line
);
...
...
@@ -372,7 +372,7 @@ void taosFreeMem(void* ptr, const char* file, uint32_t line) {
char
*
taosStrdupMem
(
const
char
*
str
,
const
char
*
file
,
uint32_t
line
)
{
switch
(
allocMode
)
{
case
TAOS_ALLOC_MODE_DEFAULT
:
return
t
aosStrdupIm
p
(
str
);
return
t
strdu
p
(
str
);
case
TAOS_ALLOC_MODE_RANDOM_FAIL
:
return
taosRandomStrdup
(
str
,
file
,
line
);
...
...
@@ -380,13 +380,13 @@ char* taosStrdupMem(const char* str, const char* file, uint32_t line) {
case
TAOS_ALLOC_MODE_DETECT_LEAK
:
return
taosStrdupDetectLeak
(
str
,
file
,
line
);
}
return
t
aosStrdupIm
p
(
str
);
return
t
strdu
p
(
str
);
}
char
*
taosStrndupMem
(
const
char
*
str
,
size_t
size
,
const
char
*
file
,
uint32_t
line
)
{
switch
(
allocMode
)
{
case
TAOS_ALLOC_MODE_DEFAULT
:
return
t
aosStrndupIm
p
(
str
,
size
);
return
t
strndu
p
(
str
,
size
);
case
TAOS_ALLOC_MODE_RANDOM_FAIL
:
return
taosRandomStrndup
(
str
,
size
,
file
,
line
);
...
...
@@ -394,13 +394,13 @@ char* taosStrndupMem(const char* str, size_t size, const char* file, uint32_t li
case
TAOS_ALLOC_MODE_DETECT_LEAK
:
return
taosStrndupDetectLeak
(
str
,
size
,
file
,
line
);
}
return
t
aosStrndupIm
p
(
str
,
size
);
return
t
strndu
p
(
str
,
size
);
}
ssize_t
taosGetlineMem
(
char
**
lineptr
,
size_t
*
n
,
FILE
*
stream
,
const
char
*
file
,
uint32_t
line
)
{
switch
(
allocMode
)
{
case
TAOS_ALLOC_MODE_DEFAULT
:
return
t
aosGetlineImp
(
lineptr
,
n
,
stream
);
return
t
getline
(
lineptr
,
n
,
stream
);
case
TAOS_ALLOC_MODE_RANDOM_FAIL
:
return
taosRandomGetline
(
lineptr
,
n
,
stream
,
file
,
line
);
...
...
@@ -408,7 +408,7 @@ ssize_t taosGetlineMem(char **lineptr, size_t *n, FILE *stream, const char* file
case
TAOS_ALLOC_MODE_DETECT_LEAK
:
return
taosGetlineDetectLeak
(
lineptr
,
n
,
stream
,
file
,
line
);
}
return
t
aosGetlineImp
(
lineptr
,
n
,
stream
);
return
t
getline
(
lineptr
,
n
,
stream
);
}
static
void
taosCloseAllocLog
()
{
...
...
@@ -517,4 +517,4 @@ void* taosTZfree(void* ptr) {
free
((
void
*
)((
char
*
)
ptr
-
sizeof
(
size_t
)));
}
return
NULL
;
}
\ No newline at end of file
}
src/os/src/windows/wSemphone.c
浏览文件 @
b9d4476b
...
...
@@ -14,6 +14,7 @@
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
...
...
@@ -24,7 +25,7 @@
bool
taosCheckPthreadValid
(
pthread_t
thread
)
{
return
thread
.
p
!=
NULL
;
}
void
taosResetPthread
(
pthread_t
*
thread
)
{
thread
->
p
=
0
;
}
void
taosResetPthread
(
pthread_t
*
thread
)
{
thread
->
p
=
0
;
}
int64_t
taosGetPthreadId
(
pthread_t
thread
)
{
#ifdef PTW32_VERSION
...
...
@@ -34,27 +35,24 @@ int64_t taosGetPthreadId(pthread_t thread) {
#endif
}
int64_t
taosGetSelfPthreadId
()
{
return
GetCurrentThreadId
();
}
int64_t
taosGetSelfPthreadId
()
{
return
GetCurrentThreadId
();
}
bool
taosComparePthread
(
pthread_t
first
,
pthread_t
second
)
{
return
first
.
p
==
second
.
p
;
}
bool
taosComparePthread
(
pthread_t
first
,
pthread_t
second
)
{
return
first
.
p
==
second
.
p
;
}
int32_t
taosGetPId
()
{
return
GetCurrentProcessId
();
}
int32_t
taosGetPId
()
{
return
GetCurrentProcessId
();
}
int32_t
taosGetCurrentAPPName
(
char
*
name
,
int32_t
*
len
)
{
int32_t
taosGetCurrentAPPName
(
char
*
name
,
int32_t
*
len
)
{
char
filepath
[
1024
]
=
{
0
};
GetModuleFileName
(
NULL
,
filepath
,
MAX_PATH
);
*
strrchr
(
filepath
,
'.'
)
=
'\0'
;
char
*
sub
=
strrchr
(
filepath
,
'.'
);
if
(
sub
!=
NULL
)
{
*
sub
=
'\0'
;
}
strcpy
(
name
,
filepath
);
if
(
len
!=
NULL
)
{
*
len
=
(
int32_t
)
strlen
(
filepath
);
*
len
=
(
int32_t
)
strlen
(
filepath
);
}
return
0
;
...
...
tests/Jenkinsfile
浏览文件 @
b9d4476b
...
...
@@ -37,7 +37,7 @@ pipeline {
stage
(
'Parallel test stage'
)
{
parallel
{
stage
(
'pytest'
)
{
agent
{
label
'
184
'
}
agent
{
label
'
slad1
'
}
steps
{
pre_test
()
sh
'''
...
...
@@ -62,7 +62,7 @@ pipeline {
}
stage
(
'test_crash_gen'
)
{
agent
{
label
"
185
"
}
agent
{
label
"
slad2
"
}
steps
{
pre_test
()
sh
'''
...
...
@@ -149,7 +149,7 @@ pipeline {
}
stage
(
'test_valgrind'
)
{
agent
{
label
"
186
"
}
agent
{
label
"
slad3
"
}
steps
{
pre_test
()
...
...
tests/script/unique/cluster/cache.sim
浏览文件 @
b9d4476b
...
...
@@ -41,7 +41,7 @@ sql create dnode $hostname2
sleep 10000
sql show log.tables;
if $rows
!= 5
then
if $rows
> 6
then
return -1
endi
...
...
tests/script/unique/dnode/monitor.sim
浏览文件 @
b9d4476b
...
...
@@ -56,7 +56,7 @@ print $data30
print $data40
print $data50
if $rows
!= 5
then
if $rows
> 6
then
return -1
endi
...
...
tests/script/unique/dnode/monitor_bug.sim
浏览文件 @
b9d4476b
...
...
@@ -19,7 +19,7 @@ sleep 3000
sql show dnodes
print dnode1 openVnodes $data2_1
if $data2_1
!= 1
then
if $data2_1
> 2
then
return -1
endi
...
...
@@ -41,7 +41,7 @@ print dnode2 openVnodes $data2_2
if $data2_1 != 0 then
goto show2
endi
if $data2_2
!= 1
then
if $data2_2
> 2
then
goto show2
endi
...
...
@@ -55,7 +55,7 @@ print $data30
print $data40
print $data50
if $rows
!= 4
then
if $rows
> 5
then
return -1
endi
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录