diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000000..7d877987ac
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,5 @@
+# Pull Request Checklist
+
+- [ ] Is the user manual updated?
+- [ ] Are the test cases passed and automated?
+- [ ] Is there no significant decrease in test coverage?
diff --git a/Jenkinsfile2 b/Jenkinsfile2
index 086883dfac..88806222a0 100644
--- a/Jenkinsfile2
+++ b/Jenkinsfile2
@@ -5,7 +5,7 @@ node {
}
file_zh_changed = ''
file_en_changed = ''
-file_no_doc_changed = ''
+file_no_doc_changed = '1'
def abortPreviousBuilds() {
def currentJobName = env.JOB_NAME
def currentBuildNumber = env.BUILD_NUMBER.toInteger()
@@ -355,7 +355,7 @@ def pre_test_build_win() {
bat '''
cd %WIN_COMMUNITY_ROOT%/tests/ci
pip3 install taospy==2.7.16
- pip3 install taos-ws-py==0.3.3
+ pip3 install taos-ws-py==0.3.5
xcopy /e/y/i/f %WIN_INTERNAL_ROOT%\\debug\\build\\lib\\taos.dll C:\\Windows\\System32
'''
return 1
@@ -451,8 +451,8 @@ pipeline {
stage('run test') {
when {
- allOf {
- not { expression { file_no_doc_changed == '' }}
+ expression {
+ file_no_doc_changed != '' && env.CHANGE_TARGET != 'docs-cloud'
}
}
parallel {
@@ -656,4 +656,4 @@ pipeline {
)
}
}
-}
\ No newline at end of file
+}
diff --git a/cmake/cmake.define b/cmake/cmake.define
index ff582261b3..eb95feaf82 100644
--- a/cmake/cmake.define
+++ b/cmake/cmake.define
@@ -97,10 +97,13 @@ ELSE()
SET(TD_TAOS_TOOLS TRUE)
ENDIF()
+SET(TAOS_LIB taos)
+SET(TAOS_LIB_STATIC taos_static)
+
IF(${TD_WINDOWS})
- SET(TAOS_LIB taos_static)
+ SET(TAOS_LIB_PLATFORM_SPEC taos_static)
ELSE()
- SET(TAOS_LIB taos)
+ SET(TAOS_LIB_PLATFORM_SPEC taos)
ENDIF()
# build TSZ by default
diff --git a/contrib/test/CMakeLists.txt b/contrib/test/CMakeLists.txt
index f544baafde..5d613dfed2 100644
--- a/contrib/test/CMakeLists.txt
+++ b/contrib/test/CMakeLists.txt
@@ -28,6 +28,9 @@ if(${BUILD_WITH_TRAFT})
# add_subdirectory(traft)
endif(${BUILD_WITH_TRAFT})
-add_subdirectory(azure)
+if(${BUILD_S3})
+ add_subdirectory(azure)
+endif()
+
add_subdirectory(tdev)
add_subdirectory(lz4)
diff --git a/docs/en/08-develop/01-connect/index.md b/docs/en/08-develop/01-connect/index.md
index f4dbccba24..5f0a462ec2 100644
--- a/docs/en/08-develop/01-connect/index.md
+++ b/docs/en/08-develop/01-connect/index.md
@@ -90,7 +90,7 @@ If `maven` is used to manage the projects, what needs to be done is only adding
com.taosdata.jdbc
taos-jdbcdriver
- 3.3.3
+ 3.4.0
```
diff --git a/docs/en/14-reference/03-taos-sql/10-function.md b/docs/en/14-reference/03-taos-sql/10-function.md
index f6c1ef24d0..3852783c10 100644
--- a/docs/en/14-reference/03-taos-sql/10-function.md
+++ b/docs/en/14-reference/03-taos-sql/10-function.md
@@ -422,7 +422,7 @@ CAST(expr AS type_name)
TO_ISO8601(expr [, timezone])
```
-**Description**: The ISO8601 date/time format converted from a UNIX timestamp, plus the timezone. You can specify any time zone with the timezone parameter. If you do not enter this parameter, the time zone on the client is used.
+**Description**: The ISO8601 date/time format converted from a timestamp, plus the timezone. You can specify any time zone with the timezone parameter. If you do not enter this parameter, the time zone on the client is used.
**Return value type**: VARCHAR
@@ -466,7 +466,7 @@ return_timestamp: {
}
```
-**Description**: UNIX timestamp converted from a string of date/time format
+**Description**: timestamp converted from a string of date/time format
**Return value type**: BIGINT, TIMESTAMP
diff --git a/docs/en/14-reference/03-taos-sql/31-compress.md b/docs/en/14-reference/03-taos-sql/31-compress.md
index 39abfe69bd..f726c8bbe6 100644
--- a/docs/en/14-reference/03-taos-sql/31-compress.md
+++ b/docs/en/14-reference/03-taos-sql/31-compress.md
@@ -30,11 +30,12 @@ In this article, it specifically refers to the level within the secondary compre
| Data Type | Optional Encoding Algorithm | Default Encoding Algorithm | Optional Compression Algorithm|Default Compression Algorithm| Default Compression Level|
| :-----------:|:----------:|:-------:|:-------:|:----------:|:----:|
-| tinyint/untinyint/smallint/usmallint/int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | medium|
+| int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | medium|
+| tinyint/untinyint/smallint/usmallint | simple8b| simple8b | lz4/zlib/zstd/xz| zlib| medium|
| bigint/ubigint/timestamp | simple8b/delta-i | delta-i |lz4/zlib/zstd/xz | lz4| medium|
|float/double | delta-d|delta-d |lz4/zlib/zstd/xz/tsz|lz4| medium|
-|binary/nchar| disabled| disabled|lz4/zlib/zstd/xz| lz4| medium|
-|bool| bit-packing| bit-packing| lz4/zlib/zstd/xz| lz4| medium|
+|binary/nchar| disabled| disabled|lz4/zlib/zstd/xz| lz4| zstd|
+|bool| bit-packing| bit-packing| lz4/zlib/zstd/xz| lz4| zstd|
## SQL
diff --git a/docs/en/14-reference/05-connectors/14-java.mdx b/docs/en/14-reference/05-connectors/14-java.mdx
index 1f4cf9895f..d064f37aeb 100644
--- a/docs/en/14-reference/05-connectors/14-java.mdx
+++ b/docs/en/14-reference/05-connectors/14-java.mdx
@@ -42,6 +42,9 @@ REST connection supports all platforms that can run Java.
| taos-jdbcdriver version | major changes | TDengine version |
| :---------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------: |
+| 3.4.0 | 1. Replace the fastjson library with the Jackson library; 2. WebSocket connection protocal uses independent identification; 3. Optimize the use of backend pull threads to avoid user misuse leading to timeouts.| - |
+| 3.3.4 | 1. Fixed getInt error when data type is float| - |
+| 3.3.3 | 1. Fixed the memory leak caused by WebSocket statement| - |
| 3.3.2 | 1. Optimized websocket prepareStatement performance; 2. Improved mybatis support| - |
| 3.3.0 | 1. Optimized data transmission performance under Websocket connection; 2. SSL validation skipping is supported but disabled by default| 3.3.2.0 or later |
| 3.2.11 | Fixed the result set closing bug when using a native connection.| - |
diff --git a/docs/en/14-reference/05-connectors/30-python.mdx b/docs/en/14-reference/05-connectors/30-python.mdx
index 7263a3caa6..4f17261b33 100644
--- a/docs/en/14-reference/05-connectors/30-python.mdx
+++ b/docs/en/14-reference/05-connectors/30-python.mdx
@@ -41,12 +41,18 @@ We recommend using the latest version of `taospy`, regardless of the version of
|Python Client Library Version|major changes|
|:-------------------:|:----:|
+|2.7.16|add subscription configuration (session.timeout.ms, max.poll.interval.ms)|
+|2.7.15|added support for VARBINARY and GEOMETRY types|
+|2.7.14|fix known issues|
+|2.7.13|add TMQ synchronous submission offset interface|
|2.7.12|1. added support for `varbinary` type (STMT does not yet support)
2. improved query performance (thanks to contributor [hadrianl](https://github.com/taosdata/taos-connector-python/pull/209))|
|2.7.9|support for getting assignment and seek function on subscription|
|2.7.8|add `execute_many` method|
|Python Websocket Connection Version|major changes|
|:----------------------------:|:-----:|
+|0.3.5|1. added support for VARBINARY and GEOMETRY types
2. Fix known issues|
+|0.3.2|1. optimize WebSocket SQL query and insertion performance
2. Fix known issues
3. Modify the readme and document|
|0.2.9|bugs fixes|
|0.2.5|1. support for getting assignment and seek function on subscription
2. support schemaless
3. support STMT|
|0.2.4|support `unsubscribe` on subscription|
diff --git a/docs/en/14-reference/05-connectors/35-node.mdx b/docs/en/14-reference/05-connectors/35-node.mdx
index 476f9bab71..2aeef7af1e 100644
--- a/docs/en/14-reference/05-connectors/35-node.mdx
+++ b/docs/en/14-reference/05-connectors/35-node.mdx
@@ -27,6 +27,8 @@ Node.js client library needs to be run with Node.js 14 or higher version.
| Node.js connector version | major changes | TDengine 版本 |
| :-----------------------: | :------------------: | :----------------:|
+| 3.1.2 | Optimized the data protocol and parsing, resulting in a significant improvement in performance | 3.2.0.0 or later |
+| 3.1.1 | Optimized data transmission performance | 3.2.0.0 or later |
| 3.1.0 | new version, supports websocket | 3.2.0.0 or later |
## Supported features
diff --git a/docs/en/14-reference/12-config/index.md b/docs/en/14-reference/12-config/index.md
index 77d183a5ef..63aa6ed447 100755
--- a/docs/en/14-reference/12-config/index.md
+++ b/docs/en/14-reference/12-config/index.md
@@ -773,7 +773,7 @@ lossyColumns float|double
02/22 10:49:27.607990 00002933 UTL lossyColumns float|double
```
-### ifAdtFse
+### ifAdtFse
| Attribute | Description |
| -------- | -------------------------------- |
@@ -898,4 +898,4 @@ lossyColumns float|double
| 53 | udf | Yes | Yes | |
| 54 | enableCoreFile | Yes | Yes | |
| 55 | ttlChangeOnWrite | No | Yes | |
-| 56 | keepTimeOffset | Yes | Yes(discarded since 3.2.0.0) | |
+| 56 | keepTimeOffset | Yes | Yes(discarded since 3.2.0.0) | see "KEEP_TIME_OFFSET" |
diff --git a/docs/examples/JDBC/mybatisplus-demo/pom.xml b/docs/examples/JDBC/mybatisplus-demo/pom.xml
index f792946c96..2077e31d8d 100644
--- a/docs/examples/JDBC/mybatisplus-demo/pom.xml
+++ b/docs/examples/JDBC/mybatisplus-demo/pom.xml
@@ -47,7 +47,7 @@
com.taosdata.jdbc
taos-jdbcdriver
- 3.2.4
+ 3.4.0
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/domain/Meters.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/domain/Meters.java
new file mode 100644
index 0000000000..e886e56269
--- /dev/null
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/domain/Meters.java
@@ -0,0 +1,16 @@
+package com.taosdata.example.mybatisplusdemo.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class Meters {
+ private String tbname;
+ private Timestamp ts;
+ private float current;
+ private int voltage;
+ private float phase;
+ private int groupid;
+ private byte[] location;
+}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java
new file mode 100644
index 0000000000..441c340886
--- /dev/null
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java
@@ -0,0 +1,31 @@
+package com.taosdata.example.mybatisplusdemo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.taosdata.example.mybatisplusdemo.domain.Meters;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+
+public interface MetersMapper extends BaseMapper {
+
+ @Update("CREATE STABLE IF NOT EXISTS meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (groupId INT, location BINARY(24))")
+ int createTable();
+
+ @Insert("insert into meters (tbname, ts, groupid, location, current, voltage, phase) values(#{tbname}, #{ts}, #{groupid}, #{location}, #{current}, #{voltage}, #{phase})")
+ int insertOne(Meters one);
+
+ @Insert({
+ ""
+ })
+ int insertBatch(@Param("list") List metersList);
+
+ @Update("drop stable if exists meters")
+ void dropTable();
+}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/resources/application.yml b/docs/examples/JDBC/mybatisplus-demo/src/main/resources/application.yml
index 985ed1675e..e9855bf011 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/main/resources/application.yml
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/resources/application.yml
@@ -1,7 +1,7 @@
spring:
datasource:
- driver-class-name: com.taosdata.jdbc.TSDBDriver
- url: jdbc:TAOS://localhost:6030/mp_test?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
+ driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver
+ url: jdbc:TAOS-WS://localhost:6041/mp_test?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
username: root
password: taosdata
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java
new file mode 100644
index 0000000000..2d8458e9d9
--- /dev/null
+++ b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java
@@ -0,0 +1,112 @@
+package com.taosdata.example.mybatisplusdemo.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.taosdata.example.mybatisplusdemo.domain.Meters;
+import com.taosdata.example.mybatisplusdemo.domain.Weather;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.sql.Timestamp;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest
+public class MetersMapperTest {
+
+ private static Random random = new Random(System.currentTimeMillis());
+
+ @Autowired
+ private MetersMapper mapper;
+
+ @Before
+ public void createTable(){
+ mapper.dropTable();
+ mapper.createTable();
+ Meters one = new Meters();
+ one.setTbname("test_10001");
+ one.setGroupid(10001);
+ one.setCurrent(random.nextFloat());
+ one.setPhase(random.nextFloat());
+ one.setCurrent(12345);
+ one.setTs(new Timestamp(1605024000000l));
+ one.setLocation("望京".getBytes());
+ mapper.insertOne(one);
+ }
+
+ @Test
+ public void testSelectList() {
+ List meters = mapper.selectList(null);
+ meters.forEach(System.out::println);
+ }
+
+ @Test
+ public void testInsertBatch() {
+ List metersList = new LinkedList<>();
+ for (int i = 0; i < 100; i++){
+ Meters one = new Meters();
+ one.setTbname("tb_" + i);
+ one.setGroupid(i);
+ one.setCurrent(random.nextFloat());
+ one.setPhase(random.nextFloat());
+ one.setCurrent(random.nextInt());
+ one.setTs(new Timestamp(1605024000000l + i));
+ one.setLocation(("望京" + i).getBytes());
+ metersList.add(one);
+
+ }
+ int affectRows = mapper.insertBatch(metersList);
+ Assert.assertEquals(100, affectRows);
+ }
+
+ @Test
+ public void testSelectOne() {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("location", "望京".getBytes());
+ Meters one = mapper.selectOne(wrapper);
+ System.out.println(one);
+ Assert.assertEquals(12345, one.getCurrent(), 0.00f);
+ Assert.assertArrayEquals("望京".getBytes(), one.getLocation());
+ }
+
+ // @Test
+ // public void testSelectByMap() {
+ // Map map = new HashMap<>();
+ // map.put("location", "beijing");
+ // List weathers = mapper.selectByMap(map);
+ // Assert.assertEquals(1, weathers.size());
+ // }
+
+ @Test
+ public void testSelectObjs() {
+ List