Merge remote-tracking branch 'origin/3.0' into enh/opt-transport
This commit is contained in:
commit
69eaed772e
|
@ -30,6 +30,16 @@ SHOW CLUSTER ALIVE;
|
|||
|
||||
查询当前集群的状态是否可用,返回值: 0:不可用 1:完全可用 2:部分可用(集群中部分节点下线,但其它节点仍可以正常使用)
|
||||
|
||||
## SHOW CLUSTER MACHINES
|
||||
|
||||
```sql
|
||||
SHOW CLUSTER MACHINES; // 从 TDengine 3.2.3.0 版本开始支持
|
||||
```
|
||||
|
||||
显示集群的机器码等信息。
|
||||
|
||||
注:企业版独有
|
||||
|
||||
## SHOW CONNECTIONS
|
||||
|
||||
```sql
|
||||
|
@ -99,6 +109,7 @@ SHOW FUNCTIONS;
|
|||
```sql
|
||||
SHOW LICENCES;
|
||||
SHOW GRANTS;
|
||||
SHOW GRANTS FULL; // 从 TDengine 3.2.3.0 版本开始支持
|
||||
```
|
||||
|
||||
显示企业版许可授权的信息。
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
---
|
||||
title: 3.3.3.0 版本说明
|
||||
sidebar_label: 3.3.3.0
|
||||
description: 3.3.3.0 版本说明
|
||||
---
|
||||
### 新特性/优化
|
||||
1. 增加函数支持:pi、truncate/tunc、exp、ln、mod、rand、sign、degress、radians、char、ascii、position、trim、replace、repeat、substring、substr、substring_index、week、weekday、weekofyear、dayofweek、stddev_pop、var_pop
|
||||
2. 多级存储支持微软对象存储 Azure Blob [企业版]
|
||||
3. 支持 MongoDB 数据源 [企业版]
|
||||
4. TDengine支持macOS企业版客户端 [企业版]
|
||||
5. taosX日志默认不写入syslog [企业版]
|
||||
6. 服务端记录所有慢查询信息到log库
|
||||
7. show cluster machines 查询结果中添加服务端版本号
|
||||
8. 删除保留关键字LEVEL/ENCODE/COMPRESS, 可以作为列名/表名/数据库名等使用
|
||||
9. 禁止动态修改临时目录
|
||||
10. round 函数:支持四舍五入的精度
|
||||
11. timediff 函数:返回时间戳 expr1 - expr2 的结果,支持负数结果,并近似到时间单位 time_unit 指定的精度
|
||||
12. max/min 函数:支持字符串作为输入参数,当输入参数为字符串类型时,返回最大字符串值
|
||||
13. 提升了 taosX 数据同步的性能 [企业版]
|
||||
14. 统一慢查询和普通日志的保存策略
|
||||
15. 优化订阅功能中offset文件过大且加载过慢的问题
|
||||
16. 升级 JDBC driver 至 3.2.5
|
||||
17. Kafka connector 提交改为同步方式
|
||||
18. 新增参数:表查询不存在时是否报异常
|
||||
19. 扩大 tsma 的 interval 的最大窗口到 1 年
|
||||
20. 支持从 CSV 文件批量建表
|
||||
### 新特性/优化(企业版)
|
||||
1. 对指定db进行balance vgroup leader
|
||||
2. 多级存储新增配置项disable_create_new_file
|
||||
3. 多级存储跨级迁移数据增加限速设置
|
||||
4. IP白名单启停支持热更新
|
||||
5. 普通用户取消建库权限
|
||||
6. 数据库加密改进密钥配置
|
||||
7. TDengine 2.0/3.0数据压缩的支持
|
||||
8. Oracle数据源支持
|
||||
9. 支持Microsoft SQL Server数据源
|
||||
10. OPC类型任务可动态获取新增点位
|
||||
11. PI backfill支持断点续传功能
|
||||
12. PI backfill类型的任务支持 Transformer
|
||||
13. PI数据接入性能优化
|
||||
14. taos-explorer支持GEOMETRY/VARBINARY数据类型
|
||||
15. taos-explorer支持用户及权限信息的导入导出
|
||||
16. PI数据源支持新增数据点位/数据元素属性同步到TDengine
|
||||
17. taosX写入端支持原生连接
|
||||
18. Kafka支持GSSAPI
|
||||
19. MQTT类型任务可从数据源拉取示例数据
|
||||
20. 支持Object数组类型的数据
|
||||
21. 支持通过自定义脚本解析数据
|
||||
22. 支持通过插件的形式对数据动态筛选
|
||||
### 修复问题
|
||||
1. 服务器重启后 mqtt 写入任务未自动重新启动 [企业版]
|
||||
2. 修复windows上agent和PI connector连接错误导致任务终止的问题 [企业版]
|
||||
3. 重启taosadapter后,mqtt 任务异常,无法同步数据 [企业版]
|
||||
4. Explorer 上 mqtt 写入任务状态不正确 [企业版]
|
||||
5. 重启 taosx 后,运行中的任务没有被重新调度 [企业版]
|
||||
6. 对于 taosx 的 MongoDB DataIn 任务,优化了日志的输出信息 [企业版]
|
||||
7. 修复在 local.toml 文件为空时备份失败的问题 [企业版]
|
||||
8. taosx replica 任务在网络断开恢复后数据同步异常的问题 [企业版]
|
||||
9. 修复3.1版本同步到3.3版本meta数据不同步问题 [企业版]
|
||||
10. taosadapter 异常重启后, mqtt任务无法自动恢复的问题[企业版]
|
||||
11. Kafka DataIn 任务状态正常,但任务停止消费数据 [企业版]
|
||||
12. 修复 last + interval 查询导致 crash 的问题
|
||||
13. 在数据写入时热更stt_trigger导致taosd崩溃
|
||||
14. 修改root密码后taoskeeper反复重启
|
||||
15. 云服务中服务重启后流计算无法继续
|
||||
16. tsdb加载缓存导致taosd死锁
|
||||
17. 查询时fill值指定为0报错
|
||||
18. last_row 查询结果与预期不符
|
||||
19. 用户指定 information_schema 库登录时导致 taosd 崩溃
|
||||
20. group by 语句支持位置参数和别名语法
|
||||
21. 元数据克隆函数对象错误导致 crash
|
||||
22. 缓存更新时数据填充的游标错误导致的 taosd 异常退出
|
||||
23. STDDEV 函数计算结果随机不正确的问题
|
||||
24. 多级存储以及加密场景下无法添加离线节点
|
||||
25. taos CLI 无法输入大于20字节长度的密码
|
||||
26. 拼接 sql 写入报错: int data overflow
|
||||
27. 大量查询并发场景下元数据的一致性
|
||||
28. 尝试解决手动点击停止按钮,任务无法停止的问题
|
||||
29. 解决了列或者标签中包含逗号或引号时导出 CSV 文件错误的问题
|
||||
30. 多线程并发的对同一张子表进行 describe 导致 crash
|
||||
31. 数据浏览器的查询结果未按照配置的时区展示的问题
|
||||
32. 创建 websocket 连接时 taosadapter 内存泄漏的问题
|
||||
33. 社区版无法在 redhat 操作系统正常启动
|
||||
34. 无效断言在两个 stt 分别位于数据块时间轴分布空洞场景引发的 crash
|
||||
35. S3 长时间拉取数据会失败的问题
|
||||
36. 使用结果集函数判断时间线的有序性
|
||||
37. 解决超级表投影查询慢的问题
|
||||
38. 修复: 多节点环境,事务返回码与事务状态不一致导致事务堆积
|
||||
39. 修复:在stt_trigger = 1时,delete数据之后重新出现的错误
|
||||
40. 节点恢复阶段taosd内存占用过高导致OOM
|
||||
41. limit过小时的判断错误
|
||||
42. AVEVA historian 数据源连通性及获取示例数据功能
|
||||
43. taosd 服务无法正常停止的问题
|
||||
44. last 函数查询全空列导致 crash
|
||||
45. 查询 cid 不在当前版本的 schema 时触发 assert 导致 coredump
|
||||
46. 写入消息体过大时 OOM 的问题,增加 syncLogBufferMemoryAllowed 参数控制
|
||||
47. timezone 设置为 UTC 且数据包含“1970”时,查询报错
|
||||
48. 取消mnode节点的消息同步的等待超时
|
||||
49. 集群节点异常恢复后,集群授权状态失效
|
||||
50. 查询空指针问题
|
||||
51. 在restore vnode时,将vgroup暂时设置成单副本
|
||||
52. 可以使用SQL保留字作为列名创建超级表,也可以使用SQL保留字作为标签名
|
||||
53. 高并发查询期间内存持续增长的问题
|
||||
54. 流计算在checkpoint处理过程中,由于断言失败导致的crash
|
||||
55. 修复了 3.3.2.8.0820 版本中可以查询到 information_schema 中不存在的表perf_queries问题
|
||||
56. 节点恢复阶段taosd内存占用过高导致OOM
|
||||
57. 修复在schema变更情况下,通过taosx导入数据时,taosd出现crash的问题
|
||||
58. 可能的内存泄漏
|
||||
59. 客户端内存泄漏
|
||||
60. 开源用户修改stt_trigger值升级后无法修改其他数据库选项
|
||||
61. NOT IN (NULL) 查询结果不正确
|
||||
62. taos shell和taosBenchmark不能成功连接云服务实例
|
|
@ -3,5 +3,5 @@ title: 版本说明
|
|||
sidebar_label: 版本说明
|
||||
description: 各版本版本说明
|
||||
---
|
||||
|
||||
[3.3.3.0](./3.3.3.0)
|
||||
[3.3.2.0](./3.3.2.0)
|
||||
|
|
|
@ -1761,7 +1761,8 @@ int32_t taosReadDataFolder(const char *cfgDir, const char **envCmd, const char *
|
|||
TAOS_CHECK_RETURN(cfgInit(&pCfg));
|
||||
|
||||
TAOS_CHECK_GOTO(cfgAddDir(pCfg, "dataDir", tsDataDir, CFG_SCOPE_SERVER, CFG_DYN_NONE), NULL, _exit);
|
||||
TAOS_CHECK_GOTO(cfgAddInt32(pCfg, "dDebugFlag", dDebugFlag, 0, 255, CFG_SCOPE_SERVER, CFG_DYN_SERVER), NULL, _exit);
|
||||
TAOS_CHECK_GOTO(cfgAddInt32(pCfg, "debugFlag", dDebugFlag, 0, 255, CFG_SCOPE_SERVER, CFG_DYN_SERVER), NULL, _exit);
|
||||
TAOS_CHECK_GOTO(cfgAddInt32(pCfg, "dDebugFlag", dDebugFlag, 0, 255, CFG_SCOPE_SERVER, CFG_DYN_SERVER) ,NULL, _exit);
|
||||
|
||||
if ((code = taosLoadCfg(pCfg, envCmd, cfgDir, envFile, apolloUrl)) != 0) {
|
||||
(void)printf("failed to load cfg since %s\n", tstrerror(code));
|
||||
|
|
|
@ -575,6 +575,8 @@ static int32_t mndOpenSdb(SMnode *pMnode) {
|
|||
code = sdbReadFile(pMnode->pSdb);
|
||||
}
|
||||
|
||||
mInfo("vgId:1, mnode sdb is opened, with applied index:%" PRId64, pMnode->pSdb->commitIndex);
|
||||
|
||||
atomic_store_64(&pMnode->applied, pMnode->pSdb->commitIndex);
|
||||
return code;
|
||||
}
|
||||
|
|
|
@ -637,7 +637,7 @@ void mndSyncStop(SMnode *pMnode) {
|
|||
|
||||
(void)taosThreadMutexLock(&pMgmt->lock);
|
||||
if (pMgmt->transId != 0) {
|
||||
mInfo("vgId:1, is stopped and post sem, trans:%d", pMgmt->transId);
|
||||
mInfo("vgId:1, trans:%d, is stopped and post sem", pMgmt->transId);
|
||||
pMgmt->transId = 0;
|
||||
pMgmt->transSec = 0;
|
||||
pMgmt->errCode = TSDB_CODE_APP_IS_STOPPING;
|
||||
|
|
|
@ -589,6 +589,7 @@ STrans *mndAcquireTrans(SMnode *pMnode, int32_t transId) {
|
|||
|
||||
void mndReleaseTrans(SMnode *pMnode, STrans *pTrans) {
|
||||
SSdb *pSdb = pMnode->pSdb;
|
||||
if (pTrans != NULL) mInfo("vgId:1, trans:%d, release transaction", pTrans->id);
|
||||
sdbRelease(pSdb, pTrans);
|
||||
}
|
||||
|
||||
|
@ -1131,10 +1132,11 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans) {
|
|||
if (!sendRsp) {
|
||||
return;
|
||||
} else {
|
||||
mInfo("trans:%d, send rsp, stage:%s failedTimes:%d code:0x%x", pTrans->id, mndTransStr(pTrans->stage),
|
||||
pTrans->failedTimes, code);
|
||||
mInfo("vgId:1, trans:%d, start to send rsp, stage:%s failedTimes:%d code:0x%x", pTrans->id,
|
||||
mndTransStr(pTrans->stage), pTrans->failedTimes, code);
|
||||
}
|
||||
|
||||
mInfo("vgId:1, trans:%d, start to lock rpc array", pTrans->id);
|
||||
taosWLockLatch(&pTrans->lockRpcArray);
|
||||
int32_t size = taosArrayGetSize(pTrans->pRpcArray);
|
||||
if (size <= 0) {
|
||||
|
@ -1155,8 +1157,8 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans) {
|
|||
if (i != 0 && code == 0) {
|
||||
code = TSDB_CODE_MNODE_NOT_FOUND;
|
||||
}
|
||||
mInfo("trans:%d, client:%d send rsp, code:0x%x stage:%s app:%p", pTrans->id, i, code, mndTransStr(pTrans->stage),
|
||||
pInfo->ahandle);
|
||||
mInfo("vgId:1, trans:%d, client:%d start to send rsp, code:0x%x stage:%s app:%p", pTrans->id, i, code,
|
||||
mndTransStr(pTrans->stage), pInfo->ahandle);
|
||||
|
||||
SRpcMsg rspMsg = {.code = code, .info = *pInfo};
|
||||
|
||||
|
@ -1199,6 +1201,9 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans) {
|
|||
}
|
||||
|
||||
tmsgSendRsp(&rspMsg);
|
||||
|
||||
mInfo("vgId:1, trans:%d, client:%d send rsp finished, code:0x%x stage:%s app:%p", pTrans->id, i, code,
|
||||
mndTransStr(pTrans->stage), pInfo->ahandle);
|
||||
}
|
||||
}
|
||||
taosArrayClear(pTrans->pRpcArray);
|
||||
|
|
|
@ -168,11 +168,10 @@ static int32_t sdbCreateDir(SSdb *pSdb) {
|
|||
}
|
||||
|
||||
void sdbSetApplyInfo(SSdb *pSdb, int64_t index, int64_t term, int64_t config) {
|
||||
#if 1
|
||||
mTrace("mnode apply info changed from index:%" PRId64 " term:%" PRId64 " config:%" PRId64 " to index:%" PRId64
|
||||
" term:%" PRId64 " config:%" PRId64,
|
||||
pSdb->applyIndex, pSdb->applyTerm, pSdb->applyConfig, index, term, config);
|
||||
#endif
|
||||
mInfo("vgId:1, mnode apply info changed from index:%" PRId64 " term:%" PRId64 " config:%" PRId64 " to index:%" PRId64
|
||||
" term:%" PRId64 " config:%" PRId64,
|
||||
pSdb->applyIndex, pSdb->applyTerm, pSdb->applyConfig, index, term, config);
|
||||
|
||||
pSdb->applyIndex = index;
|
||||
pSdb->applyTerm = term;
|
||||
pSdb->applyConfig = config;
|
||||
|
|
|
@ -207,6 +207,8 @@ static int32_t sdbWriteFileHead(SSdb *pSdb, TdFilePtr pFile) {
|
|||
return terrno;
|
||||
}
|
||||
|
||||
mInfo("vgId:1, write sdb file with sdb applyIndex:%" PRId64 " term:%" PRId64 " config:%" PRId64, pSdb->applyIndex,
|
||||
pSdb->applyTerm, pSdb->applyConfig);
|
||||
if (taosWriteFile(pFile, &pSdb->applyIndex, sizeof(int64_t)) != sizeof(int64_t)) {
|
||||
return terrno;
|
||||
}
|
||||
|
@ -607,6 +609,9 @@ int32_t sdbWriteFile(SSdb *pSdb, int32_t delta) {
|
|||
}
|
||||
if (code != 0) {
|
||||
mError("failed to write sdb file since %s", tstrerror(code));
|
||||
} else {
|
||||
mInfo("write sdb file success, apply index:%" PRId64 " term:%" PRId64 " config:%" PRId64, pSdb->applyIndex,
|
||||
pSdb->applyTerm, pSdb->applyConfig);
|
||||
}
|
||||
(void)taosThreadMutexUnlock(&pSdb->filelock);
|
||||
return code;
|
||||
|
|
|
@ -42,6 +42,7 @@ void sdbFreeRow(SSdb *pSdb, SSdbRow *pRow, bool callFunc) {
|
|||
// remove attached object such as trans
|
||||
SdbDeleteFp deleteFp = pSdb->deleteFps[pRow->type];
|
||||
if (deleteFp != NULL) {
|
||||
mInfo("vgId:1, deleteFp:%p, type:%s", deleteFp, sdbTableName(pRow->type));
|
||||
(void)(*deleteFp)(pSdb, pRow->pObj, callFunc);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue