TiDB 3.0.14推荐更新 修复大量bug 分布式 NewSQL 数据库

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/