Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
2a6cfdfb
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看板
提交
2a6cfdfb
编写于
12月 05, 2019
作者:
F
fang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'feature/fangdoc' of
https://github.com/taosdata/TDengine
into feature/fangdoc
上级
a0b79bd7
9f0f8321
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
340 addition
and
58 deletion
+340
-58
CMakeLists.txt
CMakeLists.txt
+2
-2
documentation/webdocs/markdowndocs/TAOS SQL-ch.md
documentation/webdocs/markdowndocs/TAOS SQL-ch.md
+1
-0
documentation/webdocs/markdowndocs/connector-ch.md
documentation/webdocs/markdowndocs/connector-ch.md
+242
-23
packaging/deb/makedeb.sh
packaging/deb/makedeb.sh
+11
-1
packaging/release.sh
packaging/release.sh
+2
-2
packaging/rpm/makerpm.sh
packaging/rpm/makerpm.sh
+31
-3
packaging/rpm/tdengine.spec
packaging/rpm/tdengine.spec
+1
-1
packaging/tools/makeclient.sh
packaging/tools/makeclient.sh
+2
-2
packaging/tools/makepkg.sh
packaging/tools/makepkg.sh
+2
-2
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+12
-2
src/kit/shell/src/shellLinux.c
src/kit/shell/src/shellLinux.c
+9
-0
src/modules/http/src/httpHandle.c
src/modules/http/src/httpHandle.c
+5
-10
src/system/detail/src/dnodeService.c
src/system/detail/src/dnodeService.c
+6
-1
src/system/detail/src/mgmtSupertableQuery.c
src/system/detail/src/mgmtSupertableQuery.c
+4
-4
src/system/detail/src/vnodeImport.c
src/system/detail/src/vnodeImport.c
+7
-2
src/util/src/version.c
src/util/src/version.c
+3
-3
未找到文件。
CMakeLists.txt
浏览文件 @
2a6cfdfb
...
...
@@ -146,7 +146,7 @@ IF (NOT DEFINED TD_CLUSTER)
SET
(
COMMON_FLAGS
"-std=gnu99 -Wall -fPIC -malign-double -g -Wno-char-subscripts -malign-stringops -msse4.2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE"
)
ENDIF
()
ELSE
()
SET
(
COMMON_FLAGS
"-std=gnu99 -Wall -fPIC -g -Wno-char-subscripts -fsigned-char -
munaligned-access -
fpack-struct=8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE"
)
SET
(
COMMON_FLAGS
"-std=gnu99 -Wall -fPIC -g -Wno-char-subscripts -fsigned-char -fpack-struct=8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE"
)
ENDIF
()
ADD_DEFINITIONS
(
-DLINUX
)
ADD_DEFINITIONS
(
-D_REENTRANT -D__USE_POSIX -D_LIBC_REENTRANT
)
...
...
@@ -156,7 +156,7 @@ IF (NOT DEFINED TD_CLUSTER)
ENDIF
()
SET
(
DEBUG_FLAGS
"-O0 -DDEBUG"
)
SET
(
RELEASE_FLAGS
"-O0"
)
SET
(
COMMON_FLAGS
"-std=gnu99 -Wall -fPIC -g -Wno-char-subscripts -fsigned-char -munaligned-access -fpack-struct=8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE"
)
SET
(
COMMON_FLAGS
"-std=gnu99 -Wall -fPIC -g -Wno-char-subscripts -fsigned-char -munaligned-access -fpack-struct=8 -
latomic -
D_FILE_OFFSET_BITS=64 -D_LARGE_FILE"
)
ADD_DEFINITIONS
(
-DLINUX
)
ADD_DEFINITIONS
(
-D_REENTRANT -D__USE_POSIX -D_LIBC_REENTRANT
)
ADD_DEFINITIONS
(
-DUSE_LIBICONV
)
...
...
documentation/webdocs/markdowndocs/TAOS SQL-ch.md
浏览文件 @
2a6cfdfb
...
...
@@ -18,6 +18,7 @@ TDengine提供类似SQL语法,用户可以在TDengine Shell中使用SQL语句
-
插入记录时,如果时间戳为0,插入数据时使用服务器当前时间
-
Epoch Time: 时间戳也可以是一个长整数,表示从1970-01-01 08:00:00.000开始的毫秒数
-
时间可以加减,比如 now-2h,表明查询时刻向前推2个小时(最近2小时)。数字后面的时间单位:a(毫秒), s(秒), m(分), h(小时), d(天),w(周), n(月), y(年)。比如select
*
from t1 where ts > now-2w and ts <= now-1w, 表示查询两周前整整一周的数据
-
TDengine暂不支持时间窗口按照自然年和自然月切分。Where条件中的时间窗口单位的换算关系如下:interval(1y) 等效于 interval(365d), interval(1n) 等效于 interval(30d), interval(1w) 等效于 interval(7d)
TDengine缺省的时间戳是毫秒精度,但通过修改配置参数enableMicrosecond就可支持微秒。
...
...
documentation/webdocs/markdowndocs/connector-ch.md
浏览文件 @
2a6cfdfb
...
...
@@ -377,21 +377,34 @@ conn.close()
### HTTP请求格式
`http://<ip>:<PORT>/rest/sql`
```
http://<ip>:<PORT>/rest/sql
```
参数说明:
-
IP: 集群中的任一台主机
-
PORT: 配置文件中httpPort配置项,缺省为6020
参数说明:
例如:http://192.168.0.1:6020/rest/sql 是指向IP地址为192.168.0.1的URL.
IP: 集群中的任一台主机
HTTP请求的Header里需带有身份认证信息,TDengine支持Basic认证与自定义认证两种机制,后续版本将提供标准安全的数字签名机制来做身份验证。
PORT: 配置文件中httpPort配置项,缺省为6020
-
自定义身份认证信息如下所示(
<token>
稍后介绍)
```
Authorization: Taosd <TOKEN>
```
如:http://192.168.0.1:6020/rest/sql 是指向IP地址为192.168.0.1的URL.
-
Basic身份认证信息如下所示
HTTP请求的Header里需带有身份认证信息,TDengine单机版仅支持Basic认证机制。
```
Authorization: Basic <TOKEN>
```
HTTP请求的BODY里就是一个完整的SQL语句,SQL语句中的数据表应提供数据库前缀,例如
\<
db-name>.
\<
tb-name>。如果表名不带数据库前缀,系统会返回错误。因为HTTP模块只是一个简单的转发,没有当前DB的概念。
使用curl来发起一个HTTP Request, 语法如下:
使用curl
通过自定义身份认证方式
来发起一个HTTP Request, 语法如下:
```
curl -H 'Authorization: Basic <TOKEN>' -d '<SQL>' <ip>:<PORT>/rest/sql
...
...
@@ -403,11 +416,12 @@ curl -H 'Authorization: Basic <TOKEN>' -d '<SQL>' <ip>:<PORT>/rest/sql
curl -u username:password -d '<SQL>' <ip>:<PORT>/rest/sql
```
其中,
`TOKEN`
为
`{username}:{password}`
经过Base64编码之后的字符串
,
例如
`root:taosdata`
编码后为
`cm9vdDp0YW9zZGF0YQ==`
其中,
`TOKEN`
为
`{username}:{password}`
经过Base64编码之后的字符串
,
例如
`root:taosdata`
编码后为
`cm9vdDp0YW9zZGF0YQ==`
### HTTP返回格式
返回值为JSON格式,如下:
返回值为JSON格式,如下:
```
{
"status": "succ",
...
...
@@ -422,26 +436,60 @@ curl -u username:password -d '<SQL>' <ip>:<PORT>/rest/sql
说明:
-
第一行”status”告知操作结果是成功还是失败;
-
第二行”head”是表的定义,如果不返回结果集,仅有一列“affected_rows”;
-
第三行是具体返回的数据,一排一排的呈现。
如果不返回结果集,仅[[affected_rows]]
-
第四行”rows”
表明总共多少行数据
-
status: 告知操作结果是成功还是失败
-
head: 表的定义,如果不返回结果集,仅有一列“affected_rows”
-
data: 具体返回的数据,一排一排的呈现,
如果不返回结果集,仅[[affected_rows]]
-
rows:
表明总共多少行数据
### 使用示例
### 自定义授权码
HTTP请求中需要带有授权码
`<TOKEN>`
, 用于身份识别。授权码通常由管理员提供, 可简单的通过发送
`HTTP GET`
请求来获取授权码, 操作如下:
```
curl http://<ip>:6020/rest/login/<username>/<password>
```
其中,
`ip`
是TDengine数据库的IP地址,
`username`
为数据库用户名,
`password`
为数据库密码, 返回值为
`JSON`
格式, 各字段含义如下:
-
status:请求结果的标志位
-
code:返回值代码
-
在demo库里查询表t1的所有记录, curl如下:
-
desc: 授权码
`curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sql`
获取授权码示例:
```
curl http://192.168.0.1:6020/rest/login/root/taosdata
```
返回值:
返回值:
```
{
"status": "succ",
"code": 0,
"desc":
"/KfeAzX/f9na8qdtNZmtONryp201ma04bEl8LcvLUd7a8qdtNZmtONryp201ma04"
}
```
### 使用示例
-
在demo库里查询表t1的所有记录:
```
curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sql`
```
返回值:
```
{
"status": "succ",
"head": ["column1","column2","column3"],
"data": [
["2017-12-12 2
3:44:25.730", 1, 2.3
],
["2017-12-12 2
2:44:25.728", 4, 5.6
]
["2017-12-12 2
2:44:25.728",4,5.60000
],
["2017-12-12 2
3:44:25.730",1,2.30000
]
],
"rows": 2
}
...
...
@@ -449,9 +497,11 @@ curl -u username:password -d '<SQL>' <ip>:<PORT>/rest/sql
-
创建库demo:
`curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'create database demo' 192.168.0.1:6020/rest/sql`
```
curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'create database demo' 192.168.0.1:6020/rest/sql`
```
返回值:
返回值:
```
{
"status": "succ",
...
...
@@ -461,11 +511,69 @@ curl -u username:password -d '<SQL>' <ip>:<PORT>/rest/sql
}
```
### 其他用法
#### 结果集采用Unix时间戳
HTTP请求URL采用
`sqlt`
时,返回结果集的时间戳将采用Unix时间戳格式表示,例如
```
curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sqlt
```
返回值:
```
{
"status": "succ",
"head": ["column1","column2","column3"],
"data": [
[1513089865728,4,5.60000],
[1513093465730,1,2.30000]
],
"rows": 2
}
```
#### 结果集采用UTC时间字符串
HTTP请求URL采用
`sqlutc`
时,返回结果集的时间戳将采用UTC时间字符串表示,例如
```
curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sqlutc
```
返回值:
```
{
"status": "succ",
"head": ["column1","column2","column3"],
"data": [
["2017-12-12T22:44:25.728+0800",4,5.60000],
["2017-12-12T23:44:25.730+0800",1,2.30000]
],
"rows": 2
}
```
### 重要配置项
下面仅列出一些与RESTFul接口有关的配置参数,其他系统参数请看配置文件里的说明。注意:配置修改后,需要重启taosd服务才能生效
-
httpIp: 对外提供RESTFul服务的IP地址,默认绑定到0.0.0.0
-
httpPort: 对外提供RESTFul服务的端口号,默认绑定到6020
-
httpMaxThreads: 启动的线程数量,默认为2
-
httpCacheSessions: 缓存连接的数量,并发请求数目需小于此数值的10倍,默认值为100
-
restfulRowLimit: 返回结果集(JSON格式)的最大条数,默认值为10240
-
httpEnableCompress: 是否支持压缩,默认不支持,目前TDengine仅支持gzip压缩格式
-
httpDebugFlag: 日志开关,131:仅错误和报警信息,135:所有,默认131
## Go Connector
#### 安装TDengine
Go的
链接器使用了
到了 libtaos.so 和taos.h,因此,在使用Go连接器之前,需要在程序运行的机器上安装TDengine以获得相关的驱动文件。
Go的
连接器使用
到了 libtaos.so 和taos.h,因此,在使用Go连接器之前,需要在程序运行的机器上安装TDengine以获得相关的驱动文件。
#### Go语言引入package
TDengine提供了GO驱动程序“taosSql”包。taosSql驱动包是基于GO的“database/sql/driver”接口的实现。用户可以通过
`go get`
命令来获取驱动包。
...
...
@@ -659,4 +767,115 @@ promise2.then(function(result) {
### 示例
[
这里
](
https://github.com/taosdata/TDengine/tree/master/tests/examples/nodejs/node-example.js
)
提供了一个使用NodeJS 连接器建表,插入天气数据并查询插入的数据的代码示例
[
这里
](
https://github.com/taosdata/TDengine/tree/master/tests/examples/nodejs/node-example-raw.js
)
同样是一个使用NodeJS 连接器建表,插入天气数据并查询插入的数据的代码示例,但和上面不同的是,该示例只使用
`cursor`
.
\ No newline at end of file
[
这里
](
https://github.com/taosdata/TDengine/tree/master/tests/examples/nodejs/node-example-raw.js
)
同样是一个使用NodeJS 连接器建表,插入天气数据并查询插入的数据的代码示例,但和上面不同的是,该示例只使用
`cursor`
.
## CSharp Connector
在Windows系统上,C#应用程序可以使用TDengine的原生C接口来执行所有数据库操作,后续版本将提供ORM(dapper)框架驱动。
#### 安装TDengine客户端
C#连接器需要使用
`libtaos.so`
和
`taos.h`
。因此,在使用C#连接器之前,需在程序运行的Windows环境安装TDengine的Windows客户端,以便获得相关驱动文件。
安装完成后,在文件夹
`C:/TDengine/examples/C#`
中,将会看到两个文件
-
TDengineDriver.cs 调用taos.dll文件的Native C方法
-
TDengineTest.cs 参考程序示例
在文件夹
`C:\Windows\System32`
,将会看到
`taos.dll`
文件
#### 使用方法
-
将C#接口文件TDengineDriver.cs加入到应用程序所在.NET项目中
-
参考TDengineTest.cs来定义数据库连接参数,及执行数据插入、查询等操作的方法
-
因为C#接口需要用到
`taos.dll`
文件,用户可以将
`taos.dll`
文件加入.NET解决方案中
#### 注意事项
-
`taos.dll`
文件使用x64平台编译,所以.NET项目在生成.exe文件时,“解决方案”/“项目”的“平台”请均选择“x64”。
-
此.NET接口目前已经在Visual Studio 2013/2015/2017中验证过,其它VS版本尚待验证。
#### 第三方驱动
Maikebing.Data.Taos是一个基于TDengine的RESTful Connector构建的ADO.Net提供器,该开发包由热心贡献者
`麦壳饼@@maikebing`
提供,具体请参考
```
https://gitee.com/maikebing/Maikebing.EntityFrameworkCore.Taos
```
## Windows客户端及程序接口
### 客户端安装
在Windows操作系统下,TDengine提供64位的Windows客户端,客户端安装程序为.exe文件,运行该文件即可安装,安装路径为C:
\T
Dengine。Windows的客户端可运行在主流的64位Windows平台之上,客户端目录结构如下:
```
├── cfg
│ └── taos.cfg
├── connector
│ ├── go
│ ├── grafana
│ ├── jdbc
│ └── python
├── driver
│ ├── taos.dll
│ ├── taos.exp
│ └── taos.lib
├── examples
│ ├── bash
│ ├── c
│ ├── C#
│ ├── go
│ ├── JDBC
│ ├── lua
│ ├── matlab
│ ├── nodejs
│ ├── python
│ ├── R
│ └── rust
├── include
│ └── taos.h
└── taos.exe
```
其中,最常用的文件列出如下:
+
Client可执行文件: C:/TDengine/taos.exe
+
配置文件: C:/TDengine/cfg/taos.cfg
+
C驱动程序目录: C:/TDengine/driver
+
C驱动程序头文件: C:/TDengine/include
+
JDBC驱动程序目录: C:/TDengine/connector/jdbc
+
GO驱动程序目录:C:/TDengine/connector/go
+
Python驱动程序目录:C:/TDengine/connector/python
+
C#驱动程序及示例代码: C:/TDengine/examples/C#
+
日志目录(第一次运行程序时生成):C:/TDengine/log
### 注意事项
#### Shell工具注意事项
在开始菜单中搜索cmd程序,通过命令行方式执行taos.exe即可打开TDengine的Client程序,如下所示,其中ServerIP为TDengine所在Linux服务器的IP地址
```
taos -h <ServerIP>
```
在cmd中对taos的使用与Linux平台没有差别,但需要注意以下几点:
+
确保Windows防火墙或者其他杀毒软件处于关闭状态,TDengine的服务端与客户端通信的端口请参考
`服务端配置`
章节
+
确认客户端连接时指定了正确的服务器IP地址
+
ping服务器IP,如果没有反应,请检查你的网络
#### C++接口注意事项
TDengine在Window系统上提供的API与Linux系统是相同的, 应用程序使用时,需要包含TDengine头文件taos.h,连接时需要链接TDengine库taos.lib,运行时将taos.dll放到可执行文件目录下。
#### JDBC接口注意事项
在Windows系统上,应用程序可以使用JDBC接口来操纵数据库,使用JDBC接口的注意事项如下:
+
将JDBC驱动程序(JDBCDriver-1.0.0-dist.jar)放置到当前的CLASS_PATH中;
+
将Windows开发包(taos.dll)放置到system32目录下。
packaging/deb/makedeb.sh
浏览文件 @
2a6cfdfb
...
...
@@ -7,6 +7,7 @@
compile_dir
=
$1
output_dir
=
$2
tdengine_ver
=
$3
armver
=
$4
script_dir
=
"
$(
dirname
$(
readlink
-f
$0
))
"
top_dir
=
"
$(
readlink
-m
${
script_dir
}
/../..
)
"
...
...
@@ -63,7 +64,16 @@ debver="Version: "$tdengine_ver
sed
-i
"2c
$debver
"
${
pkg_dir
}
/DEBIAN/control
#get taos version, then set deb name
debname
=
"tdengine-"
${
tdengine_ver
}
".deb"
if
[
-z
"
$armver
"
]
;
then
debname
=
"TDengine-"
${
tdengine_ver
}
".deb"
elif
[
"
$armver
"
==
"arm64"
]
;
then
debname
=
"TDengine-"
${
tdengine_ver
}
"-arm64.deb"
elif
[
"
$armver
"
==
"arm32"
]
;
then
debname
=
"TDengine-"
${
tdengine_ver
}
"-arm32.deb"
else
echo
"input parameter error!!!"
return
fi
# make deb package
dpkg
-b
${
pkg_dir
}
$debname
...
...
packaging/release.sh
浏览文件 @
2a6cfdfb
...
...
@@ -149,7 +149,7 @@ if [ -d ${output_dir} ]; then
fi
${
csudo
}
mkdir
-p
${
output_dir
}
cd
${
script_dir
}
/deb
${
csudo
}
./makedeb.sh
${
compile_dir
}
${
output_dir
}
${
version
}
${
csudo
}
./makedeb.sh
${
compile_dir
}
${
output_dir
}
${
version
}
${
armver
}
echo
"do rpm package for the centos system"
output_dir
=
"
${
top_dir
}
/rpms"
...
...
@@ -158,7 +158,7 @@ if [ -d ${output_dir} ]; then
fi
${
csudo
}
mkdir
-p
${
output_dir
}
cd
${
script_dir
}
/rpm
${
csudo
}
./makerpm.sh
${
compile_dir
}
${
output_dir
}
${
version
}
${
csudo
}
./makerpm.sh
${
compile_dir
}
${
output_dir
}
${
version
}
${
armver
}
echo
"do tar.gz package for all systems"
cd
${
script_dir
}
/tools
...
...
packaging/rpm/makerpm.sh
浏览文件 @
2a6cfdfb
...
...
@@ -2,10 +2,14 @@
#
# Generate rpm package for centos
#set -e
#set -x
#curr_dir=$(pwd)
compile_dir
=
$1
output_dir
=
$2
tdengine_ver
=
$3
armver
=
$4
script_dir
=
"
$(
dirname
$(
readlink
-f
$0
))
"
top_dir
=
"
$(
readlink
-m
${
script_dir
}
/../..
)
"
...
...
@@ -24,8 +28,25 @@ if command -v sudo > /dev/null; then
csudo
=
"sudo"
fi
function
cp_rpm_package
()
{
local
cur_dir
cd
$1
cur_dir
=
$(
pwd
)
for
dirlist
in
$(
ls
${
cur_dir
}
)
;
do
if
test
-d
${
dirlist
}
;
then
cd
${
dirlist
}
cp_rpm_package
${
cur_dir
}
/
${
dirlist
}
cd
..
fi
if
test
-e
${
dirlist
}
;
then
cp
${
cur_dir
}
/
${
dirlist
}
${
output_dir
}
/TDengine-
${
tdengine_ver
}
.rpm
fi
done
}
if
[
-d
${
pkg_dir
}
]
;
then
${
csudo
}
rm
-rf
${
pkg_dir
}
${
csudo
}
rm
-rf
${
pkg_dir
}
fi
${
csudo
}
mkdir
-p
${
pkg_dir
}
cd
${
pkg_dir
}
...
...
@@ -35,7 +56,14 @@ ${csudo} mkdir -p BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
${
csudo
}
rpmbuild
--define
=
"_version
${
tdengine_ver
}
"
--define
=
"_topdir
${
pkg_dir
}
"
--define
=
"_compiledir
${
compile_dir
}
"
-bb
${
spec_file
}
# copy rpm package to output_dir, then clean temp dir
#echo "rmpbuild end, cur_dir: $(pwd) "
${
csudo
}
cp
-rf
RPMS/
*
${
output_dir
}
#${csudo} cp -rf RPMS/* ${output_dir}
cp_rpm_package
${
pkg_dir
}
/RPMS
if
[
"
$armver
"
==
"arm64"
]
;
then
mv
${
output_dir
}
/TDengine-
${
tdengine_ver
}
.rpm
${
output_dir
}
/TDengine-
${
tdengine_ver
}
-arm64
.rpm
elif
[
"
$armver
"
==
"arm32"
]
;
then
mv
${
output_dir
}
/TDengine-
${
tdengine_ver
}
.rpm
${
output_dir
}
/TDengine-
${
tdengine_ver
}
-arm32
.rpm
fi
cd
..
${
csudo
}
rm
-rf
${
pkg_dir
}
packaging/rpm/tdengine.spec
浏览文件 @
2a6cfdfb
...
...
@@ -2,7 +2,7 @@
%define cfg_install_dir /etc/taos
%define __strip /bin/true
Name:
td
engine
Name:
TD
engine
Version: %{_version}
Release: 3%{?dist}
Summary: tdengine from taosdata
...
...
packaging/tools/makeclient.sh
浏览文件 @
2a6cfdfb
...
...
@@ -19,8 +19,8 @@ code_dir="${top_dir}/src"
release_dir
=
"
${
top_dir
}
/release"
community_dir
=
"
${
script_dir
}
/../../../community/src"
package_name
=
'linux'
install_dir
=
"
${
release_dir
}
/
taos-client-
${
version
}
-
${
package_name
}
-
$(
echo
${
build_time
}
|
tr
': '
-
)
"
#
package_name='linux'
install_dir
=
"
${
release_dir
}
/
TDengine-client-
${
version
}
"
# Directories and files.
bin_files
=
"
${
build_dir
}
/bin/taos
${
build_dir
}
/bin/taosdump
${
script_dir
}
/remove_client.sh"
...
...
packaging/tools/makepkg.sh
浏览文件 @
2a6cfdfb
...
...
@@ -16,8 +16,8 @@ build_dir="${compile_dir}/build"
code_dir
=
"
${
top_dir
}
/src"
release_dir
=
"
${
top_dir
}
/release"
package_name
=
'linux'
install_dir
=
"
${
release_dir
}
/
taos-
${
version
}
-
${
package_name
}
-
$(
echo
${
build_time
}
|
tr
': '
-
)
"
#
package_name='linux'
install_dir
=
"
${
release_dir
}
/
TDengine-
${
version
}
"
# Directories and files.
bin_files
=
"
${
build_dir
}
/bin/taosd
${
build_dir
}
/bin/taos
${
build_dir
}
/bin/taosdemo
${
build_dir
}
/bin/taosdump
${
script_dir
}
/remove.sh"
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
2a6cfdfb
...
...
@@ -29,9 +29,19 @@
#elif defined(DARWIN)
char
CLIENT_VERSION
[]
=
"Welcome to the TDengine shell from mac, client version:%s "
;
#else
char
CLIENT_VERSION
[]
=
"Welcome to the TDengine shell from linux, client version:%s "
;
#ifdef CLUSTER
char
CLIENT_VERSION
[]
=
"Welcome to the TDengine shell from linux, enterprise client version:%s "
;
#else
char
CLIENT_VERSION
[]
=
"Welcome to the TDengine shell from linux, community client version:%s "
;
#endif
#endif
char
SERVER_VERSION
[]
=
"server version:%s
\n
Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.
\n\n
"
;
#ifdef CLUSTER
char
SERVER_VERSION
[]
=
"enterprise server version:%s
\n
Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.
\n\n
"
;
#else
char
SERVER_VERSION
[]
=
"community server version:%s
\n
Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.
\n\n
"
;
#endif
char
PROMPT_HEADER
[]
=
"taos> "
;
char
CONTINUE_PROMPT
[]
=
" -> "
;
int
prompt_size
=
6
;
...
...
src/kit/shell/src/shellLinux.c
浏览文件 @
2a6cfdfb
...
...
@@ -105,6 +105,15 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
static
struct
argp
argp
=
{
options
,
parse_opt
,
args_doc
,
doc
};
void
shellParseArgument
(
int
argc
,
char
*
argv
[],
struct
arguments
*
arguments
)
{
char
verType
[
32
]
=
{
0
};
#ifdef CLUSTER
sprintf
(
verType
,
"enterprise version: %s
\n
"
,
version
);
#else
sprintf
(
verType
,
"community version: %s
\n
"
,
version
);
#endif
argp_program_version
=
verType
;
argp_parse
(
&
argp
,
argc
,
argv
,
0
,
0
,
arguments
);
if
(
arguments
->
abort
)
{
error
(
10
,
0
,
"ABORTED"
);
...
...
src/modules/http/src/httpHandle.c
浏览文件 @
2a6cfdfb
...
...
@@ -293,19 +293,14 @@ bool httpReadChunkedBody(HttpContext* pContext, HttpParser* pParser) {
int
httpReadUnChunkedBody
(
HttpContext
*
pContext
,
HttpParser
*
pParser
)
{
int
dataReadLen
=
pParser
->
bufsize
-
(
int
)(
pParser
->
data
.
pos
-
pParser
->
buffer
);
if
(
dataReadLen
>
pParser
->
data
.
len
)
{
httpError
(
"context:%p, fd:%d, ip:%s, un-chunked body length invalid, dataReadLen:%d > pContext->data.len:%d"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
dataReadLen
,
pParser
->
data
.
len
);
httpError
(
"context:%p, fd:%d, ip:%s, un-chunked body length invalid,
read size:%d
dataReadLen:%d > pContext->data.len:%d"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
pContext
->
parser
.
bufsize
,
dataReadLen
,
pParser
->
data
.
len
);
httpSendErrorResp
(
pContext
,
HTTP_PARSE_BODY_ERROR
);
return
HTTP_CHECK_BODY_ERROR
;
}
else
if
(
dataReadLen
<
pParser
->
data
.
len
)
{
httpTrace
(
"context:%p, fd:%d, ip:%s, un-chunked body not finished, dataReadLen:%d < pContext->data.len:%d, continue read"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
dataReadLen
,
pParser
->
data
.
len
);
if
(
!
httpReadDataImp
(
pContext
))
{
httpError
(
"context:%p, fd:%d, ip:%s, read chunked request error"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
);
return
HTTP_CHECK_BODY_ERROR
;
}
else
{
return
HTTP_CHECK_BODY_CONTINUE
;
}
httpTrace
(
"context:%p, fd:%d, ip:%s, un-chunked body not finished, read size:%d dataReadLen:%d < pContext->data.len:%d, continue read"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
pContext
->
parser
.
bufsize
,
dataReadLen
,
pParser
->
data
.
len
);
return
HTTP_CHECK_BODY_CONTINUE
;
}
else
{
return
HTTP_CHECK_BODY_SUCCESS
;
}
...
...
src/system/detail/src/dnodeService.c
浏览文件 @
2a6cfdfb
...
...
@@ -55,7 +55,12 @@ int main(int argc, char *argv[]) {
exit
(
EXIT_FAILURE
);
}
}
else
if
(
strcmp
(
argv
[
i
],
"-V"
)
==
0
)
{
printf
(
"version: %s compatible_version: %s
\n
"
,
version
,
compatible_version
);
#ifdef CLUSTER
printf
(
"enterprise version: %s compatible_version: %s
\n
"
,
version
,
compatible_version
);
#else
printf
(
"community version: %s compatible_version: %s
\n
"
,
version
,
compatible_version
);
#endif
printf
(
"gitinfo: %s
\n
"
,
gitinfo
);
printf
(
"buildinfo: %s
\n
"
,
buildinfo
);
return
0
;
...
...
src/system/detail/src/mgmtSupertableQuery.c
浏览文件 @
2a6cfdfb
...
...
@@ -56,7 +56,7 @@ static int32_t tabObjVGIDComparator(const void* pLeft, const void* pRight) {
// monotonic inc in memory address
static
int32_t
tabObjPointerComparator
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
int64_t
ret
=
(
int64_t
)
pLeft
-
(
int64_t
)
pRight
;
int64_t
ret
=
(
*
(
STabObj
**
)(
pLeft
))
->
uid
-
(
*
(
STabObj
**
)(
pRight
))
->
uid
;
if
(
ret
==
0
)
{
return
0
;
}
else
{
...
...
@@ -427,11 +427,11 @@ static tQueryResultset* doNestedLoopIntersect(tQueryResultset* pRes1, tQueryResu
}
static
tQueryResultset
*
doSortIntersect
(
tQueryResultset
*
pRes1
,
tQueryResultset
*
pRes2
)
{
size_t
sizePtr
=
sizeof
(
void
*
);
size_t
sizePtr
=
sizeof
(
void
*
);
qsort
(
pRes1
->
pRes
,
pRes1
->
num
,
sizePtr
,
tabObjPointerComparator
);
qsort
(
pRes2
->
pRes
,
pRes2
->
num
,
sizePtr
,
tabObjPointerComparator
);
int32_t
i
=
0
;
int32_t
j
=
0
;
...
...
src/system/detail/src/vnodeImport.c
浏览文件 @
2a6cfdfb
...
...
@@ -466,8 +466,6 @@ static int vnodeLoadNeededBlockData(SMeterObj *pObj, SImportHandle *pHandle, int
SCompBlock
*
pBlock
=
pHandle
->
pBlocks
+
blockId
;
*
code
=
TSDB_CODE_SUCCESS
;
assert
(
pBlock
->
sversion
==
pObj
->
sversion
);
SVnodeObj
*
pVnode
=
vnodeList
+
pObj
->
vnode
;
int
dfd
=
pBlock
->
last
?
pVnode
->
lfd
:
pVnode
->
dfd
;
...
...
@@ -989,6 +987,13 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
}
}
int
aslot
=
MIN
(
blockIter
.
slot
,
importHandle
.
compInfo
.
numOfBlocks
-
1
);
int64_t
sversion
=
importHandle
.
pBlocks
[
aslot
].
sversion
;
if
(
sversion
!=
pObj
->
sversion
)
{
code
=
TSDB_CODE_OTHERS
;
goto
_error_merge
;
}
// Open the new .t file if not opened yet.
if
(
pVnode
->
nfd
<=
0
)
{
if
(
vnodeOpenTempFilesForImport
(
&
importHandle
,
pObj
,
fid
)
<
0
)
{
...
...
src/util/src/version.c
浏览文件 @
2a6cfdfb
char
version
[
64
]
=
"1.6.4.
0
"
;
char
version
[
64
]
=
"1.6.4.
1
"
;
char
compatible_version
[
64
]
=
"1.6.1.0"
;
char
gitinfo
[
128
]
=
"
6d27c11e3b23ae69366df366a6517853648c41f7
"
;
char
buildinfo
[
512
]
=
"Built by ubuntu at 2019-12-0
1 12:27
"
;
char
gitinfo
[
128
]
=
"
893fac9da79ef9b88355fcd18d29057adf909bbd
"
;
char
buildinfo
[
512
]
=
"Built by ubuntu at 2019-12-0
2 22:21
"
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录