Merge remote-tracking branch 'origin/3.0' into fix/TD-30672

This commit is contained in:
dapan1121 2024-06-20 11:34:50 +08:00
commit 0a8a3d15bc
73 changed files with 2667 additions and 576 deletions

View File

@ -25,7 +25,7 @@ create_definition:
col_name column_definition
column_definition:
type_name [comment 'string_value'] [PRIMARY KEY] [ENCODE 'encode_type'] [COMPRESS 'compress_type'] [LEVEL 'level_type']
type_name [comment 'string_value'] [PRIMARY KEY] [ENCODE 'encode_type'] [COMPRESS 'compress_type'] [LEVEL 'level_type']
table_options:
table_option ...
@ -52,9 +52,9 @@ table_option: {
**Parameter description**
1. COMMENT: specifies comments for the table. This parameter can be used with supertables, standard tables, and subtables.
1. COMMENT: specifies comments for the table. This parameter can be used with supertables, standard tables, and subtables. The maximum length of the comment is 1024 bytes.
2. SMA: specifies functions on which to enable small materialized aggregates (SMA). SMA is user-defined precomputation of aggregates based on data blocks. Enter one of the following values: max, min, or sum This parameter can be used with supertables and standard tables.
3. TTL: specifies the time to live (TTL) for the table. If TTL is specified when creatinga table, after the time period for which the table has been existing is over TTL, TDengine will automatically delete the table. Please be noted that the system may not delete the table at the exact moment that the TTL expires but guarantee there is such a system and finally the table will be deleted. The unit of TTL is in days. The default value is 0, i.e. never expire.
3. TTL: specifies the time to live (TTL) for the table. If TTL is specified when creatinga table, after the time period for which the table has been existing is over TTL, TDengine will automatically delete the table. Please be noted that the system may not delete the table at the exact moment that the TTL expires but guarantee there is such a system and finally the table will be deleted. The unit of TTL is in days. The value range is [0, 2147483647]. The default value is 0, i.e. never expire.
## Create Subtables
@ -112,6 +112,11 @@ You can perform the following modifications on existing tables:
4. RENAME COLUMN: renames a specified column in the table.
5. The primary key column of a table cannot be modified or added or deleted using ADD/DROP COLUMN.
**Parameter description**
1. COMMENT: specifies comments for the table. This parameter can be used with supertables, standard tables, and subtables. The maximum length of the comment is 1024 bytes.
2. TTL: specifies the time to live (TTL) for the table. If TTL is specified when creatinga table, after the time period for which the table has been existing is over TTL, TDengine will automatically delete the table. Please be noted that the system may not delete the table at the exact moment that the TTL expires but guarantee there is such a system and finally the table will be deleted. The unit of TTL is in days. The value range is [0, 2147483647]. The default value is 0, i.e. never expire.
### Add a Column
```sql
@ -136,6 +141,18 @@ ALTER TABLE tb_name MODIFY COLUMN field_name data_type(length);
ALTER TABLE tb_name RENAME COLUMN old_col_name new_col_name
```
### Alter Table TTL
```sql
ALTER TABLE tb_name TTL value
```
### Alter Table Comment
```sql
ALTER TABLE tb_name COMMENT 'string_value'
```
## Modify a Subtable
```sql
@ -159,12 +176,29 @@ alter_table_option: {
1. Only the value of a tag can be modified directly. For all other modifications, you must modify the supertable from which the subtable was created.
**Parameter description**
1. COMMENT: specifies comments for the table. This parameter can be used with supertables, standard tables, and subtables. The maximum length of the comment is 1024 bytes.
2. TTL: specifies the time to live (TTL) for the table. If TTL is specified when creatinga table, after the time period for which the table has been existing is over TTL, TDengine will automatically delete the table. Please be noted that the system may not delete the table at the exact moment that the TTL expires but guarantee there is such a system and finally the table will be deleted. The unit of TTL is in days. The value range is [0, 2147483647]. The default value is 0, i.e. never expire.
### Change Tag Value Of Sub Table
```
ALTER TABLE tb_name SET TAG tag_name=new_tag_value;
```
### Alter Table TTL
```sql
ALTER TABLE tb_name TTL value
```
### Alter Table Comment
```sql
ALTER TABLE tb_name COMMENT 'string_value'
```
## Delete a Table
The following SQL statement deletes one or more tables.

View File

@ -1,12 +1,8 @@
---
title: Configurable Column Compression
description: Configurable column storage compression method
---
# Configurable Storage Compression
Since TDengine 3.3.0.0, more advanced compression feature is introduced, you can specify compression or not, the compression method and compression level for each column.
## Compression Terminology Definition
@ -32,16 +28,14 @@ In this article, it specifically refers to the level within the secondary compre
- Default compression algorithm list and applicable range for each data type
| Data Type | Optional Encoding Algorithm | Default Encoding Algorithm | Optional Compression Algorithm|Default Compression Algorithm| Default Compression Level|
| 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|
| tinyint/untinyint/smallint/usmallint/int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | 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|tsz| 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|
Note: For floating point types, if configured as tsz, its precision is determined by the global configuration of taosd. If configured as tsz, but the lossy compression flag is not configured, lz4 is used for compression by default.
## SQL
### Create Table with Compression
@ -76,7 +70,7 @@ ALTER TABLE [db_name.]tabName MODIFY COLUMN colName [ENCODE 'ecode_type'] [COMPR
- Change the compression method of the column
### View Compression Dethod
### View Compression Method
```sql
DESCRIBE [dbname.]tabName

View File

@ -23,10 +23,10 @@ create_subtable_clause: {
}
create_definition:
col_name column_definition
col_name column_definition
column_definition:
type_name [comment 'string_value'] [PRIMARY KEY] [ENCODE 'encode_type'] [COMPRESS 'compress_type'] [LEVEL 'level_type']
type_name [comment 'string_value'] [PRIMARY KEY] [ENCODE 'encode_type'] [COMPRESS 'compress_type'] [LEVEL 'level_type']
table_options:
table_option ...
@ -52,9 +52,9 @@ table_option: {
**参数说明**
1. COMMENT表注释。可用于超级表、子表和普通表。
1. COMMENT表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
2. SMASmall Materialized Aggregates提供基于数据块的自定义预计算功能。预计算类型包括 MAX、MIN 和 SUM。可用于超级表/普通表。
3. TTLTime to Live是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数当该表的存在时间超过 TTL 指定的时间后TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间系统不保证到了时间一定会将其删除而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,默认为 0表示不限制到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。
3. TTLTime to Live是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数当该表的存在时间超过 TTL 指定的时间后TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间系统不保证到了时间一定会将其删除而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647]默认为 0表示不限制到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。
## 创建子表
@ -112,6 +112,11 @@ alter_table_option: {
4. RENAME COLUMN修改列名称。
5. 普通表的主键列不能被修改,也不能通过 ADD/DROP COLUMN 来添加/删除主键列。
**参数说明**
1. COMMENT表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
2. TTLTime to Live是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数当该表的存在时间超过 TTL 指定的时间后TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间系统不保证到了时间一定会将其删除而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647],默认为 0表示不限制到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。
### 增加列
```sql
@ -136,6 +141,18 @@ ALTER TABLE tb_name MODIFY COLUMN field_name data_type(length);
ALTER TABLE tb_name RENAME COLUMN old_col_name new_col_name
```
### 修改表生命周期
```sql
ALTER TABLE tb_name TTL value
```
### 修改表注释
```sql
ALTER TABLE tb_name COMMENT 'string_value'
```
## 修改子表
```sql
@ -159,12 +176,29 @@ alter_table_option: {
1. 对子表的列和标签的修改,除了更改标签值以外,都要通过超级表才能进行。
**参数说明**
1. COMMENT表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
2. TTLTime to Live是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数当该表的存在时间超过 TTL 指定的时间后TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间系统不保证到了时间一定会将其删除而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647],默认为 0表示不限制到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。
### 修改子表标签值
```
ALTER TABLE tb_name SET TAG tag_name=new_tag_value;
```
### 修改表生命周期
```sql
ALTER TABLE tb_name TTL value
```
### 修改表注释
```sql
ALTER TABLE tb_name COMMENT 'string_value'
```
## 删除表
可以在一条 SQL 语句中删除一个或多个普通表或子表。

View File

@ -3,8 +3,6 @@ title: 可配置压缩算法
description: 可配置压缩算法
---
# 可配置存储压缩
从 TDengine 3.3.0.0 版本开始TDengine 提供了更高级的压缩功能,用户可以在建表时针对每一列配置是否进行压缩、以及使用的压缩算法和压缩级别。
## 压缩术语定义
@ -30,16 +28,14 @@ description: 可配置压缩算法
- 各个数据类型的默认压缩算法列表和适用范围
| 数据类型 | 可选编码算法 | 编码算法默认值 | 可选压缩算法|可选压缩算法| 压缩等级默认值|
| 数据类型 | 可选编码算法 | 编码算法默认值 | 可选压缩算法|压缩算法默认值| 压缩等级默认值|
| :-----------:|:----------:|:-------:|:-------:|:----------:|:----:|
tinyint/untinyint/smallint/usmallint/int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | medium|
| tinyint/untinyint/smallint/usmallint/int/uint | simple8b| simple8b | lz4/zlib/zstd/xz| lz4 | 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|tsz| 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|
注意: 针对浮点类型如果配置为tsz, 其精度由taosd的全局配置决定如果配置为tsz, 但是没有配置有损压缩标志, 则使用lz4进行压缩
## SQL 语法
### 建表时指定压缩

View File

@ -366,7 +366,7 @@ typedef enum {
} TSDB_SERVER_STATUS;
DLL_EXPORT TSDB_SERVER_STATUS taos_check_server_status(const char *fqdn, int port, char *details, int maxlen);
DLL_EXPORT char* getBuildInfo();
#ifdef __cplusplus
}
#endif

View File

@ -30,10 +30,6 @@ typedef int64_t tb_uid_t;
#define IS_TSWINDOW_SPECIFIED(win) (((win).skey != INT64_MIN) || ((win).ekey != INT64_MAX))
#define TSWINDOW_IS_EQUAL(t1, t2) (((t1).skey == (t2).skey) && ((t1).ekey == (t2).ekey))
//define show cluster alive and show db.alive
#define SHOW_STATUS_NOT_AVAILABLE 0
#define SHOW_STATUS_AVAILABLE 1
#define SHOW_STATUS_HALF_AVAILABLE 2
typedef enum {
TSDB_SUPER_TABLE = 1, // super table

View File

@ -410,7 +410,7 @@ typedef struct SStateStore {
void (*streamFileStateClear)(struct SStreamFileState* pFileState);
bool (*needClearDiskBuff)(struct SStreamFileState* pFileState);
SStreamState* (*streamStateOpen)(const char* path, void* pTask, int64_t streamId, int32_t taskId, bool specPath, int32_t szPage, int32_t pages);
SStreamState* (*streamStateOpen)(const char* path, void* pTask, int64_t streamId, int32_t taskId);
void (*streamStateClose)(SStreamState* pState, bool remove);
int32_t (*streamStateBegin)(SStreamState* pState);
int32_t (*streamStateCommit)(SStreamState* pState);

View File

@ -628,6 +628,7 @@ char* nodesGetStrValueFromNode(SValueNode* pNode);
void nodesValueNodeToVariant(const SValueNode* pNode, SVariant* pVal);
SValueNode* nodesMakeValueNodeFromString(char* literal);
SValueNode* nodesMakeValueNodeFromBool(bool b);
SNode* nodesMakeValueNodeFromInt32(int32_t value);
char* nodesGetFillModeString(EFillMode mode);
int32_t nodesMergeConds(SNode** pDst, SNodeList** pSrc);

View File

@ -29,8 +29,7 @@ extern "C" {
#include "storageapi.h"
SStreamState* streamStateOpen(const char* path, void* pTask, int64_t streamId, int32_t taskId, bool specPath,
int32_t szPage, int32_t pages);
SStreamState* streamStateOpen(const char* path, void* pTask, int64_t streamId, int32_t taskId);
void streamStateClose(SStreamState* pState, bool remove);
int32_t streamStateBegin(SStreamState* pState);
int32_t streamStateCommit(SStreamState* pState);

View File

@ -60,6 +60,7 @@ typedef struct {
EWalType level; // wal level
int32_t encryptAlgorithm;
char encryptKey[ENCRYPT_KEY_LEN + 1];
int8_t clearFiles;
} SWalCfg;
typedef struct {

View File

@ -336,6 +336,7 @@ int32_t taosGetErrSize();
#define TSDB_CODE_MND_DB_IN_CREATING TAOS_DEF_ERROR_CODE(0, 0x0396) //
#define TSDB_CODE_MND_INVALID_SYS_TABLENAME TAOS_DEF_ERROR_CODE(0, 0x039A)
#define TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE TAOS_DEF_ERROR_CODE(0, 0x039B)
#define TSDB_CODE_MND_INVALID_WAL_LEVEL TAOS_DEF_ERROR_CODE(0, 0x039C)
// mnode-node
#define TSDB_CODE_MND_MNODE_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x03A0)

View File

@ -40,12 +40,24 @@ add_test(
COMMAND dataformatTest
)
# tmsg test
add_executable(tmsgTest "")
target_sources(tmsgTest
if (${TD_LINUX})
# tmsg test
add_executable(tmsgTest "")
target_sources(tmsgTest
PRIVATE
"tmsgTest.cpp"
"../src/tmsg.c"
)
target_include_directories(tmsgTest PUBLIC "${TD_SOURCE_DIR}/include/common/")
target_link_libraries(tmsgTest PUBLIC os util gtest gtest_main)
)
target_include_directories(tmsgTest PUBLIC "${TD_SOURCE_DIR}/include/common/")
target_link_libraries(tmsgTest PUBLIC os util gtest gtest_main)
add_test(
NAME tmsgTest
COMMAND tmsgTest
)
# config file for msg type table
SET(MSG_TBL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/msgTypeTable.ini)
add_custom_command(TARGET tmsgTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MSG_TBL_FILE} $<TARGET_FILE_DIR:tmsgTest>
)
endif ()

View File

@ -0,0 +1,556 @@
TDMT_DND_CREATE_MNODE = 1
TDMT_DND_CREATE_MNODE_RSP = 2
TDMT_DND_DROP_MNODE = 3
TDMT_DND_DROP_MNODE_RSP = 4
TDMT_DND_CREATE_QNODE = 5
TDMT_DND_CREATE_QNODE_RSP = 6
TDMT_DND_DROP_QNODE = 7
TDMT_DND_DROP_QNODE_RSP = 8
TDMT_DND_CREATE_SNODE = 9
TDMT_DND_CREATE_SNODE_RSP = 10
TDMT_DND_DROP_SNODE = 11
TDMT_DND_DROP_SNODE_RSP = 12
TDMT_DND_CREATE_BNODE = 13
TDMT_DND_CREATE_BNODE_RSP = 14
TDMT_DND_DROP_BNODE = 15
TDMT_DND_DROP_BNODE_RSP = 16
TDMT_DND_CREATE_VNODE = 17
TDMT_DND_CREATE_VNODE_RSP = 18
TDMT_DND_DROP_VNODE = 19
TDMT_DND_DROP_VNODE_RSP = 20
TDMT_DND_SERVER_STATUS = 21
TDMT_DND_SERVER_STATUS_RSP = 22
TDMT_DND_NET_TEST = 23
TDMT_DND_NET_TEST_RSP = 24
TDMT_DND_CONFIG_DNODE = 25
TDMT_DND_CONFIG_DNODE_RSP = 26
TDMT_DND_SYSTABLE_RETRIEVE = 27
TDMT_DND_SYSTABLE_RETRIEVE_RSP = 28
TDMT_DND_UNUSED_CODE = 29
TDMT_DND_UNUSED_CODE_RSP = 30
TDMT_DND_ALTER_MNODE_TYPE = 31
TDMT_DND_ALTER_MNODE_TYPE_RSP = 32
TDMT_DND_ALTER_VNODE_TYPE = 33
TDMT_DND_ALTER_VNODE_TYPE_RSP = 34
TDMT_DND_CHECK_VNODE_LEARNER_CATCHUP = 35
TDMT_DND_CHECK_VNODE_LEARNER_CATCHUP_RSP = 36
TDMT_DND_CREATE_ENCRYPT_KEY = 37
TDMT_DND_CREATE_ENCRYPT_KEY_RSP = 38
TDMT_DND_MAX_MSG = 39
TDMT_DND_MAX_MSG_RSP = 40
TDMT_MND_CONNECT = 257
TDMT_MND_CONNECT_RSP = 258
TDMT_MND_CREATE_ACCT = 259
TDMT_MND_CREATE_ACCT_RSP = 260
TDMT_MND_ALTER_ACCT = 261
TDMT_MND_ALTER_ACCT_RSP = 262
TDMT_MND_DROP_ACCT = 263
TDMT_MND_DROP_ACCT_RSP = 264
TDMT_MND_CREATE_USER = 265
TDMT_MND_CREATE_USER_RSP = 266
TDMT_MND_ALTER_USER = 267
TDMT_MND_ALTER_USER_RSP = 268
TDMT_MND_DROP_USER = 269
TDMT_MND_DROP_USER_RSP = 270
TDMT_MND_GET_USER_AUTH = 271
TDMT_MND_GET_USER_AUTH_RSP = 272
TDMT_MND_CREATE_DNODE = 273
TDMT_MND_CREATE_DNODE_RSP = 274
TDMT_MND_CONFIG_DNODE = 275
TDMT_MND_CONFIG_DNODE_RSP = 276
TDMT_MND_DROP_DNODE = 277
TDMT_MND_DROP_DNODE_RSP = 278
TDMT_MND_CREATE_MNODE = 279
TDMT_MND_CREATE_MNODE_RSP = 280
TDMT_MND_ALTER_MNODE = 281
TDMT_MND_ALTER_MNODE_RSP = 282
TDMT_MND_DROP_MNODE = 283
TDMT_MND_DROP_MNODE_RSP = 284
TDMT_MND_CREATE_QNODE = 285
TDMT_MND_CREATE_QNODE_RSP = 286
TDMT_MND_ALTER_QNODE = 287
TDMT_MND_ALTER_QNODE_RSP = 288
TDMT_MND_DROP_QNODE = 289
TDMT_MND_DROP_QNODE_RSP = 290
TDMT_MND_QNODE_LIST = 291
TDMT_MND_QNODE_LIST_RSP = 292
TDMT_MND_DNODE_LIST = 293
TDMT_MND_DNODE_LIST_RSP = 294
TDMT_MND_CREATE_SNODE = 295
TDMT_MND_CREATE_SNODE_RSP = 296
TDMT_MND_ALTER_SNODE = 297
TDMT_MND_ALTER_SNODE_RSP = 298
TDMT_MND_DROP_SNODE = 299
TDMT_MND_DROP_SNODE_RSP = 300
TDMT_MND_CREATE_BNODE = 301
TDMT_MND_CREATE_BNODE_RSP = 302
TDMT_MND_ALTER_BNODE = 303
TDMT_MND_ALTER_BNODE_RSP = 304
TDMT_MND_DROP_BNODE = 305
TDMT_MND_DROP_BNODE_RSP = 306
TDMT_MND_CREATE_DB = 307
TDMT_MND_CREATE_DB_RSP = 308
TDMT_MND_DROP_DB = 309
TDMT_MND_DROP_DB_RSP = 310
TDMT_MND_USE_DB = 311
TDMT_MND_USE_DB_RSP = 312
TDMT_MND_ALTER_DB = 313
TDMT_MND_ALTER_DB_RSP = 314
TDMT_MND_SYNC_DB = 315
TDMT_MND_SYNC_DB_RSP = 316
TDMT_MND_COMPACT_DB = 317
TDMT_MND_COMPACT_DB_RSP = 318
TDMT_MND_TRIM_DB = 319
TDMT_MND_TRIM_DB_RSP = 320
TDMT_MND_GET_DB_CFG = 321
TDMT_MND_GET_DB_CFG_RSP = 322
TDMT_MND_VGROUP_LIST = 323
TDMT_MND_VGROUP_LIST_RSP = 324
TDMT_MND_CREATE_FUNC = 325
TDMT_MND_CREATE_FUNC_RSP = 326
TDMT_MND_RETRIEVE_FUNC = 327
TDMT_MND_RETRIEVE_FUNC_RSP = 328
TDMT_MND_DROP_FUNC = 329
TDMT_MND_DROP_FUNC_RSP = 330
TDMT_MND_CREATE_STB = 331
TDMT_MND_CREATE_STB_RSP = 332
TDMT_MND_ALTER_STB = 333
TDMT_MND_ALTER_STB_RSP = 334
TDMT_MND_DROP_STB = 335
TDMT_MND_DROP_STB_RSP = 336
TDMT_MND_TABLE_META = 337
TDMT_MND_TABLE_META_RSP = 338
TDMT_MND_CREATE_SMA = 339
TDMT_MND_CREATE_SMA_RSP = 340
TDMT_MND_DROP_SMA = 341
TDMT_MND_DROP_SMA_RSP = 342
TDMT_MND_CREATE_STREAM = 343
TDMT_MND_CREATE_STREAM_RSP = 344
TDMT_MND_ALTER_STREAM = 345
TDMT_MND_ALTER_STREAM_RSP = 346
TDMT_MND_DROP_STREAM = 347
TDMT_MND_DROP_STREAM_RSP = 348
TDMT_MND_RECOVER_STREAM = 349
TDMT_MND_RECOVER_STREAM_RSP = 350
TDMT_MND_CREATE_INDEX = 351
TDMT_MND_CREATE_INDEX_RSP = 352
TDMT_MND_DROP_INDEX = 353
TDMT_MND_DROP_INDEX_RSP = 354
TDMT_MND_GET_INDEX = 355
TDMT_MND_GET_INDEX_RSP = 356
TDMT_MND_GET_TABLE_INDEX = 357
TDMT_MND_GET_TABLE_INDEX_RSP = 358
TDMT_MND_BATCH_META = 359
TDMT_MND_BATCH_META_RSP = 360
TDMT_MND_TABLE_CFG = 361
TDMT_MND_TABLE_CFG_RSP = 362
TDMT_MND_TMQ_CREATE_TOPIC = 363
TDMT_MND_TMQ_CREATE_TOPIC_RSP = 364
TDMT_MND_UNUSED1 = 365
TDMT_MND_UNUSED1_RSP = 366
TDMT_MND_TMQ_DROP_TOPIC = 367
TDMT_MND_TMQ_DROP_TOPIC_RSP = 368
TDMT_MND_TMQ_SUBSCRIBE = 369
TDMT_MND_TMQ_SUBSCRIBE_RSP = 370
TDMT_MND_TMQ_ASK_EP = 371
TDMT_MND_TMQ_ASK_EP_RSP = 372
TDMT_MND_TMQ_CONSUMER_RECOVER = 373
TDMT_MND_TMQ_CONSUMER_RECOVER_RSP = 374
TDMT_MND_TMQ_HB = 375
TDMT_MND_TMQ_HB_RSP = 376
TDMT_MND_TMQ_DO_REBALANCE = 377
TDMT_MND_TMQ_DO_REBALANCE_RSP = 378
TDMT_MND_TMQ_DROP_CGROUP = 379
TDMT_MND_TMQ_DROP_CGROUP_RSP = 380
TDMT_MND_CREATE_VG = 381
TDMT_MND_CREATE_VG_RSP = 382
TDMT_MND_TMQ_TIMER = 383
TDMT_MND_TMQ_TIMER_RSP = 384
TDMT_MND_TELEM_TIMER = 385
TDMT_MND_TELEM_TIMER_RSP = 386
TDMT_MND_TRANS_TIMER = 387
TDMT_MND_TRANS_TIMER_RSP = 388
TDMT_MND_TTL_TIMER = 389
TDMT_MND_TTL_TIMER_RSP = 390
TDMT_MND_GRANT_HB_TIMER = 391
TDMT_MND_GRANT_HB_TIMER_RSP = 392
TDMT_MND_NODECHECK_TIMER = 393
TDMT_MND_NODECHECK_TIMER_RSP = 394
TDMT_MND_KILL_TRANS = 395
TDMT_MND_KILL_TRANS_RSP = 396
TDMT_MND_KILL_QUERY = 397
TDMT_MND_KILL_QUERY_RSP = 398
TDMT_MND_KILL_CONN = 399
TDMT_MND_KILL_CONN_RSP = 400
TDMT_MND_HEARTBEAT = 401
TDMT_MND_HEARTBEAT_RSP = 402
TDMT_MND_STATUS = 403
TDMT_MND_STATUS_RSP = 404
TDMT_MND_SHOW = 405
TDMT_MND_SHOW_RSP = 406
TDMT_MND_SYSTABLE_RETRIEVE = 407
TDMT_MND_SYSTABLE_RETRIEVE_RSP = 408
TDMT_MND_GRANT = 409
TDMT_MND_GRANT_RSP = 410
TDMT_MND_AUTH = 411
TDMT_MND_AUTH_RSP = 412
TDMT_MND_APPLY_MSG = 413
TDMT_MND_APPLY_MSG_RSP = 414
TDMT_MND_BALANCE_VGROUP = 415
TDMT_MND_BALANCE_VGROUP_RSP = 416
TDMT_MND_MERGE_VGROUP = 417
TDMT_MND_MERGE_VGROUP_RSP = 418
TDMT_MND_REDISTRIBUTE_VGROUP = 419
TDMT_MND_REDISTRIBUTE_VGROUP_RSP = 420
TDMT_MND_SPLIT_VGROUP = 421
TDMT_MND_SPLIT_VGROUP_RSP = 422
TDMT_MND_SHOW_VARIABLES = 423
TDMT_MND_SHOW_VARIABLES_RSP = 424
TDMT_MND_SERVER_VERSION = 425
TDMT_MND_SERVER_VERSION_RSP = 426
TDMT_MND_UPTIME_TIMER = 427
TDMT_MND_UPTIME_TIMER_RSP = 428
TDMT_MND_TMQ_LOST_CONSUMER_CLEAR = 429
TDMT_MND_TMQ_LOST_CONSUMER_CLEAR_RSP = 430
TDMT_MND_STREAM_HEARTBEAT = 431
TDMT_MND_STREAM_HEARTBEAT_RSP = 432
TDMT_MND_RETRIEVE_IP_WHITE = 433
TDMT_MND_RETRIEVE_IP_WHITE_RSP = 434
TDMT_MND_GET_USER_WHITELIST = 435
TDMT_MND_GET_USER_WHITELIST_RSP = 436
TDMT_MND_NOTIFY = 437
TDMT_MND_NOTIFY_RSP = 438
TDMT_MND_BALANCE_VGROUP_LEADER = 439
TDMT_MND_BALANCE_VGROUP_LEADER_RSP = 440
TDMT_MND_RESTORE_DNODE = 441
TDMT_MND_RESTORE_DNODE_RSP = 442
TDMT_MND_PAUSE_STREAM = 443
TDMT_MND_PAUSE_STREAM_RSP = 444
TDMT_MND_RESUME_STREAM = 445
TDMT_MND_RESUME_STREAM_RSP = 446
TDMT_MND_STREAM_UPDATE_CHKPT_EVT = 447
TDMT_MND_STREAM_UPDATE_CHKPT_EVT_RSP = 448
TDMT_MND_STREAM_BEGIN_CHECKPOINT = 449
TDMT_MND_STREAM_BEGIN_CHECKPOINT_RSP = 450
TDMT_MND_STREAM_CHKPT_REPORT = 451
TDMT_MND_STREAM_CHKPT_REPORT_RSP = 452
TDMT_MND_STREAM_NODECHANGE_CHECK = 453
TDMT_MND_STREAM_NODECHANGE_CHECK_RSP = 454
TDMT_MND_TRIM_DB_TIMER = 455
TDMT_MND_TRIM_DB_TIMER_RSP = 456
TDMT_MND_GRANT_NOTIFY = 457
TDMT_MND_GRANT_NOTIFY_RSP = 458
TDMT_MND_CREATE_VIEW = 459
TDMT_MND_CREATE_VIEW_RSP = 460
TDMT_MND_DROP_VIEW = 461
TDMT_MND_DROP_VIEW_RSP = 462
TDMT_MND_VIEW_META = 463
TDMT_MND_VIEW_META_RSP = 464
TDMT_MND_STATIS = 465
TDMT_MND_STATIS_RSP = 466
TDMT_MND_KILL_COMPACT = 467
TDMT_MND_KILL_COMPACT_RSP = 468
TDMT_MND_COMPACT_TIMER = 469
TDMT_MND_COMPACT_TIMER_RSP = 470
TDMT_MND_STREAM_REQ_CHKPT = 471
TDMT_MND_STREAM_REQ_CHKPT_RSP = 472
TDMT_MND_CONFIG_CLUSTER = 473
TDMT_MND_CONFIG_CLUSTER_RSP = 474
TDMT_MND_CREATE_ENCRYPT_KEY = 475
TDMT_MND_CREATE_ENCRYPT_KEY_RSP = 476
TDMT_MND_S3MIGRATE_DB = 477
TDMT_MND_S3MIGRATE_DB_RSP = 478
TDMT_MND_S3MIGRATE_DB_TIMER = 479
TDMT_MND_S3MIGRATE_DB_TIMER_RSP = 480
TDMT_MND_UNUSED2 = 481
TDMT_MND_UNUSED2_RSP = 482
TDMT_MND_CREATE_TSMA = 483
TDMT_MND_CREATE_TSMA_RSP = 484
TDMT_MND_DROP_TSMA = 485
TDMT_MND_DROP_TSMA_RSP = 486
TDMT_MND_STB_DROP = 487
TDMT_MND_STB_DROP_RSP = 488
TDMT_MND_GET_TABLE_TSMA = 489
TDMT_MND_GET_TABLE_TSMA_RSP = 490
TDMT_MND_GET_TSMA = 491
TDMT_MND_GET_TSMA_RSP = 492
TDMT_MND_DROP_TB_WITH_TSMA = 493
TDMT_MND_DROP_TB_WITH_TSMA_RSP = 494
TDMT_MND_MAX_MSG = 495
TDMT_MND_MAX_MSG_RSP = 496
TDMT_VND_SUBMIT = 513
TDMT_VND_SUBMIT_RSP = 514
TDMT_VND_CREATE_TABLE = 515
TDMT_VND_CREATE_TABLE_RSP = 516
TDMT_VND_ALTER_TABLE = 517
TDMT_VND_ALTER_TABLE_RSP = 518
TDMT_VND_DROP_TABLE = 519
TDMT_VND_DROP_TABLE_RSP = 520
TDMT_VND_UPDATE_TAG_VAL = 521
TDMT_VND_UPDATE_TAG_VAL_RSP = 522
TDMT_VND_TABLE_META = 523
TDMT_VND_TABLE_META_RSP = 524
TDMT_VND_TABLES_META = 525
TDMT_VND_TABLES_META_RSP = 526
TDMT_VND_TABLE_CFG = 527
TDMT_VND_TABLE_CFG_RSP = 528
TDMT_VND_BATCH_META = 529
TDMT_VND_BATCH_META_RSP = 530
TDMT_VND_CREATE_STB = 531
TDMT_VND_CREATE_STB_RSP = 532
TDMT_VND_ALTER_STB = 533
TDMT_VND_ALTER_STB_RSP = 534
TDMT_VND_DROP_STB = 535
TDMT_VND_DROP_STB_RSP = 536
TDMT_VND_UNUSED1 = 537
TDMT_VND_UNUSED1_RSP = 538
TDMT_VND_UNUSED2 = 539
TDMT_VND_UNUSED2_RSP = 540
TDMT_VND_UNUSED3 = 541
TDMT_VND_UNUSED3_RSP = 542
TDMT_VND_UNUSED4 = 543
TDMT_VND_UNUSED4_RSP = 544
TDMT_VND_UNUSED5 = 545
TDMT_VND_UNUSED5_RSP = 546
TDMT_VND_UNUSED6 = 547
TDMT_VND_UNUSED6_RSP = 548
TDMT_VND_UNUSED7 = 549
TDMT_VND_UNUSED7_RSP = 550
TDMT_VND_UNUSED8 = 551
TDMT_VND_UNUSED8_RSP = 552
TDMT_VND_UNUSED9 = 553
TDMT_VND_UNUSED9_RSP = 554
TDMT_VND_UNUSED10 = 555
TDMT_VND_UNUSED10_RSP = 556
TDMT_VND_UNUSED11 = 557
TDMT_VND_UNUSED11_RSP = 558
TDMT_VND_UNUSED12 = 559
TDMT_VND_UNUSED12_RSP = 560
TDMT_VND_UNUSED13 = 561
TDMT_VND_UNUSED13_RSP = 562
TDMT_VND_UNUSED14 = 563
TDMT_VND_UNUSED14_RSP = 564
TDMT_VND_UNUSED15 = 565
TDMT_VND_UNUSED15_RSP = 566
TDMT_VND_CREATE_SMA = 567
TDMT_VND_CREATE_SMA_RSP = 568
TDMT_VND_CANCEL_SMA = 569
TDMT_VND_CANCEL_SMA_RSP = 570
TDMT_VND_DROP_SMA = 571
TDMT_VND_DROP_SMA_RSP = 572
TDMT_VND_SUBMIT_RSMA = 573
TDMT_VND_SUBMIT_RSMA_RSP = 574
TDMT_VND_FETCH_RSMA = 575
TDMT_VND_FETCH_RSMA_RSP = 576
TDMT_VND_EXEC_RSMA = 577
TDMT_VND_EXEC_RSMA_RSP = 578
TDMT_VND_DELETE = 579
TDMT_VND_DELETE_RSP = 580
TDMT_VND_BATCH_DEL = 581
TDMT_VND_BATCH_DEL_RSP = 582
TDMT_VND_ALTER_CONFIG = 583
TDMT_VND_ALTER_CONFIG_RSP = 584
TDMT_VND_ALTER_REPLICA = 585
TDMT_VND_ALTER_REPLICA_RSP = 586
TDMT_VND_ALTER_CONFIRM = 587
TDMT_VND_ALTER_CONFIRM_RSP = 588
TDMT_VND_ALTER_HASHRANGE = 589
TDMT_VND_ALTER_HASHRANGE_RSP = 590
TDMT_VND_COMPACT = 591
TDMT_VND_COMPACT_RSP = 592
TDMT_VND_DROP_TTL_TABLE = 593
TDMT_VND_DROP_TTL_TABLE_RSP = 594
TDMT_VND_TRIM = 595
TDMT_VND_TRIM_RSP = 596
TDMT_VND_COMMIT = 597
TDMT_VND_COMMIT_RSP = 598
TDMT_VND_CREATE_INDEX = 599
TDMT_VND_CREATE_INDEX_RSP = 600
TDMT_VND_DROP_INDEX = 601
TDMT_VND_DROP_INDEX_RSP = 602
TDMT_VND_DISABLE_WRITE = 603
TDMT_VND_DISABLE_WRITE_RSP = 604
TDMT_VND_QUERY_COMPACT_PROGRESS = 605
TDMT_VND_QUERY_COMPACT_PROGRESS_RSP = 606
TDMT_VND_KILL_COMPACT = 607
TDMT_VND_KILL_COMPACT_RSP = 608
TDMT_VND_S3MIGRATE = 609
TDMT_VND_S3MIGRATE_RSP = 610
TDMT_VND_ARB_HEARTBEAT = 611
TDMT_VND_ARB_HEARTBEAT_RSP = 612
TDMT_VND_ARB_CHECK_SYNC = 613
TDMT_VND_ARB_CHECK_SYNC_RSP = 614
TDMT_VND_FETCH_TTL_EXPIRED_TBS = 615
TDMT_VND_FETCH_TTL_EXPIRED_TBS_RSP = 616
TDMT_VND_MAX_MSG = 617
TDMT_VND_MAX_MSG_RSP = 618
TDMT_SCH_QUERY = 769
TDMT_SCH_QUERY_RSP = 770
TDMT_SCH_MERGE_QUERY = 771
TDMT_SCH_MERGE_QUERY_RSP = 772
TDMT_SCH_QUERY_CONTINUE = 773
TDMT_SCH_QUERY_CONTINUE_RSP = 774
TDMT_SCH_QUERY_HEARTBEAT = 775
TDMT_SCH_QUERY_HEARTBEAT_RSP = 776
TDMT_SCH_FETCH = 777
TDMT_SCH_FETCH_RSP = 778
TDMT_SCH_MERGE_FETCH = 779
TDMT_SCH_MERGE_FETCH_RSP = 780
TDMT_SCH_CANCEL_TASK = 781
TDMT_SCH_CANCEL_TASK_RSP = 782
TDMT_SCH_DROP_TASK = 783
TDMT_SCH_DROP_TASK_RSP = 784
TDMT_SCH_EXPLAIN = 785
TDMT_SCH_EXPLAIN_RSP = 786
TDMT_SCH_LINK_BROKEN = 787
TDMT_SCH_LINK_BROKEN_RSP = 788
TDMT_SCH_TASK_NOTIFY = 789
TDMT_SCH_TASK_NOTIFY_RSP = 790
TDMT_SCH_MAX_MSG = 791
TDMT_SCH_MAX_MSG_RSP = 792
TDMT_STREAM_TASK_DEPLOY = 1025
TDMT_STREAM_TASK_DEPLOY_RSP = 1026
TDMT_STREAM_TASK_DROP = 1027
TDMT_STREAM_TASK_DROP_RSP = 1028
TDMT_STREAM_TASK_RUN = 1029
TDMT_STREAM_TASK_RUN_RSP = 1030
TDMT_STREAM_TASK_DISPATCH = 1031
TDMT_STREAM_TASK_DISPATCH_RSP = 1032
TDMT_STREAM_TASK_UPDATE_CHKPT = 1033
TDMT_STREAM_TASK_UPDATE_CHKPT_RSP = 1034
TDMT_STREAM_RETRIEVE = 1035
TDMT_STREAM_RETRIEVE_RSP = 1036
TDMT_STREAM_TASK_CHECKPOINT_READY = 1037
TDMT_STREAM_TASK_CHECKPOINT_READY_RSP = 1038
TDMT_STREAM_TASK_REPORT_CHECKPOINT = 1039
TDMT_STREAM_TASK_REPORT_CHECKPOINT_RSP = 1040
TDMT_STREAM_TASK_RESTORE_CHECKPOINT = 1041
TDMT_STREAM_TASK_RESTORE_CHECKPOINT_RSP = 1042
TDMT_STREAM_TASK_PAUSE = 1043
TDMT_STREAM_TASK_PAUSE_RSP = 1044
TDMT_STREAM_TASK_RESUME = 1045
TDMT_STREAM_TASK_RESUME_RSP = 1046
TDMT_STREAM_TASK_STOP = 1047
TDMT_STREAM_TASK_STOP_RSP = 1048
TDMT_STREAM_UNUSED = 1049
TDMT_STREAM_UNUSED_RSP = 1050
TDMT_STREAM_CREATE = 1051
TDMT_STREAM_CREATE_RSP = 1052
TDMT_STREAM_DROP = 1053
TDMT_STREAM_DROP_RSP = 1054
TDMT_STREAM_RETRIEVE_TRIGGER = 1055
TDMT_STREAM_RETRIEVE_TRIGGER_RSP = 1056
TDMT_STREAM_MAX_MSG = 1057
TDMT_STREAM_MAX_MSG_RSP = 1058
TDMT_MON_MAX_MSG = 1281
TDMT_MON_MAX_MSG_RSP = 1282
TDMT_SYNC_TIMEOUT = 1537
TDMT_SYNC_TIMEOUT_RSP = 1538
TDMT_SYNC_TIMEOUT_ELECTION = 1539
TDMT_SYNC_TIMEOUT_ELECTION_RSP = 1540
TDMT_SYNC_PING_REPLY = 1541
TDMT_SYNC_PING_REPLY_RSP = 1542
TDMT_SYNC_CLIENT_REQUEST = 1543
TDMT_SYNC_CLIENT_REQUEST_RSP = 1544
TDMT_SYNC_CLIENT_REQUEST_BATCH = 1545
TDMT_SYNC_CLIENT_REQUEST_BATCH_RSP = 1546
TDMT_SYNC_CLIENT_REQUEST_REPLY = 1547
TDMT_SYNC_CLIENT_REQUEST_REPLY_RSP = 1548
TDMT_SYNC_REQUEST_VOTE = 1549
TDMT_SYNC_REQUEST_VOTE_RSP = 1550
TDMT_SYNC_REQUEST_VOTE_REPLY = 1551
TDMT_SYNC_REQUEST_VOTE_REPLY_RSP = 1552
TDMT_SYNC_APPEND_ENTRIES = 1553
TDMT_SYNC_APPEND_ENTRIES_RSP = 1554
TDMT_SYNC_APPEND_ENTRIES_BATCH = 1555
TDMT_SYNC_APPEND_ENTRIES_BATCH_RSP = 1556
TDMT_SYNC_APPEND_ENTRIES_REPLY = 1557
TDMT_SYNC_APPEND_ENTRIES_REPLY_RSP = 1558
TDMT_SYNC_NOOP = 1559
TDMT_SYNC_NOOP_RSP = 1560
TDMT_SYNC_UNKNOWN = 1561
TDMT_SYNC_UNKNOWN_RSP = 1562
TDMT_SYNC_COMMON_RESPONSE = 1563
TDMT_SYNC_COMMON_RESPONSE_RSP = 1564
TDMT_SYNC_APPLY_MSG = 1565
TDMT_SYNC_APPLY_MSG_RSP = 1566
TDMT_SYNC_CONFIG_CHANGE = 1567
TDMT_SYNC_CONFIG_CHANGE_RSP = 1568
TDMT_SYNC_CONFIG_CHANGE_FINISH = 1569
TDMT_SYNC_CONFIG_CHANGE_FINISH_RSP = 1570
TDMT_SYNC_SNAPSHOT_SEND = 1571
TDMT_SYNC_SNAPSHOT_SEND_RSP = 1572
TDMT_SYNC_SNAPSHOT_RSP = 1573
TDMT_SYNC_SNAPSHOT_RSP_RSP = 1574
TDMT_SYNC_LEADER_TRANSFER = 1575
TDMT_SYNC_LEADER_TRANSFER_RSP = 1576
TDMT_SYNC_SET_MNODE_STANDBY = 1577
TDMT_SYNC_SET_MNODE_STANDBY_RSP = 1578
TDMT_SYNC_SET_VNODE_STANDBY = 1579
TDMT_SYNC_SET_VNODE_STANDBY_RSP = 1580
TDMT_SYNC_HEARTBEAT = 1581
TDMT_SYNC_HEARTBEAT_RSP = 1582
TDMT_SYNC_HEARTBEAT_REPLY = 1583
TDMT_SYNC_HEARTBEAT_REPLY_RSP = 1584
TDMT_SYNC_LOCAL_CMD = 1585
TDMT_SYNC_LOCAL_CMD_RSP = 1586
TDMT_SYNC_PREP_SNAPSHOT = 1587
TDMT_SYNC_PREP_SNAPSHOT_RSP = 1588
TDMT_SYNC_PREP_SNAPSHOT_REPLY = 1589
TDMT_SYNC_PREP_SNAPSHOT_REPLY_RSP = 1590
TDMT_SYNC_UNUSED_CODE = 1591
TDMT_SYNC_UNUSED_CODE_RSP = 1592
TDMT_SYNC_FORCE_FOLLOWER = 1593
TDMT_SYNC_FORCE_FOLLOWER_RSP = 1594
TDMT_SYNC_SET_ASSIGNED_LEADER = 1595
TDMT_SYNC_SET_ASSIGNED_LEADER_RSP = 1596
TDMT_SYNC_MAX_MSG = 1597
TDMT_SYNC_MAX_MSG_RSP = 1598
TDMT_VND_STREAM_SCAN_HISTORY = 1793
TDMT_VND_STREAM_SCAN_HISTORY_RSP = 1794
TDMT_VND_STREAM_CHECK_POINT_SOURCE = 1795
TDMT_VND_STREAM_CHECK_POINT_SOURCE_RSP = 1796
TDMT_VND_STREAM_TASK_UPDATE = 1797
TDMT_VND_STREAM_TASK_UPDATE_RSP = 1798
TDMT_VND_STREAM_TASK_RESET = 1799
TDMT_VND_STREAM_TASK_RESET_RSP = 1800
TDMT_VND_STREAM_TASK_CHECK = 1801
TDMT_VND_STREAM_TASK_CHECK_RSP = 1802
TDMT_VND_STREAM_UNUSED = 1803
TDMT_VND_STREAM_UNUSED_RSP = 1804
TDMT_VND_GET_STREAM_PROGRESS = 1805
TDMT_VND_GET_STREAM_PROGRESS_RSP = 1806
TDMT_VND_STREAM_MAX_MSG = 1807
TDMT_VND_STREAM_MAX_MSG_RSP = 1808
TDMT_VND_TMQ_SUBSCRIBE = 2049
TDMT_VND_TMQ_SUBSCRIBE_RSP = 2050
TDMT_VND_TMQ_DELETE_SUB = 2051
TDMT_VND_TMQ_DELETE_SUB_RSP = 2052
TDMT_VND_TMQ_COMMIT_OFFSET = 2053
TDMT_VND_TMQ_COMMIT_OFFSET_RSP = 2054
TDMT_VND_TMQ_SEEK = 2055
TDMT_VND_TMQ_SEEK_RSP = 2056
TDMT_VND_TMQ_ADD_CHECKINFO = 2057
TDMT_VND_TMQ_ADD_CHECKINFO_RSP = 2058
TDMT_VND_TMQ_DEL_CHECKINFO = 2059
TDMT_VND_TMQ_DEL_CHECKINFO_RSP = 2060
TDMT_VND_TMQ_CONSUME = 2061
TDMT_VND_TMQ_CONSUME_RSP = 2062
TDMT_VND_TMQ_CONSUME_PUSH = 2063
TDMT_VND_TMQ_CONSUME_PUSH_RSP = 2064
TDMT_VND_TMQ_VG_WALINFO = 2065
TDMT_VND_TMQ_VG_WALINFO_RSP = 2066
TDMT_VND_TMQ_VG_COMMITTEDINFO = 2067
TDMT_VND_TMQ_VG_COMMITTEDINFO_RSP = 2068
TDMT_VND_TMQ_MAX_MSG = 2069
TDMT_VND_TMQ_MAX_MSG_RSP = 2070
TDMT_MND_ARB_HEARTBEAT_TIMER = 2305
TDMT_MND_ARB_HEARTBEAT_TIMER_RSP = 2306
TDMT_MND_ARB_CHECK_SYNC_TIMER = 2307
TDMT_MND_ARB_CHECK_SYNC_TIMER_RSP = 2308
TDMT_MND_ARB_UPDATE_GROUP = 2309
TDMT_MND_ARB_UPDATE_GROUP_RSP = 2310
TDMT_MND_ARB_UPDATE_GROUP_BATCH = 2311
TDMT_MND_ARB_UPDATE_GROUP_BATCH_RSP = 2312
TDMT_MND_ARB_MAX_MSG = 2313
TDMT_MND_ARB_MAX_MSG_RSP = 2314

View File

@ -1,5 +1,14 @@
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <unistd.h>
#include <limits.h>
#include <sys/stat.h>
#include <algorithm>
#include <unordered_map>
#include <gtest/gtest.h>
#include "tmsg.h"
@ -12,15 +21,260 @@
#undef TD_MSG_SEG_CODE_
#include "tmsgdef.h"
TEST(td_msg_test, simple_msg_test) {
// std::cout << TMSG_INFO(TDMT_VND_DROP_TABLE) << std::endl;
// std::cout << TMSG_INFO(TDMT_MND_DROP_SUPER_TABLE) << std::endl;
// std::cout << TMSG_INFO(TDMT_MND_CREATE_SUPER_TABLE) << std::endl;
#undef getline
#undef close
int32_t msgSize = sizeof(tMsgTypeInfo) / sizeof(SMsgTypeInfo);
for (int32_t i = 0; i < msgSize; ++i) {
SMsgTypeInfo *pInfo = &tMsgTypeInfo[i];
std::cout << i * 2 + 1 << " " << pInfo->name << " " << pInfo->type << std::endl;
std::cout << i * 2 + 2 << " " << pInfo->rspName << " " << pInfo->rspType << std::endl;
using namespace std;
enum class ParseStatus {
Success,
FileNotExist,
FileNotOpen,
ResponseWithoutRequest,
RequestWithoutResponse
};
typedef struct {
string name;
string rspName;
int32_t type;
int32_t rspType;
} STestMsgTypeInfo;
string getExecutableDirectory() {
char result[PATH_MAX];
ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
if (count != -1) {
result[count] = '\0';
string path(result);
size_t pos = path.rfind('/');
if (pos != string::npos) {
path.erase(pos + 1);
}
return path;
} else {
throw std::runtime_error("Failed to get the executable's directory");
}
}
// parses key-value pairs from strings
pair<string, int32_t> parseKeyValuePair(const string &line, char delim = '=') {
size_t pos = line.find(delim);
if (pos == string::npos)
return make_pair("", 0);
string key = line.substr(0, pos);
// remove leading spaces
size_t firstNotSpace = key.find_first_not_of(" ");
if (firstNotSpace != string::npos) {
key = key.substr(firstNotSpace);
} else {
key.clear();
}
// remove ending spaces
size_t lastNotSpace = key.find_last_not_of(" ");
if (lastNotSpace != string::npos) {
key = key.substr(0, lastNotSpace + 1);
}
if (key.front() == '"' && key.back() == '"')
key = key.substr(1, key.size() - 2);
if (key.front() == '\'' && key.back() == '\'')
key = key.substr(1, key.size() - 2);
string valStr = line.substr(pos + 1);
int32_t val = stoi(valStr);
return make_pair(key, val);
}
// read the configuration file and parse it into the STestMsgTypeInfo array
ParseStatus readConfig(const string& filePath, vector<STestMsgTypeInfo>& msgTypes) {
ifstream file(filePath);
if (!file.is_open()) {
if (file.fail() && errno == ENOENT) {
cerr << "Error: The file does not exist, file: " << filePath << endl;
return ParseStatus::FileNotExist;
} else {
cerr << "Error: Could not open the file, file: " << filePath << endl;
return ParseStatus::FileNotOpen;
}
}
auto endsWith = [](const string& str, const string& suffix) {
if (str.length() < suffix.length()) {
return false;
}
return equal(str.end() - suffix.length(), str.end(), suffix.begin());
};
bool evenLine = true;
string line;
string suffix("_RSP");
pair<string, int32_t> reqKwInfo;
while (std::getline(file, line)) {
char delim = '#';
if (line.find('=') != string::npos) {
delim = '=';
} else if (line.find(':') != string::npos) {
delim = ':';
} else if (line.find('{') != string::npos || line.find('}') != string::npos) {
// TODO: parse json format
continue;
} else {
continue;
}
auto curKwInfo = parseKeyValuePair(line, delim);
evenLine = ! evenLine;
// check message type
if (evenLine == false) { // req msg
reqKwInfo = curKwInfo;
} else { // rsp msg
if (reqKwInfo.first.empty()) {
cerr << "Error: Found a response message without a matching request, rsp: " << curKwInfo.first << endl;
return ParseStatus::ResponseWithoutRequest;
} else if (!endsWith(curKwInfo.first, suffix)) {
cerr << "Error: A request message was not followed by a matching response, req: " << reqKwInfo.first << endl;
return ParseStatus::RequestWithoutResponse;
} else {
STestMsgTypeInfo msgInfo;
msgInfo.name = reqKwInfo.first;
msgInfo.rspName = curKwInfo.first;
msgInfo.type = reqKwInfo.second;
msgInfo.rspType = curKwInfo.second;
msgTypes.push_back(msgInfo);
// reset req info
reqKwInfo = make_pair("", -1);
}
}
}
if (!reqKwInfo.first.empty()) {
cerr << "Error: A request message was not followed by a matching response, req: " << reqKwInfo.first << endl;
return ParseStatus::RequestWithoutResponse;
}
return ParseStatus::Success;
}
TEST(td_msg_test, msg_type_compatibility_test) {
// cout << TMSG_INFO(TDMT_VND_DROP_TABLE) << endl;
// cout << TMSG_INFO(TDMT_MND_DROP_SUPER_TABLE) << endl;
// cout << TMSG_INFO(TDMT_MND_CREATE_SUPER_TABLE) << endl;
// int32_t msgSize = sizeof(tMsgTypeInfo) / sizeof(SMsgTypeInfo);
// for (int32_t i = 0; i < msgSize; ++i) {
// SMsgTypeInfo *pInfo = &tMsgTypeInfo[i];
// cout << i * 2 + 1 << " " << pInfo->name << " " << pInfo->type << endl;
// cout << i * 2 + 2 << " " << pInfo->rspName << " " << pInfo->rspType << endl;
// }
// current msgs: to map
unordered_map<string, const SMsgTypeInfo*> map;
for (const auto& info : tMsgTypeInfo) {
map[info.name] = &info;
}
string configFileName = "msgTypeTable.ini";
string execDir = getExecutableDirectory();
string configFilePath(execDir + configFileName);
vector<STestMsgTypeInfo> msgTypes;
ParseStatus status = readConfig(configFilePath, msgTypes);
switch (status) {
case ParseStatus::Success:
for (const auto& stdInfo : msgTypes) {
auto it = map.find(stdInfo.name);
if (it == map.end()) {
FAIL() << "Error: Could not find msg: " << stdInfo.name << ".";
} else {
auto newInfo = it->second;
ASSERT_STREQ(stdInfo.name.c_str(), newInfo->name);
ASSERT_STREQ(stdInfo.rspName.c_str(), newInfo->rspName);
ASSERT_EQ(stdInfo.type, newInfo->type)
<< "Message type mismatch(" << stdInfo.name << "): expected " << stdInfo.type << ", got " << newInfo->type << ".";
ASSERT_EQ(stdInfo.rspType, newInfo->rspType)
<< "Message response type mismatch(" << stdInfo.rspName << "): expected " << stdInfo.rspType << ", got " << newInfo->rspType << ".";
}
}
break;
case ParseStatus::FileNotExist:
FAIL() << "Error: The file does not exist, file: " << configFileName << ".";
break;
case ParseStatus::FileNotOpen:
FAIL() << "Error: Could not open the file, file: " << configFileName << ".";
break;
case ParseStatus::ResponseWithoutRequest:
FAIL() << "Error: Found a response message without a matching request.";
break;
case ParseStatus::RequestWithoutResponse:
FAIL() << "Error: A request message was not followed by a matching response.";
break;
default:
FAIL() << "Unknown Error.";
break;
}
}
size_t maxLengthOfMsgType() {
size_t maxLen = 0;
for (const auto& info : tMsgTypeInfo) {
maxLen = std::max(maxLen, strlen(info.name));
maxLen = std::max(maxLen, strlen(info.rspName));
}
return (maxLen / 4 + 1) * 4;
}
void generateConfigFile(const string& filePath) {
size_t maxStringLength = maxLengthOfMsgType();
std::ofstream file(filePath);
if (!file.is_open()) {
cerr << "Failed to open file for writing, at: " << filePath << "." << endl;
return;
}
for (const auto& info : tMsgTypeInfo) {
file << std::left << std::setw(maxStringLength) << info.name << "= " << info.type << endl;
file << std::left << std::setw(maxStringLength) << info.rspName << "= " << info.rspType << endl;
}
if (file.fail()) {
cerr << "An error occurred while writing to the file." << endl;
} else {
cout << "Data successfully written to file: " << filePath << endl;
}
file.close();
}
void processCommandArgs(int argc, char** argv) {
for (int i = 1; i < argc; ++i) {
if (string(argv[i]) == "--output-config") {
string configFile = (i + 1 < argc) ? argv[++i] : "./msgTypeTable.ini";
generateConfigFile(configFile);
exit(0);
}
}
}
int main(int argc, char **argv) {
processCommandArgs(argc, argv);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@ -261,7 +261,7 @@ static void dmPrintVersion() {
printf("%s\ntaosd version: %s compatible_version: %s\n", TD_PRODUCT_NAME, version, compatible_version);
printf("git: %s\n", gitinfo);
#ifdef TD_ENTERPRISE
printf("git: %s\n", gitinfoOfInternal);
printf("gitOfInternal: %s\n", gitinfoOfInternal);
#endif
printf("build: %s\n", buildinfo);
}

View File

@ -144,7 +144,7 @@ static void vmGenerateVnodeCfg(SCreateVnodeReq *pCreate, SVnodeCfg *pCfg) {
}
#if defined(TD_ENTERPRISE)
pCfg->tsdbCfg.encryptAlgorithm = pCreate->encryptAlgorithm;
if(pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4){
if (pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4) {
strncpy(pCfg->tsdbCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
#else
@ -160,7 +160,7 @@ static void vmGenerateVnodeCfg(SCreateVnodeReq *pCreate, SVnodeCfg *pCfg) {
pCfg->walCfg.level = pCreate->walLevel;
#if defined(TD_ENTERPRISE)
pCfg->walCfg.encryptAlgorithm = pCreate->encryptAlgorithm;
if(pCfg->walCfg.encryptAlgorithm == DND_CA_SM4){
if (pCfg->walCfg.encryptAlgorithm == DND_CA_SM4) {
strncpy(pCfg->walCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
#else
@ -169,7 +169,7 @@ static void vmGenerateVnodeCfg(SCreateVnodeReq *pCreate, SVnodeCfg *pCfg) {
#if defined(TD_ENTERPRISE)
pCfg->tdbEncryptAlgorithm = pCreate->encryptAlgorithm;
if(pCfg->tdbEncryptAlgorithm == DND_CA_SM4){
if (pCfg->tdbEncryptAlgorithm == DND_CA_SM4) {
strncpy(pCfg->tdbEncryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
#else
@ -278,7 +278,7 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) {
req.keepTimeOffset, req.s3ChunkSize, req.s3KeepLocal, req.s3Compact, req.isTsma, req.precision, req.compression,
req.minRows, req.maxRows, req.walFsyncPeriod, req.walLevel, req.walRetentionPeriod, req.walRetentionSize,
req.walRollPeriod, req.walSegmentSize, req.hashMethod, req.hashBegin, req.hashEnd, req.hashPrefix, req.hashSuffix,
req.replica, req.selfIndex, req.learnerReplica, req.learnerSelfIndex, req.strict, req.changeVersion,
req.replica, req.selfIndex, req.learnerReplica, req.learnerSelfIndex, req.strict, req.changeVersion,
req.encryptAlgorithm);
for (int32_t i = 0; i < req.replica; ++i) {
@ -304,8 +304,8 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) {
return -1;
}
if(req.encryptAlgorithm == DND_CA_SM4){
if(strlen(tsEncryptKey) == 0){
if (req.encryptAlgorithm == DND_CA_SM4) {
if (strlen(tsEncryptKey) == 0) {
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
dError("vgId:%d, failed to create vnode since encrypt key is empty", req.vgId);
return -1;
@ -482,7 +482,9 @@ int32_t vmProcessAlterVnodeTypeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) {
.diskPrimary = pVnode->diskPrimary,
};
tstrncpy(wrapperCfg.path, pVnode->path, sizeof(wrapperCfg.path));
vmCloseVnode(pMgmt, pVnode, false);
bool commitAndRemoveWal = vnodeShouldRemoveWal(pVnode->pImpl);
vmCloseVnode(pMgmt, pVnode, commitAndRemoveWal);
int32_t diskPrimary = wrapperCfg.diskPrimary;
char path[TSDB_FILENAME_LEN] = {0};
@ -737,7 +739,9 @@ int32_t vmProcessAlterVnodeReplicaReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) {
.diskPrimary = pVnode->diskPrimary,
};
tstrncpy(wrapperCfg.path, pVnode->path, sizeof(wrapperCfg.path));
vmCloseVnode(pMgmt, pVnode, false);
bool commitAndRemoveWal = vnodeShouldRemoveWal(pVnode->pImpl);
vmCloseVnode(pMgmt, pVnode, commitAndRemoveWal);
int32_t diskPrimary = wrapperCfg.diskPrimary;
char path[TSDB_FILENAME_LEN] = {0};

View File

@ -495,6 +495,16 @@ static int32_t mndCheckInChangeDbCfg(SMnode *pMnode, SDbCfg *pOldCfg, SDbCfg *pN
#else
if (pNewCfg->replications != 1 && pNewCfg->replications != 3) return -1;
#endif
if (pNewCfg->walLevel == 0 && pOldCfg->replications > 1) {
terrno = TSDB_CODE_MND_INVALID_WAL_LEVEL;
return -1;
}
if (pNewCfg->replications > 1 && pOldCfg->walLevel == 0) {
terrno = TSDB_CODE_MND_INVALID_WAL_LEVEL;
return -1;
}
if (pNewCfg->sstTrigger < TSDB_MIN_STT_TRIGGER || pNewCfg->sstTrigger > TSDB_MAX_STT_TRIGGER) return -1;
if (pNewCfg->minRows < TSDB_MIN_MINROWS_FBLOCK || pNewCfg->minRows > TSDB_MAX_MINROWS_FBLOCK) return -1;
if (pNewCfg->maxRows < TSDB_MIN_MAXROWS_FBLOCK || pNewCfg->maxRows > TSDB_MAX_MAXROWS_FBLOCK) return -1;

View File

@ -52,6 +52,7 @@ extern const SVnodeCfg vnodeCfgDefault;
int32_t vnodeInit(int32_t nthreads);
void vnodeCleanup();
int32_t vnodeCreate(const char *path, SVnodeCfg *pCfg, int32_t diskPrimary, STfs *pTfs);
bool vnodeShouldRemoveWal(SVnode *pVnode);
int32_t vnodeAlterReplica(const char *path, SAlterVnodeReplicaReq *pReq, int32_t diskPrimary, STfs *pTfs);
int32_t vnodeAlterHashRange(const char *srcPath, const char *dstPath, SAlterVnodeHashRangeReq *pReq,
int32_t diskPrimary, STfs *pTfs);
@ -181,7 +182,7 @@ void tsdbReaderSetNotifyCb(STsdbReader *pReader, TsdReaderNotifyCbFn not
int32_t tsdbReuseCacherowsReader(void *pReader, void *pTableIdList, int32_t numOfTables);
int32_t tsdbCacherowsReaderOpen(void *pVnode, int32_t type, void *pTableIdList, int32_t numOfTables, int32_t numOfCols,
SArray *pCidList, int32_t *pSlotIds, uint64_t suid, void **pReader, const char *idstr,
SArray *pFuncTypeList, SColumnInfo* pkCol, int32_t numOfPks);
SArray *pFuncTypeList, SColumnInfo *pkCol, int32_t numOfPks);
int32_t tsdbRetrieveCacheRows(void *pReader, SSDataBlock *pResBlock, const int32_t *slotIds, const int32_t *dstSlotIds,
SArray *pTableUids);
void *tsdbCacherowsReaderClose(void *pReader);
@ -218,8 +219,8 @@ typedef struct STqReader {
STqReader *tqReaderOpen(SVnode *pVnode);
void tqReaderClose(STqReader *);
bool tqGetTablePrimaryKey(STqReader* pReader);
void tqSetTablePrimaryKey(STqReader* pReader, int64_t uid);
bool tqGetTablePrimaryKey(STqReader *pReader);
void tqSetTablePrimaryKey(STqReader *pReader, int64_t uid);
void tqReaderSetColIdList(STqReader *pReader, SArray *pColIdList);
int32_t tqReaderSetTbUidList(STqReader *pReader, const SArray *tbUidList, const char *id);
@ -278,8 +279,8 @@ struct STsdbCfg {
int32_t keep2; // just for save config, don't use in tsdbRead/tsdbCommit/..., and use STsdbKeepCfg in STsdb instead
int32_t keepTimeOffset; // just for save config, use STsdbKeepCfg in STsdb instead
SRetention retentions[TSDB_RETENTION_MAX];
int32_t encryptAlgorithm;
char encryptKey[ENCRYPT_KEY_LEN + 1];
int32_t encryptAlgorithm;
char encryptKey[ENCRYPT_KEY_LEN + 1];
};
typedef struct {

View File

@ -299,7 +299,7 @@ static int32_t tdSetRSmaInfoItemParams(SSma *pSma, SRSmaParam *param, SRSmaStat
tdRSmaTaskInit(pStreamTask->pMeta, pItem, &pStreamTask->id);
pStreamTask->status.pSM = streamCreateStateMachine(pStreamTask);
pStreamTask->chkInfo.pActiveInfo = streamTaskCreateActiveChkptInfo();
pStreamState = streamStateOpen(taskInfDir, pStreamTask, pStreamTask->id.streamId, pStreamTask->id.taskId, true, -1, -1);
pStreamState = streamStateOpen(taskInfDir, pStreamTask, pStreamTask->id.streamId, pStreamTask->id.taskId);
if (!pStreamState) {
terrno = TSDB_CODE_RSMA_STREAM_STATE_OPEN;
return TSDB_CODE_FAILED;

View File

@ -49,7 +49,7 @@ int32_t tqExpandStreamTask(SStreamTask* pTask) {
// sink task does not need the pState
if (pTask->info.taskLevel != TASK_LEVEL__SINK) {
pTask->pState = streamStateOpen(pMeta->path, pTask, false, streamId, taskId, -1, -1);
pTask->pState = streamStateOpen(pMeta->path, pTask, streamId, taskId);
if (pTask->pState == NULL) {
tqError("s-task:%s (vgId:%d) failed to open state for task, expand task failed", pTask->id.idStr, vgId);
return -1;

View File

@ -13,9 +13,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tglobal.h"
#include "tutil.h"
#include "vnd.h"
#include "tglobal.h"
const SVnodeCfg vnodeCfgDefault = {.vgId = -1,
.dbname = "",
@ -47,6 +47,7 @@ const SVnodeCfg vnodeCfgDefault = {.vgId = -1,
.segSize = 0,
.retentionSize = -1,
.level = TAOS_WAL_WRITE,
.clearFiles = 0,
},
.hashBegin = 0,
.hashEnd = 0,
@ -142,6 +143,7 @@ int vnodeEncodeConfig(const void *pObj, SJson *pJson) {
if (tjsonAddIntegerToObject(pJson, "wal.retentionSize", pCfg->walCfg.retentionSize) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "wal.segSize", pCfg->walCfg.segSize) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "wal.level", pCfg->walCfg.level) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "wal.clearFiles", pCfg->walCfg.clearFiles) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "wal.encryptAlgorithm", pCfg->walCfg.encryptAlgorithm) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "tdbEncryptAlgorithm", pCfg->tdbEncryptAlgorithm) < 0) return -1;
if (tjsonAddIntegerToObject(pJson, "sstTrigger", pCfg->sttTrigger) < 0) return -1;
@ -249,12 +251,11 @@ int vnodeDecodeConfig(const SJson *pJson, void *pObj) {
tjsonGetNumberValue(pJson, "tsdb.encryptAlgorithm", pCfg->tsdbCfg.encryptAlgorithm, code);
if (code < 0) return -1;
#if defined(TD_ENTERPRISE)
if(pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4){
if(tsEncryptKey[0] == 0){
if (pCfg->tsdbCfg.encryptAlgorithm == DND_CA_SM4) {
if (tsEncryptKey[0] == 0) {
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
return -1;
}
else{
} else {
strncpy(pCfg->tsdbCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
}
@ -273,15 +274,16 @@ int vnodeDecodeConfig(const SJson *pJson, void *pObj) {
if (code < 0) return -1;
tjsonGetNumberValue(pJson, "wal.level", pCfg->walCfg.level, code);
if (code < 0) return -1;
tjsonGetNumberValue(pJson, "wal.clearFiles", pCfg->walCfg.clearFiles, code);
if (code < 0) return -1;
tjsonGetNumberValue(pJson, "wal.encryptAlgorithm", pCfg->walCfg.encryptAlgorithm, code);
if (code < 0) return -1;
#if defined(TD_ENTERPRISE)
if(pCfg->walCfg.encryptAlgorithm == DND_CA_SM4){
if(tsEncryptKey[0] == 0){
if (pCfg->walCfg.encryptAlgorithm == DND_CA_SM4) {
if (tsEncryptKey[0] == 0) {
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
return -1;
}
else{
} else {
strncpy(pCfg->walCfg.encryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
}
@ -289,12 +291,11 @@ int vnodeDecodeConfig(const SJson *pJson, void *pObj) {
tjsonGetNumberValue(pJson, "tdbEncryptAlgorithm", pCfg->tdbEncryptAlgorithm, code);
if (code < 0) return -1;
#if defined(TD_ENTERPRISE)
if(pCfg->tdbEncryptAlgorithm == DND_CA_SM4){
if(tsEncryptKey[0] == 0){
if (pCfg->tdbEncryptAlgorithm == DND_CA_SM4) {
if (tsEncryptKey[0] == 0) {
terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY;
return -1;
}
else{
} else {
strncpy(pCfg->tdbEncryptKey, tsEncryptKey, ENCRYPT_KEY_LEN);
}
}

View File

@ -81,6 +81,8 @@ int32_t vnodeCreate(const char *path, SVnodeCfg *pCfg, int32_t diskPrimary, STfs
return 0;
}
bool vnodeShouldRemoveWal(SVnode *pVnode) { return pVnode->config.walCfg.clearFiles == 1; }
int32_t vnodeAlterReplica(const char *path, SAlterVnodeReplicaReq *pReq, int32_t diskPrimary, STfs *pTfs) {
SVnodeInfo info = {0};
char dir[TSDB_FILENAME_LEN] = {0};
@ -129,6 +131,12 @@ int32_t vnodeAlterReplica(const char *path, SAlterVnodeReplicaReq *pReq, int32_t
}
pCfg->changeVersion = pReq->changeVersion;
if (info.config.walCfg.clearFiles) {
info.config.walCfg.clearFiles = 0;
vInfo("vgId:%d, reset wal clearFiles", pReq->vgId);
}
vInfo("vgId:%d, save config while alter, replicas:%d totalReplicas:%d selfIndex:%d changeVersion:%d", pReq->vgId,
pCfg->replicaNum, pCfg->totalReplicaNum, pCfg->myIndex, pCfg->changeVersion);
@ -486,15 +494,14 @@ SVnode *vnodeOpen(const char *path, int32_t diskPrimary, STfs *pTfs, SMsgCb msgC
if (tsEnableMonitor && pVnode->monitor.insertCounter == NULL) {
taos_counter_t *counter = NULL;
int32_t label_count = 7;
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
VNODE_METRIC_TAG_NAME_DNODE_ID, VNODE_METRIC_TAG_NAME_DNODE_EP,
VNODE_METRIC_TAG_NAME_VGROUP_ID, VNODE_METRIC_TAG_NAME_USERNAME,
VNODE_METRIC_TAG_NAME_RESULT};
counter = taos_counter_new(VNODE_METRIC_SQL_COUNT, "counter for insert sql",
label_count, sample_labels);
vInfo("vgId:%d, new metric:%p",TD_VID(pVnode), counter);
if(taos_collector_registry_register_metric(counter) == 1){
int32_t label_count = 7;
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
VNODE_METRIC_TAG_NAME_DNODE_ID, VNODE_METRIC_TAG_NAME_DNODE_EP,
VNODE_METRIC_TAG_NAME_VGROUP_ID, VNODE_METRIC_TAG_NAME_USERNAME,
VNODE_METRIC_TAG_NAME_RESULT};
counter = taos_counter_new(VNODE_METRIC_SQL_COUNT, "counter for insert sql", label_count, sample_labels);
vInfo("vgId:%d, new metric:%p", TD_VID(pVnode), counter);
if (taos_collector_registry_register_metric(counter) == 1) {
taos_counter_destroy(counter);
counter = taos_collector_registry_get_metric(VNODE_METRIC_SQL_COUNT);
vInfo("vgId:%d, get metric from registry:%p", TD_VID(pVnode), counter);

View File

@ -2023,6 +2023,9 @@ static int32_t vnodeProcessAlterConfigReq(SVnode *pVnode, int64_t ver, void *pRe
}
if (pVnode->config.walCfg.level != req.walLevel) {
if (pVnode->config.walCfg.level == 0) {
pVnode->config.walCfg.clearFiles = 1;
}
pVnode->config.walCfg.level = req.walLevel;
walChanged = true;
}

View File

@ -239,23 +239,6 @@ static int32_t buildCreateDBResultDataBlock(SSDataBlock** pOutput) {
return code;
}
static int32_t buildAliveResultDataBlock(SSDataBlock** pOutput) {
SSDataBlock* pBlock = createDataBlock();
if (NULL == pBlock) {
return TSDB_CODE_OUT_OF_MEMORY;
}
SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_INT, sizeof(int32_t), 1);
int32_t code = blockDataAppendColInfo(pBlock, &infoData);
if (TSDB_CODE_SUCCESS == code) {
*pOutput = pBlock;
} else {
blockDataDestroy(pBlock);
}
return code;
}
int64_t getValOfDiffPrecision(int8_t unit, int64_t val) {
int64_t v = 0;
switch (unit) {
@ -403,110 +386,6 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, ch
colDataSetVal(pCol2, 0, buf2, false);
}
#define CHECK_LEADER(n) \
(row[n] && (fields[n].type == TSDB_DATA_TYPE_VARCHAR && \
strncasecmp(row[n], "leader", varDataLen((char*)row[n] - VARSTR_HEADER_SIZE)) == 0))
// on this row, if have leader return true else return false
bool existLeaderRole(TAOS_ROW row, TAOS_FIELD* fields, int nFields) {
// vgroup_id | db_name | tables | v1_dnode | v1_status | v2_dnode | v2_status | v3_dnode | v3_status | v4_dnode |
// v4_status | cacheload | tsma |
if (nFields != 14) {
return false;
}
// check have leader on cloumn v*_status on 4 6 8 10
if (CHECK_LEADER(4) || CHECK_LEADER(6) || CHECK_LEADER(8) || CHECK_LEADER(10)) {
return true;
}
return false;
}
// get db alive status, return 1 is alive else return 0
int32_t getAliveStatusFromApi(int64_t* pConnId, char* dbName, int32_t* pStatus) {
char sql[128 + TSDB_DB_NAME_LEN] = "select * from information_schema.ins_vgroups";
int32_t code;
// filter with db name
if (dbName && dbName[0] != 0) {
char str[64 + TSDB_DB_NAME_LEN] = "";
// test db name exist
sprintf(str, "show create database %s ;", dbName);
TAOS_RES* dbRes = taos_query(pConnId, str);
code = taos_errno(dbRes);
if (code != TSDB_CODE_SUCCESS) {
taos_free_result(dbRes);
return code;
}
taos_free_result(dbRes);
sprintf(str, " where db_name='%s' ;", dbName);
strcat(sql, str);
}
TAOS_RES* res = taos_query(pConnId, sql);
code = taos_errno(res);
if (code != TSDB_CODE_SUCCESS) {
taos_free_result(res);
return code;
}
TAOS_ROW row = NULL;
TAOS_FIELD* fields = taos_fetch_fields(res);
int32_t nFields = taos_num_fields(res);
int32_t nAvailble = 0;
int32_t nUnAvailble = 0;
while ((row = taos_fetch_row(res)) != NULL) {
if (existLeaderRole(row, fields, nFields)) {
nAvailble++;
} else {
nUnAvailble++;
}
}
taos_free_result(res);
int32_t status = 0;
if (nAvailble + nUnAvailble == 0 || nUnAvailble == 0) {
status = SHOW_STATUS_AVAILABLE;
} else if (nAvailble > 0 && nUnAvailble > 0) {
status = SHOW_STATUS_HALF_AVAILABLE;
} else {
status = SHOW_STATUS_NOT_AVAILABLE;
}
if (pStatus) {
*pStatus = status;
}
return TSDB_CODE_SUCCESS;
}
static int32_t setAliveResultIntoDataBlock(int64_t* pConnId, SSDataBlock* pBlock, char* dbName) {
blockDataEnsureCapacity(pBlock, 1);
pBlock->info.rows = 1;
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
int32_t status = 0;
int32_t code = getAliveStatusFromApi(pConnId, dbName, &status);
if (code == TSDB_CODE_SUCCESS) {
colDataSetVal(pCol1, 0, (const char*)&status, false);
}
return code;
}
static int32_t execShowAliveStatus(int64_t* pConnId, SShowAliveStmt* pStmt, SRetrieveTableRsp** pRsp) {
SSDataBlock* pBlock = NULL;
int32_t code = buildAliveResultDataBlock(&pBlock);
if (TSDB_CODE_SUCCESS == code) {
code = setAliveResultIntoDataBlock(pConnId, pBlock, pStmt->dbName);
}
if (TSDB_CODE_SUCCESS == code) {
code = buildRetrieveTableRsp(pBlock, SHOW_ALIVE_RESULT_COLS, pRsp);
}
blockDataDestroy(pBlock);
return code;
}
static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) {
SSDataBlock* pBlock = NULL;
int32_t code = buildCreateDBResultDataBlock(&pBlock);
@ -1075,9 +954,6 @@ int32_t qExecCommand(int64_t* pConnId, bool sysInfoUser, SNode* pStmt, SRetrieve
return execShowLocalVariables(pRsp);
case QUERY_NODE_SELECT_STMT:
return execSelectWithoutFrom((SSelectStmt*)pStmt, pRsp);
case QUERY_NODE_SHOW_DB_ALIVE_STMT:
case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
return execShowAliveStatus(pConnId, (SShowAliveStmt*)pStmt, pRsp);
default:
break;
}

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <assert.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "taos_collector_registry_t.h"

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_REGISTRY_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_COLLECTOR_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define TAOS_STDIO_CLOSE_DIR_ERROR "failed to close dir"

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_LIST_I_INCLUDED

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_LIST_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdio.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_MAP_I_INCLUDED

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_MAP_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_METRIC_FORMATTER_CUSTOMV2_I_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_METRIC_FORMATTER_I_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_METRIC_FORMATTER_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Private

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "taos_metric_sample_t.h"

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_METRIC_SAMPLE_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_METRIC_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_MONITOR_UTIL_I_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_STRING_BUILDER_I_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TAOS_STRING_BUILDER_T_H

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdio.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <pthread.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Public

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Public

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Public

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <pthread.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <pthread.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdio.h>

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define ALLOW_FORBID_FUNC

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

View File

@ -1,16 +1,17 @@
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
/**
* Copyright 2019-2020 DigitalOcean Inc.
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* http://www.apache.org/licenses/LICENSE-2.0
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stddef.h>

View File

@ -2676,6 +2676,18 @@ SValueNode* nodesMakeValueNodeFromBool(bool b) {
return pValNode;
}
SNode* nodesMakeValueNodeFromInt32(int32_t value) {
SValueNode* pValNode = (SValueNode*)nodesMakeNode(QUERY_NODE_VALUE);
if (pValNode) {
pValNode->node.resType.type = TSDB_DATA_TYPE_INT;
pValNode->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_INT].bytes;
nodesSetValueNodeValue(pValNode, &value);
pValNode->translate = true;
pValNode->isNull = false;
}
return (SNode*)pValNode;
}
bool nodesIsStar(SNode* pNode) {
return (QUERY_NODE_COLUMN == nodeType(pNode)) && ('\0' == ((SColumnNode*)pNode)->tableAlias[0]) &&
(0 == strcmp(((SColumnNode*)pNode)->colName, "*"));

View File

@ -821,6 +821,16 @@ static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowSt
pCxt->pMetaCache);
}
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
pCxt->pMetaCache);
if (TSDB_CODE_SUCCESS == code) {
// just to verify whether the database exists
code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
}
return code;
}
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
pCxt->pStmt = pStmt;
switch (nodeType(pStmt)) {
@ -960,6 +970,9 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
break;
case QUERY_NODE_SHOW_TSMAS_STMT:
return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
case QUERY_NODE_SHOW_DB_ALIVE_STMT:
case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
default:
break;
}

View File

@ -33,6 +33,20 @@
#define SYSTABLE_SHOW_TYPE_OFFSET QUERY_NODE_SHOW_DNODES_STMT
#define CHECK_RES_OUT_OF_MEM(p) \
do { \
if (TSDB_CODE_SUCCESS != (p)) { \
return TSDB_CODE_OUT_OF_MEMORY; \
} \
} while (0)
#define CHECK_POINTER_OUT_OF_MEM(p) \
do { \
if (NULL == (p)) { \
return TSDB_CODE_OUT_OF_MEMORY; \
} \
} while (0)
typedef struct SRewriteTbNameContext {
int32_t errCode;
char* pTbName;
@ -7302,7 +7316,17 @@ static int32_t translateAlterDatabase(STranslateContext* pCxt, SAlterDatabaseStm
"Invalid option, wal_level 0 should be used with replica 1");
}
}
#if 0
if (pStmt->pOptions->replica > 1 && pStmt->pOptions->walLevel < 1) {
SDbCfgInfo dbCfg = {0};
dbCfg.walLevel = -1;
int32_t code = getDBCfg(pCxt, pStmt->dbName, &dbCfg);
if (TSDB_CODE_SUCCESS == code && dbCfg.walLevel == 0) {
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_DB_OPTION,
"Invalid option, wal_level 0 should be used with replica 1");
}
}
#endif
int32_t code = checkDatabaseOptions(pCxt, pStmt->dbName, pStmt->pOptions);
if (TSDB_CODE_SUCCESS != code) {
return code;
@ -11597,20 +11621,6 @@ static int32_t extractShowCreateDatabaseResultSchema(int32_t* numOfCols, SSchema
return TSDB_CODE_SUCCESS;
}
static int32_t extractShowAliveResultSchema(int32_t* numOfCols, SSchema** pSchema) {
*numOfCols = 1;
*pSchema = taosMemoryCalloc((*numOfCols), sizeof(SSchema));
if (NULL == (*pSchema)) {
return TSDB_CODE_OUT_OF_MEMORY;
}
(*pSchema)[0].type = TSDB_DATA_TYPE_INT;
(*pSchema)[0].bytes = sizeof(int32_t);
strcpy((*pSchema)[0].name, "status");
return TSDB_CODE_SUCCESS;
}
static int32_t extractShowCreateTableResultSchema(int32_t* numOfCols, SSchema** pSchema) {
*numOfCols = 2;
*pSchema = taosMemoryCalloc((*numOfCols), sizeof(SSchema));
@ -11708,9 +11718,6 @@ int32_t extractResultSchema(const SNode* pRoot, int32_t* numOfCols, SSchema** pS
}
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
return extractShowCreateDatabaseResultSchema(numOfCols, pSchema);
case QUERY_NODE_SHOW_DB_ALIVE_STMT:
case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
return extractShowAliveResultSchema(numOfCols, pSchema);
case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
return extractShowCreateTableResultSchema(numOfCols, pSchema);
@ -11837,6 +11844,24 @@ static int32_t createOperatorNode(EOperatorType opType, const char* pColName, SN
return TSDB_CODE_SUCCESS;
}
static int32_t createParOperatorNode(EOperatorType opType, const char* pLeftCol, const char* pRightCol, SNode** ppResOp) {
SOperatorNode* pOper = (SOperatorNode*)nodesMakeNode(QUERY_NODE_OPERATOR);
CHECK_POINTER_OUT_OF_MEM(pOper);
pOper->opType = opType;
pOper->pLeft = nodesMakeNode(QUERY_NODE_COLUMN);
pOper->pRight = nodesMakeNode(QUERY_NODE_COLUMN);
if (NULL == pOper->pLeft || NULL == pOper->pRight) {
nodesDestroyNode((SNode*)pOper);
return TSDB_CODE_OUT_OF_MEMORY;
}
strcpy(((SColumnNode*)pOper->pLeft)->colName, pLeftCol);
strcpy(((SColumnNode*)pOper->pRight)->colName, pRightCol);
*ppResOp = (SNode*)pOper;
return TSDB_CODE_SUCCESS;
}
static const char* getTbNameColName(ENodeType type) {
const char* colName;
switch (type) {
@ -13364,6 +13389,203 @@ static int32_t rewriteShowCompactDetailsStmt(STranslateContext* pCxt, SQuery* pQ
return code;
}
static int32_t createParWhenThenNode(SNode* pWhen, SNode* pThen, SNode** ppResWhenThen) {
SWhenThenNode* pWThen = (SWhenThenNode*)nodesMakeNode(QUERY_NODE_WHEN_THEN);
CHECK_POINTER_OUT_OF_MEM(pWThen);
pWThen->pWhen = pWhen;
pWThen->pThen = pThen;
*ppResWhenThen = (SNode*)pWThen;
return TSDB_CODE_SUCCESS;
}
static int32_t createParCaseWhenNode(SNode* pCase, SNodeList* pWhenThenList, SNode* pElse, const char* pAias, SNode** ppResCaseWhen) {
SCaseWhenNode* pCaseWhen = (SCaseWhenNode*)nodesMakeNode(QUERY_NODE_CASE_WHEN);
CHECK_POINTER_OUT_OF_MEM(pCaseWhen);
pCaseWhen->pCase = pCase;
pCaseWhen->pWhenThenList = pWhenThenList;
pCaseWhen->pElse = pElse;
if (pAias) {
strcpy(pCaseWhen->node.aliasName, pAias);
strcpy(pCaseWhen->node.userAlias, pAias);
}
*ppResCaseWhen = (SNode*)pCaseWhen;
return TSDB_CODE_SUCCESS;
}
static int32_t createParFunctionNode(const char* pFunName, const char* pAias, SNodeList* pParameterList, SNode** ppResFunc) {
SFunctionNode* pFunc = (SFunctionNode*)nodesMakeNode(QUERY_NODE_FUNCTION);
CHECK_POINTER_OUT_OF_MEM(pFunc);
strcpy(pFunc->functionName, pFunName);
strcpy(pFunc->node.aliasName, pAias);
strcpy(pFunc->node.userAlias, pAias);
pFunc->pParameterList = pParameterList;
*ppResFunc = (SNode*)pFunc;
return TSDB_CODE_SUCCESS;
}
static int32_t createParListNode(SNode* pItem, SNodeList** ppResList) {
SNodeList* pList = nodesMakeList();
CHECK_POINTER_OUT_OF_MEM(pList);
CHECK_RES_OUT_OF_MEM(nodesListStrictAppend(pList, pItem));
*ppResList = pList;
return TSDB_CODE_SUCCESS;
}
static int32_t createParTempTableNode(SSelectStmt* pSubquery, SNode** ppResTempTable) {
STempTableNode* pTempTable = (STempTableNode*)nodesMakeNode(QUERY_NODE_TEMP_TABLE);
CHECK_POINTER_OUT_OF_MEM(pTempTable);
pTempTable->pSubquery = (SNode*)pSubquery;
taosRandStr(pTempTable->table.tableAlias, 8);
strcpy(pSubquery->stmtName, pTempTable->table.tableAlias);
pSubquery->isSubquery = true;
*ppResTempTable = (SNode*)pTempTable;
return TSDB_CODE_SUCCESS;
}
static int32_t rewriteShowAliveStmt(STranslateContext* pCxt, SQuery* pQuery) {
int32_t code = TSDB_CODE_SUCCESS;
char* pDbName = ((SShowAliveStmt*)pQuery->pRoot)->dbName;
if (pDbName && pDbName[0] != 0) {
SDbCfgInfo dbCfg = {0};
code = getDBCfg(pCxt, pDbName, &dbCfg);
if (TSDB_CODE_SUCCESS != code) {
return code;
}
}
SValueNode* pValNode = nodesMakeValueNodeFromString("leader");
CHECK_POINTER_OUT_OF_MEM(pValNode);
SNode* pCond1 = NULL;
SNode* pCond2 = NULL;
SNode* pCond3 = NULL;
SNode* pCond4 = NULL;
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_EQUAL, "v1_status", (SNode*)pValNode, &pCond1));
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_EQUAL, "v2_status", (SNode*)pValNode, &pCond2));
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_EQUAL, "v3_status", (SNode*)pValNode, &pCond3));
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_EQUAL, "v4_status", (SNode*)pValNode, &pCond4));
nodesDestroyNode((SNode*)pValNode);
SNode* pTemp1 = NULL;
SNode* pTemp2 = NULL;
SNode* pFullCond = NULL;
CHECK_RES_OUT_OF_MEM(createLogicCondNode(pCond1, pCond2, &pTemp1, LOGIC_COND_TYPE_OR));
CHECK_RES_OUT_OF_MEM(createLogicCondNode(pTemp1, pCond3, &pTemp2, LOGIC_COND_TYPE_OR));
CHECK_RES_OUT_OF_MEM(createLogicCondNode(pTemp2, pCond4, &pFullCond, LOGIC_COND_TYPE_OR));
SNode* pThen = nodesMakeValueNodeFromInt32(1);
CHECK_POINTER_OUT_OF_MEM(pThen);
SNode* pWhenThen = NULL;
CHECK_RES_OUT_OF_MEM(createParWhenThenNode(pFullCond, pThen, &pWhenThen));
SNodeList* pWhenThenlist = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pWhenThen, &pWhenThenlist));
SNode* pElse = nodesMakeValueNodeFromInt32(0);
CHECK_POINTER_OUT_OF_MEM(pElse);
// case when (v1_status = "leader" or v2_status = "lead er" or v3_status = "leader" or v4_status = "leader") then 1 else 0 end
SNode* pCaseWhen = NULL;
CHECK_RES_OUT_OF_MEM(createParCaseWhenNode(NULL, pWhenThenlist, pElse, NULL, &pCaseWhen));
SNodeList* pParaList = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pCaseWhen, &pParaList));
// sum( case when ... end) as leader_col
SNode* pSumFun = NULL;
const char* pSumColAlias = "leader_col";
CHECK_RES_OUT_OF_MEM(createParFunctionNode("sum", pSumColAlias, pParaList, &pSumFun));
SNode* pPara1 = nodesMakeValueNodeFromInt32(1);
CHECK_POINTER_OUT_OF_MEM(pThen);
pParaList = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pPara1, &pParaList));
// count(1) as count_col
SNode* pCountFun = NULL;
const char* pCountColAlias = "count_col";
CHECK_RES_OUT_OF_MEM(createParFunctionNode("count", pCountColAlias, pParaList, &pCountFun));
SNodeList* pProjList = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pSumFun, &pProjList));
CHECK_RES_OUT_OF_MEM(nodesListStrictAppend(pProjList, pCountFun));
SSelectStmt* pSubSelect = NULL;
// select sum( case when .... end) as leader_col, count(*) as count_col from information_schema.ins_vgroups
CHECK_RES_OUT_OF_MEM(createSimpleSelectStmtFromProjList(TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS, pProjList, &pSubSelect));
if (pDbName && pDbName[0] != 0) {
// for show db.alive
// select sum( case when .... end) as leader_col, count(*) as count_col from information_schema.ins_vgroups where db_name = "..."
SNode* pDbCond = NULL;
pValNode = nodesMakeValueNodeFromString(pDbName);
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_EQUAL, "db_name", (SNode*)pValNode, &pDbCond));
nodesDestroyNode((SNode*)pValNode);
pCxt->showRewrite = false;
pQuery->showRewrite = false;
pSubSelect->pWhere = pDbCond;
}
pCond1 = NULL;
CHECK_RES_OUT_OF_MEM(createParOperatorNode(OP_TYPE_EQUAL, pSumColAlias, pCountColAlias, &pCond1));
pCond2 = NULL;
SNode* pTempVal = nodesMakeValueNodeFromInt32(0);
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_GREATER_THAN, pSumColAlias, pTempVal, &pCond2));
//leader_col = count_col and leader_col > 0
pTemp1 = NULL;
CHECK_RES_OUT_OF_MEM(createLogicCondNode(pCond1, pCond2, &pTemp1, LOGIC_COND_TYPE_AND));
pThen = nodesMakeValueNodeFromInt32(1);
CHECK_POINTER_OUT_OF_MEM(pThen);
pWhenThen = NULL;
CHECK_RES_OUT_OF_MEM(createParWhenThenNode(pTemp1, pThen, &pWhenThen));
pWhenThenlist = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pWhenThen, &pWhenThenlist));
pCond1 = NULL;
CHECK_RES_OUT_OF_MEM(createParOperatorNode(OP_TYPE_LOWER_THAN, pSumColAlias, pCountColAlias, &pCond1));
pCond2 = NULL;
CHECK_RES_OUT_OF_MEM(createOperatorNode(OP_TYPE_GREATER_THAN, pSumColAlias, pTempVal, &pCond2));
// leader_col < count_col and leader_col > 0
pTemp2 = NULL;
CHECK_RES_OUT_OF_MEM(createLogicCondNode(pCond1, pCond2, &pTemp2, LOGIC_COND_TYPE_AND));
nodesDestroyNode((SNode*)pTempVal);
pThen = nodesMakeValueNodeFromInt32(2);
CHECK_POINTER_OUT_OF_MEM(pThen);
pWhenThen = NULL;
CHECK_RES_OUT_OF_MEM(createParWhenThenNode(pTemp2, pThen, &pWhenThen));
CHECK_RES_OUT_OF_MEM(nodesListStrictAppend(pWhenThenlist, pWhenThen));
// case when leader_col = count_col and count_col > 0 then 1 when leader_col < count_col and count_col > 0 then 2 else 0 end as status
pCaseWhen = NULL;
pElse = nodesMakeValueNodeFromInt32(0);
CHECK_POINTER_OUT_OF_MEM(pElse);
CHECK_RES_OUT_OF_MEM(createParCaseWhenNode(NULL, pWhenThenlist, pElse, "status", &pCaseWhen));
pProjList = NULL;
CHECK_RES_OUT_OF_MEM(createParListNode(pCaseWhen, &pProjList));
SNode* pTempTblNode = NULL;
CHECK_RES_OUT_OF_MEM(createParTempTableNode(pSubSelect, &pTempTblNode));
SSelectStmt* pStmt = (SSelectStmt*)nodesMakeNode(QUERY_NODE_SELECT_STMT);
CHECK_POINTER_OUT_OF_MEM(pStmt);
pStmt->pProjectionList = pProjList;
pStmt->pFromTable = pTempTblNode;
sprintf(pStmt->stmtName, "%p", pStmt);
nodesDestroyNode(pQuery->pRoot);
pQuery->pRoot = (SNode*)pStmt;
return TSDB_CODE_SUCCESS;
}
static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) {
int32_t code = TSDB_CODE_SUCCESS;
switch (nodeType(pQuery->pRoot)) {
@ -13440,6 +13662,10 @@ static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) {
case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
code = rewriteShowCompactDetailsStmt(pCxt, pQuery);
break;
case QUERY_NODE_SHOW_DB_ALIVE_STMT:
case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
code = rewriteShowAliveStmt(pCxt, pQuery);
break;
default:
break;
}
@ -13531,8 +13757,6 @@ static int32_t setQuery(STranslateContext* pCxt, SQuery* pQuery) {
break;
case QUERY_NODE_DESCRIBE_STMT:
case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
case QUERY_NODE_SHOW_DB_ALIVE_STMT:
case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
case QUERY_NODE_SHOW_CREATE_VIEW_STMT:

View File

@ -874,9 +874,8 @@ int32_t createCountWinResultBuff(SStreamFileState* pFileState, SSessionKey* pKey
void* pFileStore = getStateFileStore(pFileState);
void* p = NULL;
SStreamStateCur* pCur = streamStateSessionSeekToLast_rocksdb(pFileStore, pKey->groupId);
int32_t code_file = streamStateSessionGetKVByCur_rocksdb(pCur, pWinKey, &p, pVLen);
if (code_file == TSDB_CODE_SUCCESS || isFlushedState(pFileState, endTs, 0)) {
int32_t code_file = getCountWinStateFromDisc(pFileStore, pWinKey, &p, pVLen);
if (code_file == TSDB_CODE_SUCCESS && isFlushedState(pFileState, endTs, 0)) {
(*pVal) = createSessionWinBuff(pFileState, pWinKey, p, pVLen);
code = code_file;
qDebug("===stream===0 get state win:%" PRId64 ",%" PRId64 " from disc, res %d", pWinKey->win.skey, pWinKey->win.ekey, code_file);
@ -885,7 +884,6 @@ int32_t createCountWinResultBuff(SStreamFileState* pFileState, SSessionKey* pKey
code = TSDB_CODE_FAILED;
taosMemoryFree(p);
}
streamStateFreeCur(pCur);
goto _end;
} else {
(*pVal) = addNewSessionWindow(pFileState, pWinStates, pWinKey);

View File

@ -98,8 +98,7 @@ int stateKeyCmpr(const void* pKey1, int kLen1, const void* pKey2, int kLen2) {
return winKeyCmprImpl(&pWin1->key, &pWin2->key);
}
SStreamState* streamStateOpen(const char* path, void* pTask, int64_t streamId, int32_t taskId, bool specPath,
int32_t szPage, int32_t pages) {
SStreamState* streamStateOpen(const char* path, void* pTask, int64_t streamId, int32_t taskId) {
SStreamState* pState = taosMemoryCalloc(1, sizeof(SStreamState));
stDebug("open stream state %p, %s", pState, path);
if (pState == NULL) {

View File

@ -46,7 +46,7 @@ SStreamState *stateCreate(const char *path) {
SStreamMeta *pMeta = streamMetaOpen((path), NULL, NULL, NULL, 0, 0, NULL);
pTask->pMeta = pMeta;
SStreamState *p = streamStateOpen((char *)path, pTask, 0, 0, true, 32, 32 * 1024);
SStreamState *p = streamStateOpen((char *)path, pTask, 0, 0);
ASSERT(p != NULL);
return p;
}

View File

@ -232,6 +232,12 @@ void walClose(SWal *pWal) {
pWal->pRefHash = NULL;
taosThreadMutexUnlock(&pWal->mutex);
if (pWal->cfg.level == TAOS_WAL_SKIP) {
wInfo("vgId:%d, remove all wals, path:%s", pWal->cfg.vgId, pWal->path);
taosRemoveDir(pWal->path);
taosMkDir(pWal->path);
}
taosRemoveRef(tsWal.refSetId, pWal->refId);
}

View File

@ -253,6 +253,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ENCRYPT_KEY, "The cluster has not b
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_CREATING, "Database in creating status")
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SYS_TABLENAME, "Invalid system table name")
TAOS_DEFINE_ERROR(TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE, "Encryption is not allowed to be changed after database is created")
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_WAL_LEVEL, "Invalid option, wal_level 0 should be used with replica 1")
// mnode-node
TAOS_DEFINE_ERROR(TSDB_CODE_MND_MNODE_ALREADY_EXIST, "Mnode already exists")

View File

@ -5,3 +5,6 @@ char gitinfoOfInternal[48] = "${TD_VER_GIT_INTERNAL}";
char buildinfo[64] = "${TD_VER_OSTYPE}-${TD_VER_CPUTYPE} ${TD_VER_DATE}";
void libtaos_${TD_LIB_VER_NUMBER}_${TD_VER_OSTYPE}_${TD_VER_CPUTYPE}_${TD_VER_VERTYPE}() {};
char* getBuildInfo(){
return buildinfo;
}

View File

@ -12,6 +12,7 @@ IF (HEADER_GTEST_INCLUDE_DIR AND (LIB_GTEST_STATIC_DIR OR LIB_GTEST_SHARED_DIR))
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
LIST(REMOVE_ITEM SOURCE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/trefTest.c)
LIST(REMOVE_ITEM SOURCE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/terrorTest.cpp)
ADD_EXECUTABLE(utilTest ${SOURCE_LIST})
TARGET_LINK_LIBRARIES(utilTest util common os gtest pthread)
@ -125,10 +126,18 @@ add_test(
# COMMAND decompressTest
#)
# terrorTest
add_executable(terrorTest "terrorTest.cpp")
target_link_libraries(terrorTest os util common gtest_main)
add_test(
NAME terrorTest
COMMAND terrorTest
)
if (${TD_LINUX})
# terrorTest
add_executable(terrorTest "terrorTest.cpp")
target_link_libraries(terrorTest os util common gtest_main)
add_test(
NAME terrorTest
COMMAND terrorTest
)
# config
SET(ERR_TBL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/errorCodeTable.ini)
add_custom_command(TARGET terrorTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ERR_TBL_FILE} $<TARGET_FILE_DIR:terrorTest>
)
endif ()

View File

@ -0,0 +1,632 @@
TSDB_CODE_SUCCESS = 0
TSDB_CODE_RPC_NETWORK_UNAVAIL = -2147483637
TSDB_CODE_RPC_FQDN_ERROR = -2147483627
TSDB_CODE_RPC_PORT_EADDRINUSE = -2147483625
TSDB_CODE_RPC_BROKEN_LINK = -2147483624
TSDB_CODE_RPC_TIMEOUT = -2147483623
TSDB_CODE_RPC_SOMENODE_NOT_CONNECTED = -2147483616
TSDB_CODE_RPC_MAX_SESSIONS = -2147483614
TSDB_CODE_RPC_NETWORK_ERROR = -2147483613
TSDB_CODE_RPC_NETWORK_BUSY = -2147483612
TSDB_CODE_TIME_UNSYNCED = -2147483629
TSDB_CODE_OPS_NOT_SUPPORT = -2147483392
TSDB_CODE_OUT_OF_MEMORY = -2147483390
TSDB_CODE_FILE_CORRUPTED = -2147483388
TSDB_CODE_REF_FULL = -2147483386
TSDB_CODE_REF_ID_REMOVED = -2147483385
TSDB_CODE_REF_INVALID_ID = -2147483384
TSDB_CODE_REF_ALREADY_EXIST = -2147483383
TSDB_CODE_REF_NOT_EXIST = -2147483382
TSDB_CODE_APP_ERROR = -2147483376
TSDB_CODE_ACTION_IN_PROGRESS = -2147483375
TSDB_CODE_OUT_OF_RANGE = -2147483374
TSDB_CODE_INVALID_MSG = -2147483371
TSDB_CODE_INVALID_MSG_LEN = -2147483370
TSDB_CODE_INVALID_PTR = -2147483369
TSDB_CODE_INVALID_PARA = -2147483368
TSDB_CODE_INVALID_CFG = -2147483367
TSDB_CODE_INVALID_OPTION = -2147483366
TSDB_CODE_INVALID_JSON_FORMAT = -2147483365
TSDB_CODE_INVALID_VERSION_NUMBER = -2147483364
TSDB_CODE_INVALID_VERSION_STRING = -2147483363
TSDB_CODE_VERSION_NOT_COMPATIBLE = -2147483362
TSDB_CODE_CHECKSUM_ERROR = -2147483361
TSDB_CODE_COMPRESS_ERROR = -2147483360
TSDB_CODE_MSG_NOT_PROCESSED = -2147483359
TSDB_CODE_CFG_NOT_FOUND = -2147483358
TSDB_CODE_REPEAT_INIT = -2147483357
TSDB_CODE_DUP_KEY = -2147483356
TSDB_CODE_NEED_RETRY = -2147483355
TSDB_CODE_OUT_OF_RPC_MEMORY_QUEUE = -2147483354
TSDB_CODE_INVALID_TIMESTAMP = -2147483353
TSDB_CODE_MSG_DECODE_ERROR = -2147483352
TSDB_CODE_MSG_ENCODE_ERROR = -2147483347
TSDB_CODE_NO_AVAIL_DISK = -2147483351
TSDB_CODE_NOT_FOUND = -2147483350
TSDB_CODE_NO_DISKSPACE = -2147483349
TSDB_CODE_TIMEOUT_ERROR = -2147483348
TSDB_CODE_NO_ENOUGH_DISKSPACE = -2147483346
TSDB_CODE_APP_IS_STARTING = -2147483344
TSDB_CODE_APP_IS_STOPPING = -2147483343
TSDB_CODE_INVALID_DATA_FMT = -2147483342
TSDB_CODE_INVALID_CFG_VALUE = -2147483341
TSDB_CODE_IP_NOT_IN_WHITE_LIST = -2147483340
TSDB_CODE_FAILED_TO_CONNECT_S3 = -2147483339
TSDB_CODE_MSG_PREPROCESSED = -2147483338
TSDB_CODE_TSC_INVALID_OPERATION = -2147483136
TSDB_CODE_TSC_INVALID_QHANDLE = -2147483135
TSDB_CODE_TSC_INVALID_TIME_STAMP = -2147483134
TSDB_CODE_TSC_INVALID_VALUE = -2147483133
TSDB_CODE_TSC_INVALID_VERSION = -2147483132
TSDB_CODE_TSC_INVALID_IE = -2147483131
TSDB_CODE_TSC_INVALID_FQDN = -2147483130
TSDB_CODE_TSC_INVALID_USER_LENGTH = -2147483129
TSDB_CODE_TSC_INVALID_PASS_LENGTH = -2147483128
TSDB_CODE_TSC_INVALID_DB_LENGTH = -2147483127
TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH = -2147483126
TSDB_CODE_TSC_INVALID_CONNECTION = -2147483125
TSDB_CODE_TSC_QUERY_CACHE_ERASED = -2147483122
TSDB_CODE_TSC_QUERY_CANCELLED = -2147483121
TSDB_CODE_TSC_SORTED_RES_TOO_MANY = -2147483120
TSDB_CODE_TSC_ACTION_IN_PROGRESS = -2147483118
TSDB_CODE_TSC_DISCONNECTED = -2147483117
TSDB_CODE_TSC_NO_WRITE_AUTH = -2147483116
TSDB_CODE_TSC_CONN_KILLED = -2147483115
TSDB_CODE_TSC_SQL_SYNTAX_ERROR = -2147483114
TSDB_CODE_TSC_DB_NOT_SELECTED = -2147483113
TSDB_CODE_TSC_EXCEED_SQL_LIMIT = -2147483111
TSDB_CODE_TSC_FILE_EMPTY = -2147483110
TSDB_CODE_TSC_LINE_SYNTAX_ERROR = -2147483109
TSDB_CODE_TSC_NO_META_CACHED = -2147483108
TSDB_CODE_TSC_DUP_COL_NAMES = -2147483107
TSDB_CODE_TSC_INVALID_TAG_LENGTH = -2147483106
TSDB_CODE_TSC_INVALID_COLUMN_LENGTH = -2147483105
TSDB_CODE_TSC_DUP_NAMES = -2147483104
TSDB_CODE_TSC_INVALID_JSON = -2147483103
TSDB_CODE_TSC_INVALID_JSON_TYPE = -2147483102
TSDB_CODE_TSC_VALUE_OUT_OF_RANGE = -2147483100
TSDB_CODE_TSC_INVALID_INPUT = -2147483095
TSDB_CODE_TSC_STMT_API_ERROR = -2147483094
TSDB_CODE_TSC_STMT_TBNAME_ERROR = -2147483093
TSDB_CODE_TSC_STMT_CLAUSE_ERROR = -2147483092
TSDB_CODE_TSC_QUERY_KILLED = -2147483091
TSDB_CODE_TSC_NO_EXEC_NODE = -2147483090
TSDB_CODE_TSC_NOT_STABLE_ERROR = -2147483089
TSDB_CODE_TSC_STMT_CACHE_ERROR = -2147483088
TSDB_CODE_TSC_ENCODE_PARAM_ERROR = -2147483087
TSDB_CODE_TSC_ENCODE_PARAM_NULL = -2147483086
TSDB_CODE_TSC_COMPRESS_PARAM_ERROR = -2147483085
TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR = -2147483084
TSDB_CODE_TSC_INTERNAL_ERROR = -2147482881
TSDB_CODE_MND_REQ_REJECTED = -2147482880
TSDB_CODE_MND_NO_RIGHTS = -2147482877
TSDB_CODE_MND_INVALID_SHOWOBJ = -2147482869
TSDB_CODE_MND_INVALID_QUERY_ID = -2147482868
TSDB_CODE_MND_INVALID_CONN_ID = -2147482866
TSDB_CODE_MND_USER_DISABLED = -2147482859
TSDB_CODE_MND_INVALID_PLATFORM = -2147482858
TSDB_CODE_SDB_OBJ_ALREADY_THERE = -2147482848
TSDB_CODE_SDB_INVALID_TABLE_TYPE = -2147482846
TSDB_CODE_SDB_OBJ_NOT_THERE = -2147482845
TSDB_CODE_SDB_INVALID_ACTION_TYPE = -2147482842
TSDB_CODE_SDB_INVALID_DATA_VER = -2147482840
TSDB_CODE_SDB_INVALID_DATA_LEN = -2147482839
TSDB_CODE_SDB_INVALID_DATA_CONTENT = -2147482838
TSDB_CODE_SDB_OBJ_CREATING = -2147482836
TSDB_CODE_SDB_OBJ_DROPPING = -2147482835
TSDB_CODE_MND_DNODE_ALREADY_EXIST = -2147482832
TSDB_CODE_MND_DNODE_NOT_EXIST = -2147482831
TSDB_CODE_MND_VGROUP_NOT_EXIST = -2147482830
TSDB_CODE_MND_CANT_DROP_LEADER = -2147482829
TSDB_CODE_MND_NO_ENOUGH_DNODES = -2147482828
TSDB_CODE_MND_INVALID_CLUSTER_CFG = -2147482827
TSDB_CODE_MND_VGROUP_NOT_IN_DNODE = -2147482824
TSDB_CODE_MND_VGROUP_ALREADY_IN_DNODE = -2147482823
TSDB_CODE_MND_INVALID_CLUSTER_ID = -2147482821
TSDB_CODE_MND_ACCT_ALREADY_EXIST = -2147482816
TSDB_CODE_MND_INVALID_ACCT_OPTION = -2147482814
TSDB_CODE_MND_ACCT_EXPIRED = -2147482813
TSDB_CODE_MND_ACCT_NOT_EXIST = -2147482812
TSDB_CODE_MND_TOO_MANY_ACCTS = -2147482811
TSDB_CODE_MND_USER_ALREADY_EXIST = -2147482800
TSDB_CODE_MND_USER_NOT_EXIST = -2147482799
TSDB_CODE_MND_INVALID_USER_FORMAT = -2147482798
TSDB_CODE_MND_USER_NOT_AVAILABLE = -2147482792
TSDB_CODE_MND_INVALID_PASS_FORMAT = -2147482797
TSDB_CODE_MND_NO_USER_FROM_CONN = -2147482796
TSDB_CODE_MND_TOO_MANY_USERS = -2147482795
TSDB_CODE_MND_INVALID_ALTER_OPER = -2147482794
TSDB_CODE_MND_AUTH_FAILURE = -2147482793
TSDB_CODE_MND_PRIVILEDGE_EXIST = -2147482791
TSDB_CODE_MND_USER_HOST_EXIST = -2147482790
TSDB_CODE_MND_USER_HOST_NOT_EXIST = -2147482789
TSDB_CODE_MND_TOO_MANY_USER_HOST = -2147482788
TSDB_CODE_MND_USER_LOCAL_HOST_NOT_DROP = -2147482787
TSDB_CODE_MND_STB_ALREADY_EXIST = -2147482784
TSDB_CODE_MND_STB_NOT_EXIST = -2147482782
TSDB_CODE_MND_TOO_MANY_TAGS = -2147482780
TSDB_CODE_MND_TOO_MANY_COLUMNS = -2147482779
TSDB_CODE_MND_TAG_ALREADY_EXIST = -2147482775
TSDB_CODE_MND_TAG_NOT_EXIST = -2147482774
TSDB_CODE_MND_COLUMN_ALREADY_EXIST = -2147482773
TSDB_CODE_MND_COLUMN_NOT_EXIST = -2147482772
TSDB_CODE_MND_INVALID_STB_OPTION = -2147482770
TSDB_CODE_MND_INVALID_ROW_BYTES = -2147482769
TSDB_CODE_MND_FIELD_VALUE_OVERFLOW = -2147482768
TSDB_CODE_MND_COLUMN_COMPRESS_ALREADY_EXIST = -2147482632
TSDB_CODE_MND_INVALID_FUNC_NAME = -2147482768
TSDB_CODE_MND_INVALID_FUNC_CODE = -2147482766
TSDB_CODE_MND_FUNC_ALREADY_EXIST = -2147482765
TSDB_CODE_MND_FUNC_NOT_EXIST = -2147482764
TSDB_CODE_MND_INVALID_FUNC_BUFSIZE = -2147482763
TSDB_CODE_MND_INVALID_FUNC_COMMENT = -2147482760
TSDB_CODE_MND_INVALID_FUNC_RETRIEVE = -2147482759
TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST = -2147482493
TSDB_CODE_MND_TAG_INDEX_NOT_EXIST = -2147482492
TSDB_CODE_MND_DB_NOT_SELECTED = -2147482752
TSDB_CODE_MND_DB_ALREADY_EXIST = -2147482751
TSDB_CODE_MND_INVALID_DB_OPTION = -2147482750
TSDB_CODE_MND_INVALID_DB = -2147482749
TSDB_CODE_MND_TOO_MANY_DATABASES = -2147482747
TSDB_CODE_MND_DB_IN_DROPPING = -2147482746
TSDB_CODE_MND_DB_NOT_EXIST = -2147482744
TSDB_CODE_MND_INVALID_DB_ACCT = -2147482743
TSDB_CODE_MND_DB_OPTION_UNCHANGED = -2147482742
TSDB_CODE_MND_DB_INDEX_NOT_EXIST = -2147482741
TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO = -2147482740
TSDB_CODE_MND_INVALID_ENCRYPT_KEY = -2147482738
TSDB_CODE_MND_DB_IN_CREATING = -2147482730
TSDB_CODE_MND_INVALID_SYS_TABLENAME = -2147482726
TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE = -2147482725
TSDB_CODE_MND_MNODE_ALREADY_EXIST = -2147482720
TSDB_CODE_MND_MNODE_NOT_EXIST = -2147482719
TSDB_CODE_MND_QNODE_ALREADY_EXIST = -2147482718
TSDB_CODE_MND_QNODE_NOT_EXIST = -2147482717
TSDB_CODE_MND_SNODE_ALREADY_EXIST = -2147482716
TSDB_CODE_MND_SNODE_NOT_EXIST = -2147482715
TSDB_CODE_MND_TOO_FEW_MNODES = -2147482712
TSDB_CODE_MND_TOO_MANY_MNODES = -2147482711
TSDB_CODE_MND_ARBGROUP_ALREADY_EXIST = -2147482710
TSDB_CODE_MND_ARBGROUP_NOT_EXIST = -2147482709
TSDB_CODE_MND_ARB_TOKEN_MISMATCH = -2147482708
TSDB_CODE_MND_TOO_MANY_DNODES = -2147482704
TSDB_CODE_MND_NO_ENOUGH_MEM_IN_DNODE = -2147482703
TSDB_CODE_MND_INVALID_DNODE_CFG = -2147482702
TSDB_CODE_MND_INVALID_DNODE_EP = -2147482701
TSDB_CODE_MND_INVALID_DNODE_ID = -2147482700
TSDB_CODE_MND_VGROUP_UN_CHANGED = -2147482699
TSDB_CODE_MND_HAS_OFFLINE_DNODE = -2147482698
TSDB_CODE_MND_INVALID_REPLICA = -2147482697
TSDB_CODE_MND_NO_ENOUGH_VNODES = -2147482694
TSDB_CODE_MND_NAME_CONFLICT_WITH_TOPIC = -2147482688
TSDB_CODE_MND_TOO_MANY_STBS = -2147482687
TSDB_CODE_MND_INVALID_STB_ALTER_OPTION = -2147482686
TSDB_CODE_MND_STB_OPTION_UNCHNAGED = -2147482685
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC = -2147482684
TSDB_CODE_MND_SINGLE_STB_MODE_DB = -2147482683
TSDB_CODE_MND_INVALID_SCHEMA_VER = -2147482682
TSDB_CODE_MND_STABLE_UID_NOT_MATCH = -2147482681
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TSMA = -2147482680
TSDB_CODE_MND_DNODE_IN_CREATING = -2147482696
TSDB_CODE_MND_DNODE_IN_DROPPING = -2147482695
TSDB_CODE_MND_TRANS_ALREADY_EXIST = -2147482672
TSDB_CODE_MND_TRANS_NOT_EXIST = -2147482671
TSDB_CODE_MND_TRANS_INVALID_STAGE = -2147482670
TSDB_CODE_MND_TRANS_CONFLICT = -2147482669
TSDB_CODE_MND_TRANS_CLOG_IS_NULL = -2147482668
TSDB_CODE_MND_TRANS_NETWORK_UNAVAILL = -2147482667
TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED = -2147482666
TSDB_CODE_MND_TRANS_SYNC_TIMEOUT = -2147482665
TSDB_CODE_MND_TRANS_CTX_SWITCH = -2147482664
TSDB_CODE_MND_TRANS_UNKNOW_ERROR = -2147482657
TSDB_CODE_MND_TOPIC_ALREADY_EXIST = -2147482656
TSDB_CODE_MND_TOPIC_NOT_EXIST = -2147482655
TSDB_CODE_MND_TOO_MANY_TOPICS = -2147482654
TSDB_CODE_MND_INVALID_TOPIC = -2147482653
TSDB_CODE_MND_INVALID_TOPIC_QUERY = -2147482652
TSDB_CODE_MND_INVALID_TOPIC_OPTION = -2147482651
TSDB_CODE_MND_CONSUMER_NOT_EXIST = -2147482650
TSDB_CODE_MND_TOPIC_OPTION_UNCHNAGED = -2147482649
TSDB_CODE_MND_SUBSCRIBE_NOT_EXIST = -2147482648
TSDB_CODE_MND_OFFSET_NOT_EXIST = -2147482647
TSDB_CODE_MND_CONSUMER_NOT_READY = -2147482646
TSDB_CODE_MND_TOPIC_SUBSCRIBED = -2147482645
TSDB_CODE_MND_CGROUP_USED = -2147482644
TSDB_CODE_MND_TOPIC_MUST_BE_DELETED = -2147482643
TSDB_CODE_MND_INVALID_SUB_OPTION = -2147482642
TSDB_CODE_MND_IN_REBALANCE = -2147482641
TSDB_CODE_MND_STREAM_ALREADY_EXIST = -2147482640
TSDB_CODE_MND_STREAM_NOT_EXIST = -2147482639
TSDB_CODE_MND_INVALID_STREAM_OPTION = -2147482638
TSDB_CODE_MND_STREAM_MUST_BE_DELETED = -2147482637
TSDB_CODE_MND_MULTI_REPLICA_SOURCE_DB = -2147482635
TSDB_CODE_MND_TOO_MANY_STREAMS = -2147482634
TSDB_CODE_MND_INVALID_TARGET_TABLE = -2147482633
TSDB_CODE_MND_SMA_ALREADY_EXIST = -2147482496
TSDB_CODE_MND_SMA_NOT_EXIST = -2147482495
TSDB_CODE_MND_INVALID_SMA_OPTION = -2147482494
TSDB_CODE_MND_INVALID_DROP_TSMA = -2147482491
TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED = -2147482490
TSDB_CODE_MND_VIEW_ALREADY_EXIST = -2147482464
TSDB_CODE_MND_VIEW_NOT_EXIST = -2147482463
TSDB_CODE_MND_INVALID_COMPACT_ID = -2147482447
TSDB_CODE_MND_COMPACT_DETAIL_NOT_EXIST = -2147482446
TSDB_CODE_DNODE_OFFLINE = -2147482616
TSDB_CODE_MNODE_NOT_FOUND = -2147482614
TSDB_CODE_MNODE_ALREADY_DEPLOYED = -2147482615
TSDB_CODE_MNODE_NOT_DEPLOYED = -2147482613
TSDB_CODE_QNODE_NOT_FOUND = -2147482611
TSDB_CODE_QNODE_ALREADY_DEPLOYED = -2147482612
TSDB_CODE_QNODE_NOT_DEPLOYED = -2147482610
TSDB_CODE_SNODE_NOT_FOUND = -2147482608
TSDB_CODE_SNODE_ALREADY_DEPLOYED = -2147482609
TSDB_CODE_SNODE_NOT_DEPLOYED = -2147482607
TSDB_CODE_MNODE_NOT_CATCH_UP = -2147482606
TSDB_CODE_MNODE_ALREADY_IS_VOTER = -2147482605
TSDB_CODE_MNODE_ONLY_TWO_MNODE = -2147482604
TSDB_CODE_MNODE_NO_NEED_RESTORE = -2147482603
TSDB_CODE_DNODE_ONLY_USE_WHEN_OFFLINE = -2147482602
TSDB_CODE_DNODE_NO_MACHINE_CODE = -2147482601
TSDB_CODE_DNODE_NO_ENCRYPT_KEY = -2147482600
TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG = -2147482599
TSDB_CODE_DNODE_INVALID_ENCRYPTKEY = -2147482592
TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED = -2147482591
TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN = -2147482590
TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL = -2147482589
TSDB_CODE_DNODE_INVALID_TIMEZONE = -2147482588
TSDB_CODE_DNODE_INVALID_CHARSET = -2147482587
TSDB_CODE_DNODE_INVALID_LOCALE = -2147482586
TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR = -2147482585
TSDB_CODE_DNODE_INVALID_EN_WHITELIST = -2147482584
TSDB_CODE_VND_INVALID_VGROUP_ID = -2147482365
TSDB_CODE_VND_INIT_FAILED = -2147482364
TSDB_CODE_VND_NO_WRITE_AUTH = -2147482350
TSDB_CODE_VND_NOT_EXIST = -2147482336
TSDB_CODE_VND_ALREADY_EXIST = -2147482335
TSDB_CODE_VND_HASH_MISMATCH = -2147482334
TSDB_CODE_VND_INVALID_TABLE_ACTION = -2147482332
TSDB_CODE_VND_COL_ALREADY_EXISTS = -2147482331
TSDB_CODE_VND_COL_NOT_EXISTS = -2147482330
TSDB_CODE_VND_COL_SUBSCRIBED = -2147482329
TSDB_CODE_VND_NO_AVAIL_BUFPOOL = -2147482328
TSDB_CODE_VND_STOPPED = -2147482327
TSDB_CODE_VND_DUP_REQUEST = -2147482320
TSDB_CODE_VND_QUERY_BUSY = -2147482319
TSDB_CODE_VND_NOT_CATCH_UP = -2147482318
TSDB_CODE_VND_ALREADY_IS_VOTER = -2147482317
TSDB_CODE_VND_DIR_ALREADY_EXIST = -2147482316
TSDB_CODE_VND_META_DATA_UNSAFE_DELETE = -2147482315
TSDB_CODE_VND_ARB_NOT_SYNCED = -2147482314
TSDB_CODE_VND_COLUMN_COMPRESS_ALREADY_EXIST = -2147482314
TSDB_CODE_TDB_INVALID_TABLE_ID = -2147482112
TSDB_CODE_TDB_INVALID_TABLE_TYPE = -2147482111
TSDB_CODE_TDB_IVD_TB_SCHEMA_VERSION = -2147482110
TSDB_CODE_TDB_TABLE_ALREADY_EXIST = -2147482109
TSDB_CODE_TDB_INVALID_CONFIG = -2147482108
TSDB_CODE_TDB_INIT_FAILED = -2147482107
TSDB_CODE_TDB_NO_DISK_PERMISSIONS = -2147482105
TSDB_CODE_TDB_TAG_VER_OUT_OF_DATE = -2147482102
TSDB_CODE_TDB_TIMESTAMP_OUT_OF_RANGE = -2147482101
TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP = -2147482100
TSDB_CODE_TDB_INVALID_ACTION = -2147482099
TSDB_CODE_TDB_INVALID_CREATE_TB_MSG = -2147482098
TSDB_CODE_TDB_NO_TABLE_DATA_IN_MEM = -2147482097
TSDB_CODE_TDB_FILE_ALREADY_EXISTS = -2147482096
TSDB_CODE_TDB_TABLE_RECONFIGURE = -2147482095
TSDB_CODE_TDB_IVD_CREATE_TABLE_INFO = -2147482094
TSDB_CODE_TDB_NO_AVAIL_DISK = -2147482093
TSDB_CODE_TDB_MESSED_MSG = -2147482092
TSDB_CODE_TDB_IVLD_TAG_VAL = -2147482091
TSDB_CODE_TDB_NO_CACHE_LAST_ROW = -2147482090
TSDB_CODE_TDB_TABLE_NOT_EXIST = -2147482088
TSDB_CODE_TDB_STB_ALREADY_EXIST = -2147482087
TSDB_CODE_TDB_STB_NOT_EXIST = -2147482086
TSDB_CODE_TDB_INVALID_TABLE_SCHEMA_VER = -2147482085
TSDB_CODE_TDB_TDB_ENV_OPEN_ERROR = -2147482084
TSDB_CODE_TDB_TABLE_IN_OTHER_STABLE = -2147482083
TSDB_CODE_QRY_INVALID_QHANDLE = -2147481856
TSDB_CODE_QRY_INVALID_MSG = -2147481855
TSDB_CODE_QRY_DUP_JOIN_KEY = -2147481851
TSDB_CODE_QRY_EXCEED_TAGS_LIMIT = -2147481850
TSDB_CODE_QRY_NOT_READY = -2147481849
TSDB_CODE_QRY_HAS_RSP = -2147481848
TSDB_CODE_QRY_IN_EXEC = -2147481847
TSDB_CODE_QRY_TOO_MANY_TIMEWINDOW = -2147481846
TSDB_CODE_QRY_NOT_ENOUGH_BUFFER = -2147481845
TSDB_CODE_QRY_INCONSISTAN = -2147481844
TSDB_CODE_QRY_SYS_ERROR = -2147481843
TSDB_CODE_QRY_INVALID_TIME_CONDITION = -2147481842
TSDB_CODE_QRY_INVALID_INPUT = -2147481841
TSDB_CODE_QRY_SCH_NOT_EXIST = -2147481824
TSDB_CODE_QRY_TASK_NOT_EXIST = -2147481823
TSDB_CODE_QRY_TASK_ALREADY_EXIST = -2147481822
TSDB_CODE_QRY_TASK_CTX_NOT_EXIST = -2147481821
TSDB_CODE_QRY_TASK_CANCELLED = -2147481820
TSDB_CODE_QRY_TASK_DROPPED = -2147481819
TSDB_CODE_QRY_TASK_CANCELLING = -2147481818
TSDB_CODE_QRY_TASK_DROPPING = -2147481817
TSDB_CODE_QRY_DUPLICATED_OPERATION = -2147481816
TSDB_CODE_QRY_TASK_MSG_ERROR = -2147481815
TSDB_CODE_QRY_JOB_FREED = -2147481814
TSDB_CODE_QRY_TASK_STATUS_ERROR = -2147481813
TSDB_CODE_QRY_JSON_IN_ERROR = -2147481812
TSDB_CODE_QRY_JSON_NOT_SUPPORT_ERROR = -2147481811
TSDB_CODE_QRY_JSON_IN_GROUP_ERROR = -2147481810
TSDB_CODE_QRY_JOB_NOT_EXIST = -2147481809
TSDB_CODE_QRY_QWORKER_QUIT = -2147481808
TSDB_CODE_QRY_GEO_NOT_SUPPORT_ERROR = -2147481807
TSDB_CODE_QRY_INVALID_WINDOW_CONDITION = -2147481838
TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = -2147481806
TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = -2147481806
TSDB_CODE_QRY_INVALID_JOIN_CONDITION = -2147481805
TSDB_CODE_GRANT_EXPIRED = -2147481600
TSDB_CODE_GRANT_DNODE_LIMITED = -2147481599
TSDB_CODE_GRANT_ACCT_LIMITED = -2147481598
TSDB_CODE_GRANT_TIMESERIES_LIMITED = -2147481597
TSDB_CODE_GRANT_DB_LIMITED = -2147481596
TSDB_CODE_GRANT_USER_LIMITED = -2147481595
TSDB_CODE_GRANT_CONN_LIMITED = -2147481594
TSDB_CODE_GRANT_STREAM_LIMITED = -2147481593
TSDB_CODE_GRANT_SPEED_LIMITED = -2147481592
TSDB_CODE_GRANT_STORAGE_LIMITED = -2147481591
TSDB_CODE_GRANT_SUBSCRIPTION_LIMITED = -2147481590
TSDB_CODE_GRANT_CPU_LIMITED = -2147481589
TSDB_CODE_GRANT_STABLE_LIMITED = -2147481588
TSDB_CODE_GRANT_TABLE_LIMITED = -2147481587
TSDB_CODE_GRANT_PAR_IVLD_ACTIVE = -2147481586
TSDB_CODE_GRANT_PAR_IVLD_KEY = -2147481585
TSDB_CODE_GRANT_PAR_DEC_IVLD_KEY = -2147481584
TSDB_CODE_GRANT_PAR_DEC_IVLD_KLEN = -2147481583
TSDB_CODE_GRANT_GEN_IVLD_KEY = -2147481582
TSDB_CODE_GRANT_GEN_ACTIVE_LEN = -2147481581
TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN = -2147481580
TSDB_CODE_GRANT_PAR_IVLD_DIST = -2147481579
TSDB_CODE_GRANT_UNLICENSED_CLUSTER = -2147481578
TSDB_CODE_GRANT_LACK_OF_BASIC = -2147481577
TSDB_CODE_GRANT_OBJ_NOT_EXIST = -2147481576
TSDB_CODE_GRANT_LAST_ACTIVE_NOT_FOUND = -2147481575
TSDB_CODE_GRANT_MACHINES_MISMATCH = -2147481568
TSDB_CODE_GRANT_OPT_EXPIRE_TOO_LARGE = -2147481567
TSDB_CODE_GRANT_DUPLICATED_ACTIVE = -2147481566
TSDB_CODE_GRANT_VIEW_LIMITED = -2147481565
TSDB_CODE_GRANT_BASIC_EXPIRED = -2147481564
TSDB_CODE_GRANT_STREAM_EXPIRED = -2147481563
TSDB_CODE_GRANT_SUBSCRIPTION_EXPIRED = -2147481562
TSDB_CODE_GRANT_VIEW_EXPIRED = -2147481561
TSDB_CODE_GRANT_AUDIT_EXPIRED = -2147481560
TSDB_CODE_GRANT_CSV_EXPIRED = -2147481559
TSDB_CODE_GRANT_MULTI_STORAGE_EXPIRED = -2147481558
TSDB_CODE_GRANT_OBJECT_STROAGE_EXPIRED = -2147481557
TSDB_CODE_GRANT_DUAL_REPLICA_HA_EXPIRED = -2147481556
TSDB_CODE_GRANT_DB_ENCRYPTION_EXPIRED = -2147481555
TSDB_CODE_SYN_TIMEOUT = -2147481341
TSDB_CODE_SYN_MISMATCHED_SIGNATURE = -2147481337
TSDB_CODE_SYN_NOT_LEADER = -2147481332
TSDB_CODE_SYN_NEW_CONFIG_ERROR = -2147481329
TSDB_CODE_SYN_PROPOSE_NOT_READY = -2147481327
TSDB_CODE_SYN_RESTORING = -2147481324
TSDB_CODE_SYN_INVALID_SNAPSHOT_MSG = -2147481323
TSDB_CODE_SYN_BUFFER_FULL = -2147481322
TSDB_CODE_SYN_WRITE_STALL = -2147481321
TSDB_CODE_SYN_NEGOTIATION_WIN_FULL = -2147481320
TSDB_CODE_SYN_INTERNAL_ERROR = -2147481089
TSDB_CODE_TQ_INVALID_CONFIG = -2147481088
TSDB_CODE_TQ_INIT_FAILED = -2147481087
TSDB_CODE_TQ_NO_DISK_PERMISSIONS = -2147481085
TSDB_CODE_TQ_FILE_ALREADY_EXISTS = -2147481082
TSDB_CODE_TQ_FAILED_TO_CREATE_DIR = -2147481081
TSDB_CODE_TQ_META_NO_SUCH_KEY = -2147481080
TSDB_CODE_TQ_META_KEY_NOT_IN_TXN = -2147481079
TSDB_CODE_TQ_META_KEY_DUP_IN_TXN = -2147481078
TSDB_CODE_TQ_GROUP_NOT_SET = -2147481077
TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND = -2147481076
TSDB_CODE_TQ_NO_COMMITTED_OFFSET = -2147481075
TSDB_CODE_WAL_FILE_CORRUPTED = -2147479551
TSDB_CODE_WAL_INVALID_VER = -2147479549
TSDB_CODE_WAL_LOG_NOT_EXIST = -2147479547
TSDB_CODE_WAL_CHKSUM_MISMATCH = -2147479546
TSDB_CODE_WAL_LOG_INCOMPLETE = -2147479545
TSDB_CODE_FS_INVLD_CFG = -2147474943
TSDB_CODE_FS_TOO_MANY_MOUNT = -2147474942
TSDB_CODE_FS_DUP_PRIMARY = -2147474941
TSDB_CODE_FS_NO_PRIMARY_DISK = -2147474940
TSDB_CODE_FS_NO_MOUNT_AT_TIER = -2147474939
TSDB_CODE_FS_FILE_ALREADY_EXISTS = -2147474938
TSDB_CODE_FS_INVLD_LEVEL = -2147474937
TSDB_CODE_FS_NO_VALID_DISK = -2147474936
TSDB_CODE_CTG_INTERNAL_ERROR = -2147474432
TSDB_CODE_CTG_INVALID_INPUT = -2147474431
TSDB_CODE_CTG_NOT_READY = -2147474430
TSDB_CODE_CTG_SYS_ERROR = -2147474429
TSDB_CODE_CTG_DB_DROPPED = -2147474428
TSDB_CODE_CTG_OUT_OF_SERVICE = -2147474427
TSDB_CODE_CTG_VG_META_MISMATCH = -2147474426
TSDB_CODE_CTG_EXIT = -2147474425
TSDB_CODE_QW_MSG_ERROR = -2147474096
TSDB_CODE_SCH_STATUS_ERROR = -2147474175
TSDB_CODE_SCH_INTERNAL_ERROR = -2147474174
TSDB_CODE_SCH_TIMEOUT_ERROR = -2147474172
TSDB_CODE_SCH_JOB_IS_DROPPING = -2147474171
TSDB_CODE_SCH_JOB_NOT_EXISTS = -2147474170
TSDB_CODE_PAR_SYNTAX_ERROR = -2147473920
TSDB_CODE_PAR_INCOMPLETE_SQL = -2147473919
TSDB_CODE_PAR_INVALID_COLUMN = -2147473918
TSDB_CODE_PAR_TABLE_NOT_EXIST = -2147473917
TSDB_CODE_PAR_AMBIGUOUS_COLUMN = -2147473916
TSDB_CODE_PAR_WRONG_VALUE_TYPE = -2147473915
TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION = -2147473912
TSDB_CODE_PAR_WRONG_NUMBER_OF_SELECT = -2147473911
TSDB_CODE_PAR_GROUPBY_LACK_EXPRESSION = -2147473910
TSDB_CODE_PAR_NOT_SELECTED_EXPRESSION = -2147473909
TSDB_CODE_PAR_NOT_SINGLE_GROUP = -2147473908
TSDB_CODE_PAR_TAGS_NOT_MATCHED = -2147473907
TSDB_CODE_PAR_INVALID_TAG_NAME = -2147473906
TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG = -2147473904
TSDB_CODE_PAR_PASSWD_EMPTY = -2147473903
TSDB_CODE_PAR_INVALID_PORT = -2147473902
TSDB_CODE_PAR_INVALID_ENDPOINT = -2147473901
TSDB_CODE_PAR_EXPRIE_STATEMENT = -2147473900
TSDB_CODE_PAR_INTER_VALUE_TOO_SMALL = -2147473899
TSDB_CODE_PAR_INTER_VALUE_TOO_BIG = -2147473893
TSDB_CODE_PAR_DB_NOT_SPECIFIED = -2147473898
TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME = -2147473897
TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR = -2147473896
TSDB_CODE_PAR_INVALID_DB_OPTION = -2147473895
TSDB_CODE_PAR_INVALID_TABLE_OPTION = -2147473894
TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST = -2147473884
TSDB_CODE_PAR_AGG_FUNC_NESTING = -2147473881
TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE = -2147473880
TSDB_CODE_PAR_INVALID_STATE_WIN_COL = -2147473879
TSDB_CODE_PAR_INVALID_STATE_WIN_TABLE = -2147473878
TSDB_CODE_PAR_INTER_SESSION_GAP = -2147473877
TSDB_CODE_PAR_INTER_SESSION_COL = -2147473876
TSDB_CODE_PAR_INTER_OFFSET_NEGATIVE = -2147473875
TSDB_CODE_PAR_INTER_OFFSET_UNIT = -2147473874
TSDB_CODE_PAR_INTER_OFFSET_TOO_BIG = -2147473873
TSDB_CODE_PAR_INTER_SLIDING_UNIT = -2147473872
TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG = -2147473871
TSDB_CODE_PAR_INTER_SLIDING_TOO_SMALL = -2147473870
TSDB_CODE_PAR_ONLY_ONE_JSON_TAG = -2147473869
TSDB_CODE_PAR_INCORRECT_NUM_OF_COL = -2147473868
TSDB_CODE_PAR_INCORRECT_TIMESTAMP_VAL = -2147473867
TSDB_CODE_PAR_OFFSET_LESS_ZERO = -2147473865
TSDB_CODE_PAR_SLIMIT_LEAK_PARTITION_GROUP_BY = -2147473864
TSDB_CODE_PAR_INVALID_TOPIC_QUERY = -2147473863
TSDB_CODE_PAR_INVALID_DROP_STABLE = -2147473862
TSDB_CODE_PAR_INVALID_FILL_TIME_RANGE = -2147473861
TSDB_CODE_PAR_DUPLICATED_COLUMN = -2147473860
TSDB_CODE_PAR_INVALID_TAGS_LENGTH = -2147473859
TSDB_CODE_PAR_INVALID_ROW_LENGTH = -2147473858
TSDB_CODE_PAR_INVALID_COLUMNS_NUM = -2147473857
TSDB_CODE_PAR_TOO_MANY_COLUMNS = -2147473856
TSDB_CODE_PAR_INVALID_FIRST_COLUMN = -2147473855
TSDB_CODE_PAR_INVALID_VAR_COLUMN_LEN = -2147473854
TSDB_CODE_PAR_INVALID_TAGS_NUM = -2147473853
TSDB_CODE_PAR_PERMISSION_DENIED = -2147473852
TSDB_CODE_PAR_INVALID_STREAM_QUERY = -2147473851
TSDB_CODE_PAR_INVALID_INTERNAL_PK = -2147473850
TSDB_CODE_PAR_INVALID_TIMELINE_FUNC = -2147473849
TSDB_CODE_PAR_INVALID_PASSWD = -2147473848
TSDB_CODE_PAR_INVALID_ALTER_TABLE = -2147473847
TSDB_CODE_PAR_CANNOT_DROP_PRIMARY_KEY = -2147473846
TSDB_CODE_PAR_INVALID_MODIFY_COL = -2147473845
TSDB_CODE_PAR_INVALID_TBNAME = -2147473844
TSDB_CODE_PAR_INVALID_FUNCTION_NAME = -2147473843
TSDB_CODE_PAR_COMMENT_TOO_LONG = -2147473842
TSDB_CODE_PAR_NOT_ALLOWED_FUNC = -2147473841
TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY = -2147473840
TSDB_CODE_PAR_INVALID_DROP_COL = -2147473839
TSDB_CODE_PAR_INVALID_COL_JSON = -2147473838
TSDB_CODE_PAR_VALUE_TOO_LONG = -2147473837
TSDB_CODE_PAR_INVALID_DELETE_WHERE = -2147473835
TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG = -2147473834
TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC = -2147473833
TSDB_CODE_PAR_INVALID_WINDOW_PC = -2147473832
TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC = -2147473831
TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC = -2147473830
TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC = -2147473829
TSDB_CODE_PAR_INVALID_INTERP_CLAUSE = -2147473827
TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN = -2147473826
TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE = -2147473825
TSDB_CODE_PAR_INVALID_SMA_INDEX = -2147473824
TSDB_CODE_PAR_INVALID_SELECTED_EXPR = -2147473823
TSDB_CODE_PAR_GET_META_ERROR = -2147473822
TSDB_CODE_PAR_NOT_UNIQUE_TABLE_ALIAS = -2147473821
TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED_FUNC = -2147473816
TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED = -2147473815
TSDB_CODE_PAR_INVALID_VARBINARY = -2147473814
TSDB_CODE_PAR_INVALID_IP_RANGE = -2147473813
TSDB_CODE_PAR_INVALID_STREAM_QUERY = -2147473851
TSDB_CODE_PAR_INVALID_VIEW_QUERY = -2147473812
TSDB_CODE_PAR_COL_QUERY_MISMATCH = -2147473811
TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE = -2147473810
TSDB_CODE_PAR_NOT_SUPPORT_MULTI_RESULT = -2147473808
TSDB_CODE_PAR_INVALID_WJOIN_HAVING_EXPR = -2147473806
TSDB_CODE_PAR_GRP_WINDOW_NOT_ALLOWED = -2147473807
TSDB_CODE_PAR_INVALID_WIN_OFFSET_UNIT = -2147473805
TSDB_CODE_PAR_VALID_PRIM_TS_REQUIRED = -2147473804
TSDB_CODE_PAR_ORDERBY_UNKNOWN_EXPR = -2147473803
TSDB_CODE_PAR_NOT_WIN_FUNC = -2147473802
TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY = -2147473801
TSDB_CODE_PAR_SECOND_COL_PK = -2147473800
TSDB_CODE_PAR_COL_PK_TYPE = -2147473799
TSDB_CODE_PAR_INVALID_PK_OP = -2147473798
TSDB_CODE_PAR_PRIMARY_KEY_IS_NULL = -2147473797
TSDB_CODE_PAR_PRIMARY_KEY_IS_NONE = -2147473796
TSDB_CODE_PAR_INTERNAL_ERROR = -2147473665
TSDB_CODE_PLAN_INTERNAL_ERROR = -2147473664
TSDB_CODE_PLAN_EXPECTED_TS_EQUAL = -2147473663
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN = -2147473662
TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND = -2147473661
TSDB_CODE_FUNC_FUNTION_ERROR = -2147473408
TSDB_CODE_FUNC_FUNTION_PARA_NUM = -2147473407
TSDB_CODE_FUNC_FUNTION_PARA_TYPE = -2147473406
TSDB_CODE_FUNC_FUNTION_PARA_VALUE = -2147473405
TSDB_CODE_FUNC_NOT_BUILTIN_FUNTION = -2147473404
TSDB_CODE_FUNC_DUP_TIMESTAMP = -2147473403
TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_FORMAT_ERR = -2147473402
TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_TS_ERR = -2147473401
TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_NOT_SUPPORTED = -2147473400
TSDB_CODE_FUNC_TO_CHAR_NOT_SUPPORTED = -2147473399
TSDB_CODE_UDF_STOPPING = -2147473151
TSDB_CODE_UDF_PIPE_READ_ERR = -2147473150
TSDB_CODE_UDF_PIPE_CONNECT_ERR = -2147473149
TSDB_CODE_UDF_PIPE_NOT_EXIST = -2147473148
TSDB_CODE_UDF_LOAD_UDF_FAILURE = -2147473147
TSDB_CODE_UDF_INVALID_INPUT = -2147473146
TSDB_CODE_UDF_INVALID_BUFSIZE = -2147473145
TSDB_CODE_UDF_INVALID_OUTPUT_TYPE = -2147473144
TSDB_CODE_UDF_SCRIPT_NOT_SUPPORTED = -2147473143
TSDB_CODE_UDF_FUNC_EXEC_FAILURE = -2147473142
TSDB_CODE_SML_INVALID_PROTOCOL_TYPE = -2147471360
TSDB_CODE_SML_INVALID_PRECISION_TYPE = -2147471359
TSDB_CODE_SML_INVALID_DATA = -2147471358
TSDB_CODE_SML_INVALID_DB_CONF = -2147471357
TSDB_CODE_SML_NOT_SAME_TYPE = -2147471356
TSDB_CODE_SML_INTERNAL_ERROR = -2147471355
TSDB_CODE_SML_NOT_SUPPORT_PK = -2147471354
TSDB_CODE_TSMA_INIT_FAILED = -2147471104
TSDB_CODE_TSMA_ALREADY_EXIST = -2147471103
TSDB_CODE_TSMA_INVALID_ENV = -2147471102
TSDB_CODE_TSMA_INVALID_STAT = -2147471101
TSDB_CODE_TSMA_INVALID_PTR = -2147471100
TSDB_CODE_TSMA_INVALID_PARA = -2147471099
TSDB_CODE_TSMA_INVALID_TB = -2147471098
TSDB_CODE_TSMA_INVALID_INTERVAL = -2147471097
TSDB_CODE_TSMA_INVALID_FUNC_PARAM = -2147471096
TSDB_CODE_TSMA_UNSUPPORTED_FUNC = -2147471095
TSDB_CODE_TSMA_MUST_BE_DROPPED = -2147471088
TSDB_CODE_TSMA_NAME_TOO_LONG = -2147471087
TSDB_CODE_RSMA_INVALID_ENV = -2147471024
TSDB_CODE_RSMA_INVALID_STAT = -2147471023
TSDB_CODE_RSMA_QTASKINFO_CREATE = -2147471022
TSDB_CODE_RSMA_INVALID_SCHEMA = -2147471021
TSDB_CODE_RSMA_STREAM_STATE_OPEN = -2147471020
TSDB_CODE_RSMA_STREAM_STATE_COMMIT = -2147471019
TSDB_CODE_RSMA_FS_SYNC = -2147471018
TSDB_CODE_RSMA_RESULT = -2147471017
TSDB_CODE_INDEX_REBUILDING = -2147470848
TSDB_CODE_INDEX_INVALID_FILE = -2147470847
TSDB_CODE_SCALAR_CONVERT_ERROR = -2147470768
TSDB_CODE_TMQ_INVALID_MSG = -2147467264
TSDB_CODE_TMQ_NEED_INITIALIZED = -2147467248
TSDB_CODE_TMQ_SNAPSHOT_ERROR = -2147467258
TSDB_CODE_TMQ_NO_COMMITTED = -2147467247
TSDB_CODE_TMQ_VERSION_OUT_OF_RANGE = -2147467257
TSDB_CODE_TMQ_INVALID_VGID = -2147467256
TSDB_CODE_TMQ_INVALID_TOPIC = -2147467255
TSDB_CODE_TMQ_CONSUMER_MISMATCH = -2147467263
TSDB_CODE_TMQ_CONSUMER_CLOSED = -2147467262
TSDB_CODE_TMQ_CONSUMER_ERROR = -2147467261
TSDB_CODE_TMQ_TOPIC_OUT_OF_RANGE = -2147467260
TSDB_CODE_TMQ_GROUP_OUT_OF_RANGE = -2147467259
TSDB_CODE_TMQ_SAME_COMMITTED_VALUE = -2147467246
TSDB_CODE_TMQ_REPLAY_NEED_ONE_VGROUP = -2147467245
TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT = -2147467244
TSDB_CODE_STREAM_TASK_NOT_EXIST = -2147467008
TSDB_CODE_STREAM_EXEC_CANCELLED = -2147467006
TSDB_CODE_STREAM_INVALID_STATETRANS = -2147467005
TSDB_CODE_STREAM_TASK_IVLD_STATUS = -2147467004
TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS = -2147462912
TSDB_CODE_TDLITE_IVLD_OPEN_DIR = -2147462911
TSDB_CODE_UTIL_QUEUE_OUT_OF_MEMORY = -2147459072

View File

@ -2,14 +2,219 @@
#include <cassert>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <unistd.h>
#include <limits.h>
#include <sys/stat.h>
#include <algorithm>
#include <unordered_map>
#include "taoserror.h"
using namespace std;
TEST(TAOS_ERROR_TEST, terror_test) {
enum class ParseStatus {
Success,
FileNotExist,
FileNotOpen,
};
typedef struct {
int32_t val;
string str; // unused
string macro;
} STestTaosError;
string getExecutableDirectory() {
char result[PATH_MAX];
ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
if (count != -1) {
result[count] = '\0';
string path(result);
size_t pos = path.rfind('/');
if (pos != string::npos) {
path.erase(pos + 1);
}
return path;
} else {
throw std::runtime_error("Failed to get the executable's directory");
}
}
// parses key-value pairs from strings
pair<string, int32_t> parseKeyValuePair(const string &line, char delim = '=') {
size_t pos = line.find(delim);
if (pos == string::npos)
return make_pair("", 0);
string key = line.substr(0, pos);
// remove leading spaces
size_t firstNotSpace = key.find_first_not_of(" ");
if (firstNotSpace != string::npos) {
key = key.substr(firstNotSpace);
} else {
key.clear();
}
// remove ending spaces
size_t lastNotSpace = key.find_last_not_of(" ");
if (lastNotSpace != string::npos) {
key = key.substr(0, lastNotSpace + 1);
}
if (key.front() == '"' && key.back() == '"')
key = key.substr(1, key.size() - 2);
if (key.front() == '\'' && key.back() == '\'')
key = key.substr(1, key.size() - 2);
string valStr = line.substr(pos + 1);
int32_t val = stoi(valStr);
return make_pair(key, val);
}
// read the configuration file and parse it into the STestTaosError array
ParseStatus readConfig(const string& filePath, vector<STestTaosError>& errorInfos) {
ifstream file(filePath);
if (!file.is_open()) {
if (file.fail() && errno == ENOENT) {
cerr << "Error: The file does not exist, file: " << filePath << endl;
return ParseStatus::FileNotExist;
} else {
cerr << "Error: Could not open the file, file: " << filePath << endl;
return ParseStatus::FileNotOpen;
}
}
string line;
while (std::getline(file, line)) {
char delim = '#';
if (line.find('=') != string::npos) {
delim = '=';
} else if (line.find(':') != string::npos) {
delim = ':';
} else if (line.find('{') != string::npos || line.find('}') != string::npos) {
// TODO: parse json format
continue;
} else {
continue;
}
auto curKwInfo = parseKeyValuePair(line, delim);
STestTaosError errorInfo;
errorInfo.macro = curKwInfo.first;
errorInfo.val = curKwInfo.second;
errorInfos.push_back(errorInfo);
}
return ParseStatus::Success;
}
TEST(TAOS_ERROR_TEST, terror_compatibility_test) {
int32_t errSize = taosGetErrSize();
// for (int32_t i = 0; i < errSize; ++i) {
// STaosError *pInfo = &errors[i];
// std::cout << i + 1 << " " << pInfo->macro << " " << pInfo->val << std::endl;
// }
// current errors: to map
unordered_map<string, const STaosError*> map;
for (int32_t i = 0; i < errSize; ++i) {
STaosError *pInfo = &errors[i];
map[pInfo->macro] = pInfo;
}
string configFileName = "errorCodeTable.ini";
string execDir = getExecutableDirectory();
string configFilePath(execDir + configFileName);
vector<STestTaosError> errorInfos;
ParseStatus status = readConfig(configFilePath, errorInfos);
switch (status) {
case ParseStatus::Success:
for (const auto& stdInfo : errorInfos) {
auto it = map.find(stdInfo.macro);
if (it == map.end()) {
FAIL() << "Error: Could not find error: " << stdInfo.macro << ".";
} else {
auto newInfo = it->second;
ASSERT_STREQ(stdInfo.macro.c_str(), newInfo->macro);
ASSERT_EQ(stdInfo.val, newInfo->val)
<< "Error code mismatch(" << stdInfo.macro << "): expected " << stdInfo.val << ", got " << newInfo->val << ".";
}
}
break;
case ParseStatus::FileNotExist:
FAIL() << "Error: The file does not exist, file: " << configFileName << ".";
break;
case ParseStatus::FileNotOpen:
FAIL() << "Error: Could not open the file, file: " << configFileName << ".";
break;
default:
FAIL() << "Unknown Error.";
break;
}
}
size_t maxLengthOfErrorMacro() {
size_t maxLen = 0;
int32_t errSize = taosGetErrSize();
for (int32_t i = 0; i < errSize; ++i) {
STaosError *pInfo = &errors[i];
std::cout << i + 1 << " " << pInfo->macro << " " << pInfo->val << std::endl;
maxLen = std::max(maxLen, strlen(pInfo->macro));
}
return (maxLen / 4 + 1) * 4;
}
void generateConfigFile(const string& filePath) {
int32_t errSize = taosGetErrSize();
size_t maxStringLength = maxLengthOfErrorMacro();
std::ofstream file(filePath);
if (!file.is_open()) {
cerr << "Failed to open file for writing, at: " << filePath << "." << endl;
return;
}
for (int32_t i = 0; i < errSize; ++i) {
STaosError *pInfo = &errors[i];
file << std::left << std::setw(maxStringLength) << pInfo->macro << "= " << pInfo->val << endl;
}
if (file.fail()) {
cerr << "An error occurred while writing to the file." << endl;
} else {
cout << "Data successfully written to file: " << filePath << endl;
}
file.close();
}
void processCommandArgs(int argc, char** argv) {
for (int i = 1; i < argc; ++i) {
if (string(argv[i]) == "--output-config") {
string configFile = (i + 1 < argc) ? argv[++i] : "./errorCodeTable.ini";
generateConfigFile(configFile);
exit(0);
}
}
}
int main(int argc, char **argv) {
processCommandArgs(argc, argv);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@ -0,0 +1,167 @@
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode2 -i 2
system sh/deploy.sh -n dnode3 -i 3
system sh/deploy.sh -n dnode4 -i 4
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
sleep 1000
sql connect
print =============== add dnode into cluster
sql create dnode $hostname1 port 7200
sql create dnode $hostname2 port 7300
sql create dnode $hostname3 port 7400
sql create dnode $hostname4 port 7500
sleep 1000
print =============== create database, stable, table
sql create database test vgroups 6;
sql use test;
sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int);
sql create table t1 using st tags(1,1,1);
sql create table t2 using st tags(2,2,2);
sql insert into t1 values(1648791211000,1,2,3);
sql insert into t1 values(1648791222001,2,2,3);
sql insert into t2 values(1648791211000,1,2,3);
sql insert into t2 values(1648791222001,2,2,3);
$loop_count = 0
loop0:
sleep 1000
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
print show cluster alive;
sql show cluster alive;
if $data00 != 1 then
print =====data00=$data00
goto loop0
endi
print show test.alive;
sql show test.alive;
if $data00 != 1 then
print =====data00=$data00
goto loop0
endi
print stop dnode3
print stop dnode4
system sh/exec.sh -n dnode3 -s stop -x SIGKILL
system sh/exec.sh -n dnode4 -s stop -x SIGKILL
$loop_count = 0
loop1:
sleep 1000
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
print show cluster alive;
sql show cluster alive;
if $data00 != 2 then
print =====data00=$data00
goto loop1
endi
print show test.alive
sql show test.alive;
if $data00 != 2 then
print =====data00=$data00
goto loop1
endi
sql create database test1 vgroups 2;
$loop_count = 0
loop2:
sleep 1000
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
print show cluster alive;
sql show cluster alive;
if $data00 != 2 then
goto loop2
endi
print show test1.alive;
sql show test1.alive;
if $data00 != 1 then
print =====data00=$data00
goto loop2
endi
print stop dnode2
system sh/exec.sh -n dnode2 -s stop -x SIGKILL
$loop_count = 0
loop3:
sleep 1000
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
print show cluster alive;
sql show cluster alive;
if $data00 != 2 then
print =====data00=$data00
goto loop3
endi
print show test.alive;
sql show test.alive;
if $data00 != 2 then
print =====data00=$data00
goto loop3
endi
sql show test1.alive;
if $data00 != 2 then
print =====data00=$data00
goto loop3
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT

View File

@ -336,6 +336,8 @@ sql create table ts3 using st tags(3,2,2);
sql create table ts4 using st tags(4,2,2);
sql create stream streams6 trigger at_once IGNORE EXPIRED 0 IGNORE UPDATE 0 watermark 1d into streamt6 as select _wstart, count(*) c1 from st interval(10s);
sleep 1000
sql insert into ts1 values(1648791213001,1,12,3,1.0);
sql insert into ts2 values(1648791213001,1,12,3,1.0);
@ -354,6 +356,8 @@ sql insert into ts2 values(1648791233001,1,12,3,1.0);
sql resume stream streams6;
sleep 1000
sql insert into ts3 values(1648791243001,1,12,3,1.0);
sql insert into ts4 values(1648791253001,1,12,3,1.0);

View File

@ -435,8 +435,8 @@ int32_t shellParseArgs(int32_t argc, char *argv[]) {
shell.info.promptSize = strlen(shell.info.promptHeader);
#ifdef TD_ENTERPRISE
snprintf(shell.info.programVersion, sizeof(shell.info.programVersion),
"%s\ntaos version: %s compatible_version: %s\ngit: %s\ngit: %s\nbuild: %s", TD_PRODUCT_NAME, version,
compatible_version, gitinfo, gitinfoOfInternal, buildinfo);
"%s\ntaos version: %s compatible_version: %s\ngit: %s\ngitOfInternal: %s\nbuild: %s", TD_PRODUCT_NAME,
version, compatible_version, gitinfo, gitinfoOfInternal, buildinfo);
#else
snprintf(shell.info.programVersion, sizeof(shell.info.programVersion),
"%s\ntaos version: %s compatible_version: %s\ngit: %s\nbuild: %s", TD_PRODUCT_NAME, version,

View File

@ -385,11 +385,11 @@ unsigned int optimize_intervals_double_1D_opt(double *oriData, size_t dataLength
totalSampleSize++;
pred_value = data_pos[-1];
pred_err = fabs(pred_value - *data_pos);
double dbri = (unsigned long)((pred_err/realPrecision+1)/2);
double dbri = (pred_err/realPrecision+1)/2;
if(dbri >= (double)confparams_cpr->maxRangeRadius)
radiusIndex = confparams_cpr->maxRangeRadius - 1;
else
radiusIndex = dbri;
radiusIndex = (size_t)dbri;
intervals[radiusIndex]++;
data_pos += confparams_cpr->sampleDistance;

View File

@ -53,9 +53,12 @@ unsigned int optimize_intervals_float_1D(float *oriData, size_t dataLength, doub
//pred_value = 2*oriData[i-1] - oriData[i-2];
pred_value = oriData[i-1];
pred_err = fabs(pred_value - oriData[i]);
radiusIndex = (unsigned long)((pred_err/realPrecision+1)/2);
if(radiusIndex>=confparams_cpr->maxRangeRadius)
radiusIndex = confparams_cpr->maxRangeRadius - 1;
double dbri = (pred_err/realPrecision+1)/2;
if(dbri >= confparams_cpr->maxRangeRadius) {
radiusIndex = confparams_cpr->maxRangeRadius - 1;
} else {
radiusIndex = (size_t)dbri;
}
intervals[radiusIndex]++;
}
}
@ -404,9 +407,12 @@ unsigned int optimize_intervals_float_1D_opt(float *oriData, size_t dataLength,
totalSampleSize++;
pred_value = data_pos[-1];
pred_err = fabs(pred_value - *data_pos);
radiusIndex = (unsigned long)((pred_err/realPrecision+1)/2);
if(radiusIndex>=confparams_cpr->maxRangeRadius)
radiusIndex = confparams_cpr->maxRangeRadius - 1;
double dbri = (pred_err/realPrecision+1)/2;
if(dbri >= confparams_cpr->maxRangeRadius) {
radiusIndex = confparams_cpr->maxRangeRadius - 1;
} else {
radiusIndex = (size_t)dbri;
}
intervals[radiusIndex]++;
data_pos += confparams_cpr->sampleDistance;