TiDB 3.0.5 Release Notes

    • SQL 优化器
      • 支持对 Window Functions 进行边界检查
      • 修复 partition 表上的 返回错误结果的问题 #12712
      • 修复外连接 Apply 算子上层的 ifnull 函数返回错误结果的问题
      • 修复当 UPDATEwhere 条件中包含子查询时更新失败的问题 #12597
      • 修复当查询条件中包含 cast 函数时 outer join 被错误转化为 inner join 的问题
      • 修复 AntiSemiJoin 的 join 条件中错误的表达式传递 #12799
      • 修复初始化统计信息时由于浅拷贝造成的统计信息出错问题
      • 修复 TiDB 中 str_to_date 函数在日期字符串和格式化字符串不匹配的情况下,返回结果与 MySQL 不一致的问题 #12725
    • SQL 执行引擎
      • 修复在 from_unixtime 函数处理 null 时发生 panic 的问题
      • 修复 Admin Cancel DDL jobs 时报 invalid list index 错的问题 #12671
      • 修复使用 Window Functions 时发生数组越界的问题
      • 改进 AutoIncrement 列隐式分配时的行为,与 MySQL 自增锁的默认模式 (“consecutive” lock mode) 保持一致:对于单行 Insert 语句的多个自增 AutoIncrement ID 的隐式分配,TiDB 保证分配值的连续性。该改进保证 JDBC getGeneratedKeys() 方法在任意场景下都能得到正确的结果。
      • 修复当 作为 Apply 子节点时查询 hang 住的问题 #12766
      • 修复逻辑表达式 ANDOR 在涉及类型转换时返回错误结果的问题
    • Server
      • 实现修改事务 TTL 的接口函数,以助后续支持大事务 #12397
      • 将 TiDB 缓存 schema 变更及相关表信息的次数从 100 调整为 1024,且支持通过 tidb_max_delta_schema_count 系统变量修改
      • 更新了 kvrpc.Cleanup 协议的行为,不再清理未超时事务的锁 #12417
      • 支持将 Partition 表信息记录到 information_schema.tables
      • 支持通过 region-cache-ttl 配置修改 Region Cache 的 TTL #12683
      • 支持在慢日志中打印执行计划压缩编码后的信息,此功能默认开启,可以通过 slow-log-plan 配置或者 tidb_record_plan_in_slow_log 变量进行开关控制。另外支持 tidb_decode_plan 函数将慢日志中的执行计划列编码信息解析成执行计划信息。
      • information_schema.processlist 表中支持显示内存使用信息 #12801
      • 修复 TiKV Client 判断连接空闲时可能出错并出现非预期的告警的问题
      • 修复 tikvSnapshot 没有正确对 的 KV 结果进行缓存,导致 INSERT IGNORE 语句性能有所下降的问题 #12872
      • 修复了因建立到部分 KV 服务的连接较慢最终导致 TiDB 响应速度相对变慢的情况
    • DDL
      • 修复 Create Table 操作对 Set 列不能正确设置 Int 类型默认值的问题 #12267
      • 支持 Create Table 语句中建唯一索引时带多个 Unique
      • 修复使用 Alter Table 添加 Bit 类型列时,对存在的行填充此列的默认值可能出错的问题 #12489
      • 修复 Range 分区表以 Date 或 Datetime 类型列作为分区键时,添加分区失败的问题
      • 对于 Date 或 Datetime 类型列作为分区键的 Range 分区表,在建表或者添加分区时,支持检查分区类型与分区键类型的统一性 #12792
      • 在创建 Range 分区表时,添加对 Unique Key 列集合需大于等于分区列集合的检查
    • Monitor
      • 添加统计 Commit 与 Rollback 操作的监控到 Transaction OPS 面板 #12505
      • 添加统计 Add Index 操作进度的监控
    • Storage
      • 悲观事务新特性:事务 Cleanup 接口支持只清理 TTL 已经过期的锁
      • 修复事务 Primary key 的 Rollback 被折叠的问题 #5646
      • 修复悲观锁下点查可能返回历史旧版本的问题 #5634
    • Engine
      • 打开 RocksDB force_consistency_checks,提高数据安全性
      • 修复 Titan 并发 flush 情况下有可能造成数据丢失的问题 #5672
      • 更新 rust-rocksdb 版本以避开 intra-L0 compaction 导致 TiKV 崩溃重启的问题
    • 提高 Region 占用空间的精度
    • 修复 --help 命令输出内容 #1763
    • 修复 TLS 开启后 http 请求重定向失败的问题
    • 修复 pd-ctl 使用 store shows limit 命令 panic 的问题 #1808
    • 提高 label 监控可读性以及当 leader 发生切换后重置原 leader 的监控数据,防止误报
    • TiDB Binlog
      • 修复 ALTER DATABASE 相关 DDL 会导致 Drainer 异常退出的问题
      • 支持对 Commit binlog 查询事务状态信息,提升同步效率 #757
      • 修复当 Drainer 的 start_ts 大于 Pump 中最大的 commit_ts 时,有可能引起 Pump panic 的问题
    • TiDB Lightning
      • 整合 Loader 全量逻辑导入功能,支持配置 backend 模式 #221
    • 增加 TiDB 添加索引速度的监控 #986
    • 精简配置文件内容,移除不需要用户配置的参数 ,#998
    • 修复 performance read 和 performance write 监控表达式错误的问题
    • 更新 raftstore CPU 使用率的监控显示方式以及 raftstore CPU 使用率的告警规则 #992
    • 更新 Overview 监控面板中 TiKV 的 CPU 监控项,过滤掉多余的监控内容