提交 455d0ed6 编写于 作者: C Cary Xu

Merge branch 'develop' into feature/TS-272

--- ---
kind: pipeline kind: pipeline
name: test_amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: gcc
commands:
- apt-get update
- apt-get install -y cmake build-essential
- git submodule update --init --recursive
- mkdir debug
- cd debug
- cmake ..
- make -j4
trigger:
event:
- pull_request
when:
branch:
- develop
- master
- 2.0
---
kind: pipeline
name: test_arm64_bionic name: test_arm64_bionic
platform: platform:
...@@ -37,7 +10,10 @@ steps: ...@@ -37,7 +10,10 @@ steps:
image: arm64v8/ubuntu:bionic image: arm64v8/ubuntu:bionic
commands: commands:
- apt-get update - apt-get update
- apt-get install -y cmake build-essential - apt-get install -y cmake git build-essential wget
- wget https://dl.google.com/go/go1.16.9.linux-arm64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-arm64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -65,7 +41,10 @@ steps: ...@@ -65,7 +41,10 @@ steps:
commands: commands:
- echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections - echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
- apt-get update - apt-get update
- apt-get install -y -qq cmake build-essential - apt-get install -y -qq git cmake build-essential wget
- wget https://dl.google.com/go/go1.16.9.linux-arm64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-arm64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -91,11 +70,18 @@ steps: ...@@ -91,11 +70,18 @@ steps:
- name: build - name: build
image: arm64v8/centos:7 image: arm64v8/centos:7
commands: commands:
- yum install -y gcc gcc-c++ make cmake git - yum install -y epel-release
- yum update
- yum install -y gcc gcc-c++ make cmake3 wget git
- wget https://dl.google.com/go/go1.16.9.linux-arm64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-arm64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- ln -s /usr/bin/cmake3 /usr/bin/cmake
- go version
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
- cmake .. -DCPUTYPE=aarch64 > /dev/null - cmake3 .. -DCPUTYPE=aarch64 > /dev/null
- make -j4 - make -j4
trigger: trigger:
event: event:
...@@ -117,7 +103,7 @@ steps: ...@@ -117,7 +103,7 @@ steps:
- name: build - name: build
image: arm64v8/centos:8 image: arm64v8/centos:8
commands: commands:
- dnf install -y gcc gcc-c++ make cmake epel-release git libarchive - dnf install -y gcc gcc-c++ make cmake epel-release git libarchive golang
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -144,7 +130,7 @@ steps: ...@@ -144,7 +130,7 @@ steps:
image: arm32v7/ubuntu:bionic image: arm32v7/ubuntu:bionic
commands: commands:
- apt-get update - apt-get update
- apt-get install -y cmake build-essential - apt-get install -y cmake build-essential golang-go git
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -171,7 +157,10 @@ steps: ...@@ -171,7 +157,10 @@ steps:
image: ubuntu:trusty image: ubuntu:trusty
commands: commands:
- apt-get update - apt-get update
- apt-get install -y gcc cmake3 build-essential git binutils-2.26 - apt-get install -y gcc cmake3 build-essential git binutils-2.26 wget
- wget https://dl.google.com/go/go1.16.9.linux-amd64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-amd64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -198,7 +187,10 @@ steps: ...@@ -198,7 +187,10 @@ steps:
image: ubuntu:xenial image: ubuntu:xenial
commands: commands:
- apt-get update - apt-get update
- apt-get install -y gcc cmake build-essential - apt-get install -y gcc cmake build-essential git wget
- wget https://dl.google.com/go/go1.16.9.linux-amd64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-amd64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -224,7 +216,10 @@ steps: ...@@ -224,7 +216,10 @@ steps:
image: ubuntu:bionic image: ubuntu:bionic
commands: commands:
- apt-get update - apt-get update
- apt-get install -y gcc cmake build-essential - apt-get install -y gcc cmake build-essential git wget
- wget https://dl.google.com/go/go1.16.9.linux-amd64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-amd64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
...@@ -249,11 +244,17 @@ steps: ...@@ -249,11 +244,17 @@ steps:
- name: build - name: build
image: ansible/centos7-ansible image: ansible/centos7-ansible
commands: commands:
- yum install -y gcc gcc-c++ make cmake - yum install -y epel-release
- yum update
- yum install -y gcc gcc-c++ make cmake3 wget git
- wget https://dl.google.com/go/go1.16.9.linux-amd64.tar.gz
- tar -C /usr/local -xzf go1.16.9.linux-amd64.tar.gz
- export PATH=$PATH:/usr/local/go/bin
- ln -s /usr/bin/cmake3 /usr/bin/cmake
- git submodule update --init --recursive - git submodule update --init --recursive
- mkdir debug - mkdir debug
- cd debug - cd debug
- cmake .. - cmake3 ..
- make -j4 - make -j4
trigger: trigger:
event: event:
......
...@@ -10,9 +10,9 @@ ELSE () ...@@ -10,9 +10,9 @@ ELSE ()
ENDIF () ENDIF ()
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
ELSE () ELSE ()
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
ENDIF () ENDIF ()
SET(TD_ACCOUNT FALSE) SET(TD_ACCOUNT FALSE)
...@@ -38,7 +38,7 @@ MESSAGE(STATUS "Community directory: " ${TD_COMMUNITY_DIR}) ...@@ -38,7 +38,7 @@ MESSAGE(STATUS "Community directory: " ${TD_COMMUNITY_DIR})
INCLUDE(cmake/input.inc) INCLUDE(cmake/input.inc)
INCLUDE(cmake/platform.inc) INCLUDE(cmake/platform.inc)
IF (TD_WINDOWS OR TD_DARWIN) IF (TD_WINDOWS OR TD_DARWIN)
SET(TD_SOMODE_STATIC TRUE) SET(TD_SOMODE_STATIC TRUE)
ENDIF () ENDIF ()
......
...@@ -99,7 +99,7 @@ def pre_test(){ ...@@ -99,7 +99,7 @@ def pre_test(){
sh ''' sh '''
cd ${WK} cd ${WK}
git pull >/dev/null git pull >/dev/null
git submodule update --init --recursive
export TZ=Asia/Harbin export TZ=Asia/Harbin
date date
git clean -dfx git clean -dfx
...@@ -149,6 +149,7 @@ def pre_test_win(){ ...@@ -149,6 +149,7 @@ def pre_test_win(){
git fetch origin +refs/pull/%CHANGE_ID%/merge git fetch origin +refs/pull/%CHANGE_ID%/merge
git checkout -qf FETCH_HEAD git checkout -qf FETCH_HEAD
git clean -dfx git clean -dfx
git submodule update --init --recursive
cd C:\\workspace\\TDinternal cd C:\\workspace\\TDinternal
git reset --hard HEAD~10 git reset --hard HEAD~10
''' '''
...@@ -469,35 +470,35 @@ pipeline { ...@@ -469,35 +470,35 @@ pipeline {
} }
} }
stage('build'){ // stage('build'){
agent{label " wintest "} // agent{label " wintest "}
steps { // steps {
pre_test() // pre_test()
script{ // script{
while(win_stop == 0){ // while(win_stop == 0){
sleep(1) // sleep(1)
} // }
} // }
} // }
} // }
stage('test'){ // stage('test'){
agent{label "win"} // agent{label "win"}
steps{ // steps{
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { // catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
pre_test_win() // pre_test_win()
timeout(time: 20, unit: 'MINUTES'){ // timeout(time: 20, unit: 'MINUTES'){
bat''' // bat'''
cd C:\\workspace\\TDinternal\\community\\tests\\pytest // cd C:\\workspace\\TDinternal\\community\\tests\\pytest
.\\test-all.bat Wintest // .\\test-all.bat Wintest
''' // '''
} // }
} // }
script{ // script{
win_stop=1 // win_stop=1
} // }
} // }
} // }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
[![TDengine](TDenginelogo.png)](https://www.taosdata.com) [![TDengine](TDenginelogo.png)](https://www.taosdata.com)
English | [简体中文](./README-CN.md) English | [简体中文](./README-CN.md)
We are hiring, check [here](https://www.taosdata.com/en/careers/) We are hiring, check [here](https://www.taosdata.com/en/careers/)
# What is TDengine? # What is TDengine?
...@@ -32,7 +32,7 @@ For user manual, system design and architecture, engineering blogs, refer to [TD ...@@ -32,7 +32,7 @@ For user manual, system design and architecture, engineering blogs, refer to [TD
# Building # Building
At the moment, TDengine only supports building and running on Linux systems. You can choose to [install from packages](https://www.taosdata.com/en/getting-started/#Install-from-Package) or from the source code. This quick guide is for installation from the source only. At the moment, TDengine only supports building and running on Linux systems. You can choose to [install from packages](https://www.taosdata.com/en/getting-started/#Install-from-Package) or from the source code. This quick guide is for installation from the source only.
To build TDengine, use [CMake](https://cmake.org/) 2.8.12.x or higher versions in the project directory. To build TDengine, use [CMake](https://cmake.org/) 3.0.2 or higher versions in the project directory.
## Install tools ## Install tools
...@@ -47,7 +47,7 @@ sudo apt-get install -y gcc cmake3 build-essential git binutils-2.26 ...@@ -47,7 +47,7 @@ sudo apt-get install -y gcc cmake3 build-essential git binutils-2.26
export PATH=/usr/lib/binutils-2.26/bin:$PATH export PATH=/usr/lib/binutils-2.26/bin:$PATH
``` ```
To compile and package the JDBC driver source code, you should have a Java jdk-8 or higher and Apache Maven 2.7 or higher installed. To compile and package the JDBC driver source code, you should have a Java jdk-8 or higher and Apache Maven 2.7 or higher installed.
To install openjdk-8: To install openjdk-8:
```bash ```bash
sudo apt-get install -y openjdk-8-jdk sudo apt-get install -y openjdk-8-jdk
...@@ -60,7 +60,10 @@ sudo apt-get install -y maven ...@@ -60,7 +60,10 @@ sudo apt-get install -y maven
### Centos 7: ### Centos 7:
```bash ```bash
sudo yum install -y gcc gcc-c++ make cmake git sudo yum install epel-release
sudo yum update
sudo yum install -y gcc gcc-c++ make cmake3 git
sudo ln -sf /usr/bin/cmake3 /usr/bin/cmake
``` ```
To install openjdk-8: To install openjdk-8:
...@@ -94,7 +97,7 @@ TDengine includes few components developed by Go language. Please refer to golan ...@@ -94,7 +97,7 @@ TDengine includes few components developed by Go language. Please refer to golan
Please use version 1.14+. For the user in China, we recommend using a proxy to accelerate package downloading. Please use version 1.14+. For the user in China, we recommend using a proxy to accelerate package downloading.
``` ```
go env -w GO111MODULE=on go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct go env -w GOPROXY=https://goproxy.cn,direct
``` ```
## Get the source codes ## Get the source codes
...@@ -236,7 +239,7 @@ In another terminal, use the TDengine shell to connect the server: ...@@ -236,7 +239,7 @@ In another terminal, use the TDengine shell to connect the server:
./build/bin/taos -c test/cfg ./build/bin/taos -c test/cfg
``` ```
option "-c test/cfg" specifies the system configuration file directory. option "-c test/cfg" specifies the system configuration file directory.
# Try TDengine # Try TDengine
It is easy to run SQL commands from TDengine shell which is the same as other SQL databases. It is easy to run SQL commands from TDengine shell which is the same as other SQL databases.
......
...@@ -125,8 +125,13 @@ IF (TD_APLHINE) ...@@ -125,8 +125,13 @@ IF (TD_APLHINE)
ENDIF () ENDIF ()
IF (TD_LINUX) IF (TD_LINUX)
IF (TD_BUILD_HTTP) IF (TD_ARM_32)
SET(TD_BUILD_HTTP TRUE)
ADD_DEFINITIONS(-DHTTP_EMBEDDED) ADD_DEFINITIONS(-DHTTP_EMBEDDED)
ELSE ()
IF (TD_BUILD_HTTP)
ADD_DEFINITIONS(-DHTTP_EMBEDDED)
ENDIF ()
ENDIF () ENDIF ()
ELSE () ELSE ()
SET(TD_BUILD_HTTP TRUE) SET(TD_BUILD_HTTP TRUE)
......
PROJECT(TDengine) PROJECT(TDengine)
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
ELSE () ELSE ()
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
ENDIF () ENDIF ()
ADD_SUBDIRECTORY(zlib-1.2.11) ADD_SUBDIRECTORY(zlib-1.2.11)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
# MQTT-C build options # MQTT-C build options
option(MQTT_C_OpenSSL_SUPPORT "Build MQTT-C with OpenSSL support?" OFF) option(MQTT_C_OpenSSL_SUPPORT "Build MQTT-C with OpenSSL support?" OFF)
......
PROJECT(TDengine) PROJECT(TDengine)
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
ELSE () ELSE ()
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
ENDIF () ENDIF ()
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_WINDOWS) IF (TD_WINDOWS)
......
...@@ -53,6 +53,8 @@ TDengine是一个高效的存储、查询、分析时序大数据的平台,专 ...@@ -53,6 +53,8 @@ TDengine是一个高效的存储、查询、分析时序大数据的平台,专
* [Schemaless 写入](/insert#schemaless):免于预先建表,将数据直接写入时自动维护元数据结构 * [Schemaless 写入](/insert#schemaless):免于预先建表,将数据直接写入时自动维护元数据结构
* [Prometheus 写入](/insert#prometheus):配置Prometheus, 不用任何代码,将数据直接写入 * [Prometheus 写入](/insert#prometheus):配置Prometheus, 不用任何代码,将数据直接写入
* [Telegraf 写入](/insert#telegraf):配置Telegraf, 不用任何代码,将采集数据直接写入 * [Telegraf 写入](/insert#telegraf):配置Telegraf, 不用任何代码,将采集数据直接写入
* [collectd 直接写入](/insert#collectd):配置 collectd,不用任何代码,将采集数据直接写入
* [StatsD 直接写入](/insert#statsd):配置 StatsD,不用任何代码,将采集数据直接写入
* [EMQ X Broker](/insert#emq):配置EMQ X,不用任何代码,就可将MQTT数据直接写入 * [EMQ X Broker](/insert#emq):配置EMQ X,不用任何代码,就可将MQTT数据直接写入
* [HiveMQ Broker](/insert#hivemq):配置HiveMQ,不用任何代码,就可将MQTT数据直接写入 * [HiveMQ Broker](/insert#hivemq):配置HiveMQ,不用任何代码,就可将MQTT数据直接写入
......
# 高效写入数据 # 高效写入数据
TDengine支持多种接口写入数据,包括SQL, Prometheus, Telegraf, EMQ MQTT Broker, HiveMQ Broker, CSV文件等,后续还将提供Kafka, OPC等接口。数据可以单条插入,也可以批量插入,可以插入一个数据采集点的数据,也可以同时插入多个数据采集点的数据。支持多线程插入,支持时间乱序数据插入,也支持历史数据插入。 TDengine支持多种接口写入数据,包括SQL,Prometheus,Telegraf,collectd,StatsD,EMQ MQTT Broker,HiveMQ Broker,CSV文件等,后续还将提供Kafka,OPC等接口。数据可以单条插入,也可以批量插入,可以插入一个数据采集点的数据,也可以同时插入多个数据采集点的数据。支持多线程插入,支持时间乱序数据插入,也支持历史数据插入。
## <a class="anchor" id="sql"></a>SQL 写入 ## <a class="anchor" id="sql"></a>SQL 写入
...@@ -98,7 +98,7 @@ Schemaless 按照如下原则来处理行数据: ...@@ -98,7 +98,7 @@ Schemaless 按照如下原则来处理行数据:
用户需要从github下载[Bailongma](https://github.com/taosdata/Bailongma)的源码,使用Golang语言编译器编译生成可执行文件。在开始编译前,需要准备好以下条件: 用户需要从github下载[Bailongma](https://github.com/taosdata/Bailongma)的源码,使用Golang语言编译器编译生成可执行文件。在开始编译前,需要准备好以下条件:
- Linux操作系统的服务器 - Linux操作系统的服务器
- 安装好Golang,1.10版本以上 - 安装好Golang,1.14版本以上
- 对应的TDengine版本。因为用到了TDengine的客户端动态链接库,因此需要安装好和服务端相同版本的TDengine程序;比如服务端版本是TDengine 2.0.0, 则在Bailongma所在的Linux服务器(可以与TDengine在同一台服务器,或者不同服务器) - 对应的TDengine版本。因为用到了TDengine的客户端动态链接库,因此需要安装好和服务端相同版本的TDengine程序;比如服务端版本是TDengine 2.0.0, 则在Bailongma所在的Linux服务器(可以与TDengine在同一台服务器,或者不同服务器)
Bailongma项目中有一个文件夹blm_prometheus,存放了prometheus的写入API程序。编译过程如下: Bailongma项目中有一个文件夹blm_prometheus,存放了prometheus的写入API程序。编译过程如下:
...@@ -184,12 +184,14 @@ select * from apiserver_request_latencies_bucket; ...@@ -184,12 +184,14 @@ select * from apiserver_request_latencies_bucket;
``` ```
## <a class="anchor" id="telegraf"></a> Telegraf 直接写入(通过 BLM v3) ## <a class="anchor" id="telegraf"></a> Telegraf 直接写入(通过 BLM v3)
TDengine 新版本(2.3.0.0+)将包含一个 BLM3 独立程序,负责接受其他多种应用的数据写入。 安装 Telegraf 请参考[官方文档](https://portal.influxdata.com/downloads/)
TDengine 新版本(2.3.0.0+)包含一个 BLM3 独立程序,负责接收包括 Telegraf 的多种应用的数据写入。
配置方法,假设 TDengine 和 Telegraf 在同一台机器上部署,且假设 TDengine 使用默认用户名 root 和密码 taosdata。在 /etc/telegraf/telegraf.conf 增加如下文字: 配置方法,假设 TDengine 使用默认用户名 root 和密码 taosdata。在 /etc/telegraf/telegraf.conf 增加如下文字:
``` ```
[[outputs.http]] [[outputs.http]]
url = "http://127.0.0.1:6041/influxdb/v1/write?db=metrics" url = "http://<TDengine server/cluster host>:6041/influxdb/v1/write?db=metrics"
method = "POST" method = "POST"
timeout = "5s" timeout = "5s"
username = "root" username = "root"
...@@ -207,16 +209,15 @@ sudo systemctl start telegraf ...@@ -207,16 +209,15 @@ sudo systemctl start telegraf
BLM v3 相关配置参数请参考 blm3 --help 命令输出以及相关文档。 BLM v3 相关配置参数请参考 blm3 --help 命令输出以及相关文档。
## <a class="anchor" id="collectd"></a> collectd 直接写入(通过 BLM v3) ## <a class="anchor" id="collectd"></a> collectd 直接写入(通过 BLM v3)
安装 collectd 安装 collectd,请参考[官方文档](https://collectd.org/download.shtml)
```
apt-get install collectd TDengine 新版本(2.3.0.0+)包含一个 BLM3 独立程序,负责接收包括 collectd 的多种应用的数据写入。
```
在 /etc/collectd/collectd.conf 文件中增加如下内容: 在 /etc/collectd/collectd.conf 文件中增加如下内容:
``` ```
LoadPlugin network LoadPlugin network
<Plugin network> <Plugin network>
Server "192.168.17.180" "25826" Server "<TDengine cluster/server host>" "25826"
</Plugin> </Plugin>
``` ```
重启 collectd 重启 collectd
...@@ -227,20 +228,17 @@ BLM v3 相关配置参数请参考 blm3 --help 命令输出以及相关文档。 ...@@ -227,20 +228,17 @@ BLM v3 相关配置参数请参考 blm3 --help 命令输出以及相关文档。
## <a class="anchor" id="statsd"></a> StatsD 直接写入(通过 BLM v3) ## <a class="anchor" id="statsd"></a> StatsD 直接写入(通过 BLM v3)
安装 StatsD 安装 StatsD
``` 请参考[官方文档](https://github.com/statsd/statsd)
1. git clone https://github.com/etsy/statsd.git
2. cd statsd TDengine 新版本(2.3.0.0+)包含一个 BLM3 独立程序,负责接收包括 StatsD 的多种应用的数据写入。
3. cp exampleConfig.js config.js
4. node stats.js config.js
```
在 config.js 文件中增加如下内容后启动 StatsD: 在 config.js 文件中增加如下内容后启动 StatsD:
``` ```
backends 部分添加 "./backends/repeater" backends 部分添加 "./backends/repeater"
repeater 部分添加 { host:'host to blm3', port: 8126 } repeater 部分添加 { host:'<TDengine server/cluster host>', port: 8126 }
``` ```
例配置文件: 例配置文件:
``` ```
{ {
port: 8125 port: 8125
......
...@@ -407,9 +407,9 @@ typedef struct TAOS_MULTI_BIND { ...@@ -407,9 +407,9 @@ typedef struct TAOS_MULTI_BIND {
除了使用 SQL 方式或者使用参数绑定 API 写入数据外,还可以使用 Schemaless 的方式完成写入。Schemaless 可以免于预先创建超级表/数据子表的数据结构,而是可以直接写入数据,TDengine 系统会根据写入的数据内容自动创建和维护所需要的表结构。Schemaless 的使用方式详见 [Schemaless 写入](https://www.taosdata.com/cn/documentation/insert#schemaless) 章节,这里介绍与之配套使用的 C/C++ API。 除了使用 SQL 方式或者使用参数绑定 API 写入数据外,还可以使用 Schemaless 的方式完成写入。Schemaless 可以免于预先创建超级表/数据子表的数据结构,而是可以直接写入数据,TDengine 系统会根据写入的数据内容自动创建和维护所需要的表结构。Schemaless 的使用方式详见 [Schemaless 写入](https://www.taosdata.com/cn/documentation/insert#schemaless) 章节,这里介绍与之配套使用的 C/C++ API。
2.2.0.0版本接口:
- `int taos_insert_lines(TAOS* taos, char* lines[], int numLines)` - `int taos_insert_lines(TAOS* taos, char* lines[], int numLines)`
(2.2.0.0 版本新增)
以 Schemaless 格式写入多行数据。其中: 以 Schemaless 格式写入多行数据。其中:
* taos:调用 taos_connect 返回的数据库连接。 * taos:调用 taos_connect 返回的数据库连接。
* lines:由 char 字符串指针组成的数组,指向本次想要写入数据库的多行数据。 * lines:由 char 字符串指针组成的数组,指向本次想要写入数据库的多行数据。
...@@ -421,6 +421,65 @@ typedef struct TAOS_MULTI_BIND { ...@@ -421,6 +421,65 @@ typedef struct TAOS_MULTI_BIND {
1. 此接口是一个同步阻塞式接口,使用时机与 `taos_query()` 一致。 1. 此接口是一个同步阻塞式接口,使用时机与 `taos_query()` 一致。
2. 在调用此接口之前,必须先调用 `taos_select_db()` 来确定目前是在向哪个 DB 来写入。 2. 在调用此接口之前,必须先调用 `taos_select_db()` 来确定目前是在向哪个 DB 来写入。
2.3.0.0版本接口:
- `int taos_schemaless_insert(TAOS* taos, const char* lines[], int numLines, int protocol, const char* precision, int* affectedRows, char* msg, int msgBufLen)`
**参数说明**
taos: 数据库连接,通过taos_connect 函数建立的数据库连接。
lines:文本数据。满足解析格式要求的无模式文本字符串。
numLines:文本数据的行数,不能为 0 。
protocol: 行协议类型,用于标识文本数据格式。
precision:文本数据中的时间戳精度字符串。
affectedRows:插入操作完成以后,正确写入到数据库中的记录行数。
msg: 如果出现错误(函数返回值不为 0)情况下,错误提示信息。该参数是输入参数,需要用户指定消息输出缓冲区,如果不指定该缓冲区(输入为NULL),即使出现错误也不会得到错误提示信息。
msgBufLen: 缓冲区的长度,避免错误提示消息越界。
**返回值**
0:无错误发生。
非 0 值:发生了错误。此时可以通过msg获取错误信息的提示。该返回值含义可以参考taoserror.h文件中的错误码定义。
**说明**
协议类型是枚举类型,包含以下三种格式:
SML_LINE_PROTOCOL:InfluxDB行协议(Line Protocol)
SML_TELNET_PROTOCOL: OpenTSDB文本行协议
SML_JSON_PROTOCOL: OpenTSDB Json协议格式
时间戳分辨率的说明使用如下字符串:“h“ (小时)、”m“(分钟)、”s“ (秒) ”ms“(毫秒)、”u“ (微秒)、”ns”(纳秒),不区分大小写。需要注意的是,时间戳分辨率参数只在协议类型为 SML_LINE_PROTOCOL 的时候生效。对于 OpenTSDB的文本协议,时间戳的解析遵循其官方解析规则 — 按照时间戳包含的字符的数量来确认时间精度。
```c
#include <stdlib.h>
#include <stdio.h>
#include <taos.h>
int main() {
const char* host = "127.0.0.1";
const char* user = "root";
const char* passwd = "taosdata";
// error message buffer
char msg[512] = {0};
// connect to server
TAOS* taos = taos_connect(host, user, passwd, "test", 0);
// prepare the line string
char* lines1[] = {
"stg,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000",
"stg,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833641000000"
};
// schema-less insert
int code = taos_schemaless_insert(taos, lines1, 2, SML_LINE_PROTOCOL, "ns", msg, sizeof(msg)/sizeof(msg[0]));
if (code != 0) {
printf("failed to insert schema-less data, reason: %s\n", msg);
}
// close the connection
taos_close(taos);
return (code);
}
```
**注**:后续2.2.0.0版本也更新成2.3.0.0版本的接口。
### 连续查询接口 ### 连续查询接口
TDengine提供时间驱动的实时流式计算API。可以每隔一指定的时间段,对一张或多张数据库的表(数据流)进行各种实时聚合计算操作。操作简单,仅有打开、关闭流的API。具体如下: TDengine提供时间驱动的实时流式计算API。可以每隔一指定的时间段,对一张或多张数据库的表(数据流)进行各种实时聚合计算操作。操作简单,仅有打开、关闭流的API。具体如下:
......
...@@ -1472,6 +1472,39 @@ Query OK, 1 row(s) in set (0.001238s) ...@@ -1472,6 +1472,39 @@ Query OK, 1 row(s) in set (0.001238s)
Query OK, 1 row(s) in set (0.000836s) Query OK, 1 row(s) in set (0.000836s)
``` ```
- **CEIL**
```mysql
SELECT CEIL(field_name) FROM { tb_name | stb_name } [WHERE clause];
```
功能说明:获得指定列的向上取整数的结果。
返回结果类型:与指定列的原始数据类型一致。例如,如果指定列的原始数据类型为 Float,那么返回的数据类型也为 Float;如果指定列的原始数据类型为 Double,那么返回的数据类型也为 Double。
适用数据类型:不能应用在 timestamp、binary、nchar、bool 类型字段上;在超级表查询中使用时,不能应用在 tag 列,无论 tag 列的类型是什么类型。
嵌套子查询支持:适用于内层查询和外层查询。
说明:
支持 +、-、*、/ 运算,如 ceil(col1) + ceil(col2)。
只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
该函数可以应用在普通表和超级表上。
支持版本:指定计算算法的功能从 2.2.0.x 版本开始,2.2.0.0 之前的版本不支持指定使用算法的功能。
- **FLOOR**
```mysql
SELECT FLOOR(field_name) FROM { tb_name | stb_name } [WHERE clause];
```
功能说明:获得指定列的向下取整数的结果。
其他使用说明参见CEIL函数描述。
- **ROUND**
```mysql
SELECT ROUND(field_name) FROM { tb_name | stb_name } [WHERE clause];
```
功能说明:获得指定列的四舍五入的结果。
其他使用说明参见CEIL函数描述。
- **四则运算** - **四则运算**
```mysql ```mysql
......
...@@ -17,33 +17,16 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如 ...@@ -17,33 +17,16 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如
## 安装步骤 ## 安装步骤
### 安装 Telegraf,Grafana 和 TDengine ### 安装 Telegraf,Grafana 和 TDengine
安装 Telegraf 和 Grafana 请参考相关官方文档,这里仅假设使用 Ubuntu 20.04 LTS 为操作系统为例 安装 Telegraf、Grafana 和 TDengine 请参考相关官方文档
### Telegraf ### Telegraf
``` 请参考[官方文档](https://portal.influxdata.com/downloads/)
1. wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
2. source /etc/lsb-release
3. echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
4. sudo apt-get update
5. sudo apt-get install telegraf
6. sudo systemctl start telegraf
```
### Grafana ### Grafana
``` 请参考[官方文档](https://grafana.com/grafana/download)
1. wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
2. echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
3. sudo apt-get update
4. sudo apt-get install grafana
5. sudo systemctl start grafana-server.service
```
### 安装 TDengine ### 安装 TDengine
从涛思数据官网下载页面 (http://taosdata.com/cn/all-downloads/)最新 TDengine-server 2.3.0.0 版本,以 deb 安装包为例。 从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 2.3.0.0 或以上版本安装。
```
1. sudo dpkg -i TDengine-server-2.3.0.0-Linux-x64.deb
2. sudo systemctl start taosd
```
## 数据链路设置 ## 数据链路设置
...@@ -56,10 +39,10 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如 ...@@ -56,10 +39,10 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如
``` ```
### 修改 /etc/telegraf/telegraf.conf ### 修改 /etc/telegraf/telegraf.conf
假设 TDengine 和 Telegraf 在同一台机器上部署,且假设 TDengine 使用默认用户名 root 和密码 taosdata。增加如下文字: 假设 TDengine 使用默认用户名 root 和密码 taosdata。增加如下文字:
``` ```
[[outputs.http]] [[outputs.http]]
url = "http://127.0.0.1:6041/influxdb/v1/write?db=metrics" url = "http://<TDengine server/cluster host>:6041/influxdb/v1/write?db=metrics"
method = "POST" method = "POST"
timeout = "5s" timeout = "5s"
username = "root" username = "root"
...@@ -77,7 +60,7 @@ sudo systemctl start telegraf ...@@ -77,7 +60,7 @@ sudo systemctl start telegraf
使用 Web 浏览器访问 IP:3000 登录 Grafana 界面,系统初始用户名密码为 admin/admin。 使用 Web 浏览器访问 IP:3000 登录 Grafana 界面,系统初始用户名密码为 admin/admin。
点击左侧齿轮图标并选择 Plugins,应该可以找到 TDengine data source 插件图标。 点击左侧齿轮图标并选择 Plugins,应该可以找到 TDengine data source 插件图标。
点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/telegraf/grafana/dashboards/telegraf-dashboard-v0.1.0.json 文件,然后应该可以看到如下界面的仪表板界面 点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/telegraf/grafana/dashboards/telegraf-dashboard-v0.1.0.json 文件。如果按照 Grafana 的机器上没有安装 TDengine,可以从 https://github.com/taosdata/grafanaplugin/blob/master/examples/telegraf/grafana/dashboards/telegraf-dashboard-v0.1.0.json 下载 dashboard JSON 文件再导入。之后可以看到如下界面的仪表盘
![IT-DevOps-Solutions-telegraf-dashboard.png](../../images/IT-DevOps-Solutions-telegraf-dashboard.png) ![IT-DevOps-Solutions-telegraf-dashboard.png](../../images/IT-DevOps-Solutions-telegraf-dashboard.png)
......
...@@ -14,34 +14,19 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如 ...@@ -14,34 +14,19 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如
![IT-DevOps-Solutions-Collectd-StatsD.png](../../images/IT-DevOps-Solutions-Collectd-StatsD.png) ![IT-DevOps-Solutions-Collectd-StatsD.png](../../images/IT-DevOps-Solutions-Collectd-StatsD.png)
## 安装步骤 ## 安装步骤
安装 collectd, StatsD, Grafana 和 TDengine 请参考相关官方文档,这里仅假设使用 Ubuntu 20.04 LTS 为操作系统为例 安装 collectd, StatsD, Grafana 和 TDengine 请参考相关官方文档。
### 安装 collectd ### 安装 collectd
``` 请参考[官方文档](https://collectd.org/documentation.shtml)
apt-get install collectd
```
### 安装 StatsD ### 安装 StatsD
``` 请参考[官方文档](https://github.com/statsd/statsd)
1. git clone https://github.com/etsy/statsd.git
2. cd statsd
3. cp exampleConfig.js config.js
4. node stats.js config.js
```
### 安装 Grafana ### 安装 Grafana
``` 请参考[官方文档](https://grafana.com/grafana/download)
1. wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
2. echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
3. sudo apt-get update
4. sudo apt-get install grafana
5. sudo systemctl start grafana-server.service
```
### 安装 TDengine ### 安装 TDengine
从涛思数据官网下载页面 (http://taosdata.com/cn/all-downloads/)最新 TDengine-server 2.3.0.0 版本,以 deb 安装包为例。 从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 2.3.0.0 或以上版本安装。
```
1. sudo dpkg -i TDengine-server-2.3.0.0-Linux-x64.deb
2. sudo systemctl start taosd
```
## 数据链路设置 ## 数据链路设置
### 复制 TDengine 插件到 grafana 插件目录 ### 复制 TDengine 插件到 grafana 插件目录
...@@ -57,7 +42,7 @@ apt-get install collectd ...@@ -57,7 +42,7 @@ apt-get install collectd
``` ```
LoadPlugin network LoadPlugin network
<Plugin network> <Plugin network>
Server "192.168.17.180" "25826" Server "<TDengine server/cluster host>" "25826"
</Plugin> </Plugin>
sudo systemctl start collectd sudo systemctl start collectd
...@@ -67,7 +52,7 @@ sudo systemctl start collectd ...@@ -67,7 +52,7 @@ sudo systemctl start collectd
在 config.js 文件中增加如下内容后启动 StatsD: 在 config.js 文件中增加如下内容后启动 StatsD:
``` ```
backends 部分添加 "./backends/repeater" backends 部分添加 "./backends/repeater"
repeater 部分添加 { host:'host to blm3', port: 8126 } repeater 部分添加 { host:'<TDengine server/cluster host>', port: 8126 }
``` ```
### 导入 Dashboard ### 导入 Dashboard
...@@ -77,14 +62,14 @@ repeater 部分添加 { host:'host to blm3', port: 8126 } ...@@ -77,14 +62,14 @@ repeater 部分添加 { host:'host to blm3', port: 8126 }
#### 导入 collectd 仪表盘 #### 导入 collectd 仪表盘
点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/telegraf/grafana/dashboards/telegraf-dashboard-v0.1.0.json 文件,然后应该可以看到如下界面的仪表板界面 点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/collectd/grafana/dashboards/collect-metrics-with-tdengine-v0.1.0.json 文件。如果按照 Grafana 的机器上没有安装 TDengine,可以从 https://github.com/taosdata/grafanaplugin/blob/master/examples/collectd/grafana/dashboards/collect-metrics-with-tdengine-v0.1.0.json 下载 dashboard json 文件再导入。之后可以看到如下界面的仪表盘
![IT-DevOps-Solutions-collectd-dashboard.png](../../images/IT-DevOps-Solutions-collectd-dashboard.png) ![IT-DevOps-Solutions-collectd-dashboard.png](../../images/IT-DevOps-Solutions-collectd-dashboard.png)
#### 导入 StatsD 仪表盘 #### 导入 StatsD 仪表盘
点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/collectd/grafana/dashboards/collect-metrics-with-tdengine-v0.1.0.json 文件,然后应该可以看到如下界面的仪表板界面 点击左侧加号图标并选择 Import,按照界面提示选择 /usr/local/taos/connector/grafanaplugin/examples/statsd/dashboards/statsd-with-tdengine-v0.1.0.json 文件。如果安装 Grafana 的机器上没有安装 TDengine,可以从 https://github.com/taosdata/grafanaplugin/blob/master/examples/statsd/dashboards/statsd-with-tdengine-v0.1.0.json 下载 dashboard json 文件再导入。之后可以看到如下界面的仪表盘
![IT-DevOps-Solutions-collectd-dashboard.png](../../images/IT-DevOps-Solutions-collectd-dashboard.png) ![IT-DevOps-Solutions-statsd-dashboard.png](../../images/IT-DevOps-Solutions-statsd-dashboard.png)
## 总结 ## 总结
TDengine 作为新兴的时序大数据平台,具备极强的高性能、高可靠、易管理、易维护的优势。得力于 TDengine 2.3.0.0 版本中新增的 schemaless 协议解析功能,以及强大的生态软件适配能力,用户可以短短数分钟就可以搭建一个高效易用的 IT 运维系统或者适配一个已存在的系统。 TDengine 作为新兴的时序大数据平台,具备极强的高性能、高可靠、易管理、易维护的优势。得力于 TDengine 2.3.0.0 版本中新增的 schemaless 协议解析功能,以及强大的生态软件适配能力,用户可以短短数分钟就可以搭建一个高效易用的 IT 运维系统或者适配一个已存在的系统。
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
# Base compile # Base compile
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/mnode/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/mnode/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
...@@ -7360,7 +7360,7 @@ int32_t validateFunctionFromUpstream(SQueryInfo* pQueryInfo, char* msg) { ...@@ -7360,7 +7360,7 @@ int32_t validateFunctionFromUpstream(SQueryInfo* pQueryInfo, char* msg) {
SQueryInfo* pUp = taosArrayGetP(pQueryInfo->pUpstream, j); SQueryInfo* pUp = taosArrayGetP(pQueryInfo->pUpstream, j);
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pUp, 0); STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pUp, 0);
bool isSTable = UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo); bool isSTable = UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo);
if ((!isSTable) || groupbyTbname(pUp)) { if ((!isSTable) || groupbyTbname(pUp)||pUp->interval.interval > 0) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
} }
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest) FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_LINUX_64) IF (TD_LINUX_64)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
add_subdirectory(base) add_subdirectory(base)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
aux_source_directory(. SRC) aux_source_directory(. SRC)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
LIST(APPEND CQTEST_SRC ./cqtest.c) LIST(APPEND CQTEST_SRC ./cqtest.c)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
ADD_SUBDIRECTORY(shell) ADD_SUBDIRECTORY(shell)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/util/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/util/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_LINUX) IF (TD_LINUX)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
AUX_SOURCE_DIRECTORY(. SRC) AUX_SOURCE_DIRECTORY(. SRC)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(.) INCLUDE_DIRECTORIES(.)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
AUX_SOURCE_DIRECTORY(. SRC) AUX_SOURCE_DIRECTORY(. SRC)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
AUX_SOURCE_DIRECTORY(. SRC) AUX_SOURCE_DIRECTORY(. SRC)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest) FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
if(NOT WIN32) if(NOT WIN32)
...@@ -31,7 +31,24 @@ IF (TD_BUILD_HTTP) ...@@ -31,7 +31,24 @@ IF (TD_BUILD_HTTP)
ELSE () ELSE ()
MESSAGE("") MESSAGE("")
MESSAGE("${Green} use blm3 as httpd ${ColourReset}") MESSAGE("${Green} use blm3 as httpd ${ColourReset}")
MESSAGE("") EXECUTE_PROCESS(
COMMAND cd blm3
)
EXECUTE_PROCESS(
COMMAND git rev-parse --short HEAD
RESULT_VARIABLE commit_sha1
OUTPUT_VARIABLE blm3_commit_sha1
)
IF ("${blm3_commit_sha1}" STREQUAL "")
SET(blm3_commit_sha1 "unknown")
ELSE ()
STRING(SUBSTRING "${blm3_commit_sha1}" 0 7 blm3_commit_sha1)
STRING(STRIP "${blm3_commit_sha1}" blm3_commit_sha1)
ENDIF ()
MESSAGE("${Green} blm3 commit: ${blm3_commit_sha1} ${ColourReset}")
EXECUTE_PROCESS(
COMMAND cd ..
)
include(ExternalProject) include(ExternalProject)
ExternalProject_Add(blm3 ExternalProject_Add(blm3
PREFIX "blm3" PREFIX "blm3"
...@@ -40,7 +57,7 @@ ELSE () ...@@ -40,7 +57,7 @@ ELSE ()
DEPENDS taos DEPENDS taos
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
CONFIGURE_COMMAND cmake -E echo "blm3 no need cmake to config" CONFIGURE_COMMAND cmake -E echo "blm3 no need cmake to config"
BUILD_COMMAND CGO_CFLAGS=-I${CMAKE_CURRENT_SOURCE_DIR}/../inc CGO_LDFLAGS=-L${CMAKE_BINARY_DIR}/build/lib go build BUILD_COMMAND CGO_CFLAGS=-I${CMAKE_CURRENT_SOURCE_DIR}/../inc CGO_LDFLAGS=-L${CMAKE_BINARY_DIR}/build/lib go build -ldflags "-s -w -X github.com/taosdata/blm3/version.CommitID=${blm3_commit_sha1}"
INSTALL_COMMAND cmake -E copy blm3 ${CMAKE_BINARY_DIR}/build/bin COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/test/cfg/ COMMAND cmake -E copy ./example/config/blm.toml ${CMAKE_BINARY_DIR}/test/cfg/ INSTALL_COMMAND cmake -E copy blm3 ${CMAKE_BINARY_DIR}/build/bin COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/test/cfg/ COMMAND cmake -E copy ./example/config/blm.toml ${CMAKE_BINARY_DIR}/test/cfg/
) )
ENDIF () ENDIF ()
......
Subproject commit e84009701e4d63b4e57e412dc9e3da7459b12b9f Subproject commit 4bfae86dcabea0d5a40ff81a72be7c822737269b
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/zlib-1.2.11/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/zlib-1.2.11/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/tsdb/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/tsdb/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest) FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/rpc/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/rpc/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_LINUX) IF (TD_LINUX)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(inc) INCLUDE_DIRECTORIES(inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/rpc/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/rpc/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest) FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
ADD_DEFINITIONS(-DWAL_CHECKSUM_WHOLE) ADD_DEFINITIONS(-DWAL_CHECKSUM_WHOLE)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_LINUX) IF (TD_LINUX)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# generate release version: # generate release version:
# mkdir release; cd release; cmake -DCMAKE_BUILD_TYPE=Release .. # mkdir release; cd release; cmake -DCMAKE_BUILD_TYPE=Release ..
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
SET(CMAKE_C_STANDARD 11) SET(CMAKE_C_STANDARD 11)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
IF (TD_LINUX) IF (TD_LINUX)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20) CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine) PROJECT(TDengine)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册