TiDB 3.0.14 现已发布,该版本更新内容如下:
兼容性变化
TiDB
performance_schema 和 metrics_schema 由读写改为只读 #15417
重点修复的 Bug
TiDB
修复 join 条件在 handle 列上存在多个等值条件时,index join 查询结果错误的问题 #15734
修复 fast analyze handle 列 panic 的问题 #16079
修复通过 prepare 方式执行 DDL 语句时,DDL job 结构中 query 字段错误的问题,该问题可能导致使用 Binlog 同步时,上下游数据产生不一致 #15443
TiKV
修复重复清锁请求可能破坏事务原子性的问题 #7388
新功能
TiDB
admin show ddl jobs 查询结果中添加库名和表名列 #16428
RECOVER TABLE 支持恢复被 TRUNCATE 的表 #15458
新增 SHOW GRANTS 语句权限检查的功能 #16168
新增 LOAD DATA 语句权限检查 #16736
提升时间日期相关函数作为 partition key 时,分区裁剪的性能 #15618
dispatch error 的日志级别从 WARN 调整为 ERROR #16232
新增支持 require-secure-transport 启动项,以强制要求客户端必须使用 TLS #15415
支持内部组件间 http 通信使用 TLS #15419
information_schema.processlist 表中添加显示当前事务 start_ts 信息 #16160
新增自动重加载集群间通讯 TLS 证书信息的功能 #15162
通过重构分区裁剪的实现,提升分区表的读操作的性能 #15628
新增当使用 floor(unix_timestamp(a)) 作为 range 分区表的分区表达式时,支持分区裁剪功能 #16521
修改 update 语句中包含 view 且不对该 view 进行 update 时的行为,由不允许执行改为正常执行 #16787
禁止创建嵌套 view #15424
禁止 truncate view #16420
当列处于非 public 状态时,禁止用 update 语句显式的更新此列的值 #15576
当 status 端口被占用时,禁止启动 TiDB #15466
current_role 函数的字符集由 binary 调整为 utf8mb4 #16083
通过在处理完每个 Region 后增加检查 max-execution-time 是否符合条件,提升系统处理 max-execution-time 的响应灵敏度 #15615
TiKV
提升乐观事务存在大量冲突及 BatchRollback 存在时的性能 #7605
提升悲观事务冲突严重的场景下悲观锁 waiter 被频繁唤醒导致性能下降的问题 #7584
Tools
TiDB Lightning
tidb-lightning-ctl 新增 fetch-mode 子命令,输出 TiKV 集群模式 #287
Bug 修复
TiDB
修复 WEEKEND 函数在 SQL mode 为 ALLOW_INVALID_DATES 时结果与 MySQL 不兼容的问题 #16170
修复当索引列上包含自增主键时,DROP INDEX 执行失败的问题 #16008
修复 Statement Summary 中,TABLE_NAMES 列值有时会不正确的问题 #15231
修复因 Plan Cache 启动后部分表达式计算结果错误的问题 #16184
修复函数 not/istrue /isfalse 计算结果错误的问题 #15916
修复带有冗余索引的表 MergeJoin 时 Panic 的问题 #15919
修复谓词只跟外表有联接的情况下错误地化简外链接的问题 #16492
修复 SET ROLE 导致的 CURRENT_ROLE 函数报错问题 #15569
修复 LOAD DATA 在遇到 \ 时,处理结果与 MySQL 不兼容的问题 #16633
修复数据库可见性与 MySQL 不兼容的问题 #14939
修复 SET DEFAULT ROLE ALL 语句的权限检查不正确的问题 #15585
修复 plan cache 导致的分区裁剪失效问题 #15818
修复因事务未对相关表进行加锁,该表存在并发的 DDL 操作且有阻塞时导致事务提交时报 schema change 的问题 #15707
修复 IF(not_int, *, *) 行为不正确的问题 #15356
修复 CASE WHEN (not_int) 行为不正确的问题 #15359
修复在使用非当前 schema 中的视图时报 Unknown column 错误的问题 #15866
修复解析时间字符串的结果与 MySQL 不兼容的问题 #16242
修复 left join 右孩子节点有 null 列可能会导致 join 上的排序算子 panic 的问题 #15798
修复当 TiKV 持续返回 StaleCommand 错误期间,执行 SQL 的流程被阻塞且不报错的问题 #16528
修复启用审计插件后端口探活可能会导致 panic 的问题 #16064
修复 fast analyze 作用于 index 时导致 panic 的问题 #15967
修复某些情况下 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 语句 panic 的问题 #16309
修复哈希分区表在建表时由于分配内存之前未及时检查分区数量导致当指定非常大的分区数量(例如 9999999999999)时,导致 TiDB OOM 的问题 #16218
修复 information_schema.tidb_hot_table 对于分区表信息不准确的问题 #16726
修复分区选择算法在哈希分区表上不生效的问题 #16070
修复 mvcc 系列的 HTTP API 不支持分区表的问题 #16191
保持 UNION 语句和 SELECT 语句对于错误处理的行为一致 #16137
修复当 VALUES 函数参数类型为 bit(n) 时行为不正确的问题 #15486
修复 view 列名过长时处理逻辑与 MySQL 不一致的问题,当列名过长时,系统自动生成一个短的列名 #14873
修复 (not not col) 被错误地优化为 col 的问题 #16094
修复 index join 构造内表 range 错误的问题 #15753
修复 only_full_group_by 对含括号的表达式检查错误的问题 #16012
修复 select view_name.col_name from view_name 报错的问题 #15572
TiKV
修复某些情况节点隔离恢复之后无法被正确删掉的问题 #7703
修复网络隔离时 Region Merge 可能导致数据丢失的问题 #7679
修复某些情况 learner 无法被正确移除的问题 #7598
修复扫描 raw kv 时可能乱序的问题 #7597
修复由于 Raft 消息 batch 过大时导致连接重连的问题 #7542
修复 empty request 造成 gRPC 线程死锁的问题 #7538
修复 merge 过程中 learner 重启的处理逻辑不正确的问题 #7457
修复重复清锁请求可能破坏事务原子性的问题 #7388
更新说明:https://pingcap.com/docs-cn/v3.1/releases/3.0.14/