TiDB 3.0.8 Release Notes
发版日期:2019 年 12 月 31 日
TiDB 版本:3.0.8
TiDB Ansible 版本:3.0.8
TiDB
- SQL 优化器
- SQL 执行引擎
- 修复
INSERT/REPLACE/UPDATE ... SET ... = DEFAULT
语法会报错的问题,修复DEFAULT
表达式与虚拟生成列配合使用会报错的问题 #13682 - 修复
INSERT
语句在进行字符串类型到浮点类型转换时,可能会报错的问题 #14011 - 修复
HashAgg
Executor 并发值未被正确初始化,导致聚合操作执行在一些情况下效率低的问题 #13811 - 修复 group by item 被括号包含时执行报错的问题 #13658
- 修复 TiDB 没有正确计算 group by item,导致某些情况下 OUTER JOIN 执行会报错的问题 #14014
- 修复向 Range 分区表写入超过 Range 外的数据时,报错信息不准确的问题 #14107
- 鉴于 MySQL 8 即将废弃
PadCharToFullLength
,revert PR #10124 并撤销PadCharToFullLength
的效果,以避免一些特殊情况下查询结果不符合预期 #14157 - 修复
ExplainExec
中没有保证close()
的调用而导致EXPLAIN ANALYZE
时造成 goroutine 泄露的问题 #14226
- 修复
- DDL
- 优化 “change column”/“modify column” 的输出的报错信息,让人更容易理解 #13796
- 新增
SPLIT PARTITION TABLE
语法,支持分区表切分 Region 功能 #13929 - 修复创建索引时,没有正确检查长度,导致索引长度超过 3072 字节没有报错的问题 #13779
- 修复由于分区表添加索引时若花费时间过长,可能导致输出
GC life time is shorter than transaction duration
报错信息的问题 #14132 - 修复在
DROP COLUMN
/MODIFY COLUMN
/CHANGE COLUMN
时没有检查外键导致执行SELECT * FROM information_schema.KEY_COLUMN_USAGE
语句时发生 panic 的问题 #14105
- Server
- Statement Summary 功能改进:
- 新增大量的 SQL 指标字段,便于对 SQL 进行更详细的统计分析 #14151,#14168
- 新增
stmt-summary.refresh-interval
参数用于控制定期将events_statements_summary_by_digest
表中过期的数据移到events_statements_summary_by_digest_history
表,默认间隔时间:30min #14161 - 新增
events_statements_summary_by_digest_history
表,保存从events_statements_summary_by_digest
中过期的数据 #14166
- 修复执行 RBAC 相关的内部 SQL 时,错误输出 binlog 的问题 #13890
- 新增
server-version
配置项来控制修改 TiDB server 版本的功能 #13906 - 新增通过 HTTP 接口恢复 TiDB binlog 写入功能 #13892
- 将
GRANT roles TO user
所需要的权限由GrantPriv
修改为ROLE_ADMIN
或SUPER
,以与 MySQL 保持一致 #13932 - 当
GRANT
语句未指定 database 名时,TiDB 行为由使用当前 database 改为报错No database selected
,与 MySQL 保持兼容 #13784 - 修改
REVOKE
语句执行权限从SuperPriv
改成用户只需要有对应 Schema 的权限,就可以执行REVOKE
语句,与 MySQL 保持一致 #13306 - 修复
GRANT ALL
语法在没有WITH GRANT OPTION
时,错误地将GrantPriv
授权给目标用户的问题 #13943 - 修复
LoadDataInfo
中调用addRecord
报错时,报错信息不包含导致LOAD DATA
语句行为不正确信息的问题 #13980 - 修复因查询中多个 SQL 语句共用同一个
StartTime
导致输出错误的慢查询信息的问题 #13898 - 修复
batchClient
处理大事务时可能造成内存泄露的问题 #14032 - 修复
system_time_zone
固定显示为CST
的问题,现在 TiDB 的system_time_zone
会从mysql.tidb
表中的systemTZ
获取 #14086 - 修复
GRANT ALL
语法授予权限不完整(例如Lock_tables_priv
)的问题 #14092 - 修复
Priv_create_user
权限不能CREATE ROLE
和DROP ROLE
的问题 #14088 - 将
ErrInvalidFieldSize
的错误码从1105(Unknow Error)
改成3013
#13737 - 新增
SHUTDOWN
命令用于停止 TiDB Server,并新增ShutdownPriv
权限 #14104 - 修复
DROP ROLE
语句的原子性问题,避免语句执行失败时,一些 ROLE 仍然被非预期地删除 #14130 - 修复 3.0 以下版本升级到 3.0 时,
tidb_enable_window_function
在SHOW VARIABLE
语句的查询结果错误输出 1 的问题,修复后输出 0 #14131 - 修复 TiKV 节点下线时,由于
gcworker
持续重试导致可能出现 goroutine 泄露的问题 #14106 - 在慢日志中记录 Binlog 的
Prewrite
的时间,提升问题追查的易用性 #14138 tidb_enable_table_partition
变量支持 GLOBAL SCOPE 作用域 #14091- 修复新增权限时未正确将新增的权限赋予对应的用户导致用户权限可能缺失或者被误添加的问题 #14178
- 修复当 TiKV 链接断开时,由于
rpcClient
不会关闭而导致CheckStreamTimeoutLoop
goroutine 会泄露的问题 #14227
- Statement Summary 功能改进:
- Transaction
- 创建新集群时,
tidb_txn_mode
变量的默认值由""
改为"pessimistic"
#14171 - 修复悲观事务模式,事务重试时单条语句的等锁时间没有被重置导致等锁时间过长的问题 #13990
- 修复悲观事务模式,因对没有修改的数据未加锁导致可能读到不正确数据的问题 #14050
- 修复 mocktikv 中 prewrite 时,没有区分事务类型,导致重复的 insert value 约束检查 #14175
- 修复
session.TxnState
状态为Invalid
时,事务没有被正确处理导致 panic 的问题 #13988 - 修复 mocktikv 中
ErrConfclit
结构未包含ConflictCommitTS
的问题 #14080 - 修复 TiDB 在 Resolve Lock 之后,没有正确处理锁超时检查导致事务卡住的问题 #14083
- 创建新集群时,
- Monitor
LockKeys
新增pessimistic_lock_keys_duration
监控 #14194
TiKV
- Coprocessor
- Raftstore
- Engine
- 修复极端条件下因 RocksDB 迭代器错误未正确处理导致可能返回空数据的问题 #6326
- 事务
- 将内存分配库的默认值由
tikv_alloc/default
改成jemalloc
#6206
PD
- Client
- 优化
/api/v1/regions
API 的性能 #1986 - 修复删除
tombstone
状态的 Store 可能会导致 panic 的隐患 #2038 - 修复从磁盘加载 Region 信息时错误的将范围有重叠的 Region 删除的问题 #2011,#2040
- 将 etcd 版本从 3.4.0 升级到 3.4.3 稳定版本,注意升级后只能通过 pd-recover 工具降级 #2058
Tools
- TiDB Binlog
- 修复 Pump 由于没有收到 DDL 的 commit binlog 导致 binlog 被忽略的问题 #853