TiDB 5.0.3 Release Notes

发版日期:2021 年 7 月 2 日

TiDB 版本:5.0.3

兼容性更改

  • TiDB

    • v4.0 集群升级到 v5.0 或更高版本(dev 和 v5.1)的集群后,tidb_multi_statement_mode 变量的默认值由 WARN 变为 OFF
    • 兼容 MySQL 5.7 的 noop 变量 innodb_default_row_format,配置此变量无实际效果 #23541

功能增强

  • Tools

    • TiCDC

      • 增加 HTTP API 获取 TiCDC changefeed 信息和节点健康信息 #1955
      • 为 kafka 下游增加 SASL/SCRAM 支持 #1942
      • 使 TiCDC 在 server 级别支持 --data-dir 配置 #2070

提升改进

  • TiDB

    • 支持将 TopN 算子下推到 TiFlash #25162
    • 支持将内置函数 json_unquote() 下推到 TiKV #24415
    • 支持在 Dual 表上移除 Union 算子的优化 #25614
    • 支持将内置函数 replace() 下推到 TiFlash #25565
    • 支持将内置函数 unix_timestamp()concat()year()day()datediff()datesub()concat_ws() 下推到 TiFlash #25564
    • 优化聚合算子的代价常数 #25241
    • 支持将 Limit 算子下推到 TiFlash #25159
    • 支持将内置函数 str_to_date() 下推到 TiFlash #25148
    • 允许 MPP outer join 根据表行数选择构建表 #25142
    • 支持将内置函数 left()right()abs() 下推到 TiFlash #25133
    • 支持将 Broadcast Cartesian Join 下推到 TiFlash #25106
    • 支持将 Union All 算子下推到 TiFlash #25051
    • 支持 MPP 查询任务按 Region 均衡到不同 TiFlash 节点上 #24724
    • 支持执行 MPP 查询后将缓存中过时的 Region 无效化 #24432
    • 提升内置函数 str_to_date 在格式指定器中 %b/%M/%r/%T 的 MySQL 兼容性 #25767
  • TiKV

    • 限制 TiCDC sink 的内存消耗 #10305
    • 为 TiCDC old value 缓存增加基于内存使用量的上限 #10313
  • PD

    • 将 TiDB Dashboard 升级至 v2021.06.15.1 #3798
  • TiFlash

    • 支持将 STRING 类型转换为 DOUBLE 类型
    • 支持 STR_TO_DATE() 函数
    • 通过多线程优化右外连接中的非连接数据
    • 支持笛卡尔积 Join
    • 支持 LEFT()RIGHT() 函数
    • 支持在 MPP 查询中自动清理过期的 Region 信息
    • 支持 ABS() 函数
  • Tools

Bug 修复

  • TiDB

    • 修复在 SET 类型列上 Merge Join 结果不正确的问题 #25669
    • 修复 IN 表达式参数的数据腐蚀问题 #25591
    • 避免 GC 的 session 受全局变量的影响 #24976
    • 修复了在窗口函数查询中使用 Limit 时出现 panic 问题 #25344
    • 修复查询分区表时使用 Limit 返回错误值的问题 #24636
    • 修复了 IFNULLENUMSET 类型上不能正确生效的问题 #24944
    • 修复了 Join 子查询中的 count 被改写为 first_row 导致结果不正确的问题 #24865
    • 修复了 TopN 算子下使用 ParallelApply 查询时卡住的问题 #24930
    • 修复了使用含有多列的前缀索引查询时出现多余结果的问题 #24356
    • 修复了操作符 <=> 不能正确生效的问题 #24477
    • 修复并行 Apply 算子的数据竞争问题 #23280
    • 修复对 PartitionUnion 算子的 IndexMerge 结果排序时出现 index out of range 错误 #23919
    • 修复 tidb_snapshot 被允许设置为非预期的过大值,而可能造成事务隔离性被破坏的问题 #25680
    • 修复 ODBC 类常数(例如 {d '2020-01-01'})不能被用作表达式的问题 #25531
    • 修复 SELECT DISTINCT 被转化为 Batch Get 而导致结果不正确的问题 #25320
    • 修复无法触发将查询从 TiFlash 回退到 TiKV 的问题 #23665 #24421
    • 修复在检查 only_full_group_by 时的 index-out-of-range 错误 #23839
    • 修复关联子查询中 Index Join 的结果不正确问题 #25799
  • TiKV

    • 修复错误的 tikv_raftstore_hibernated_peer_state 监控指标 #10330
    • 修复 coprocessor 中 json_unquote() 函数错误的参数类型 #10176
    • 正常关机时跳过清理 Raftstore 的回调从而避免在某些情况下破坏事务的 ACID #10353 #10307
    • 修复在 Leader 上 Replica Read 共享 Read Index 的问题 #10347
    • 修复 coprocessor 转换 DOUBLEDOUBLE 的错误函数 #25200
  • PD

    • 修复在 scheduler 启动之后,加载 TTL 配置产生的数据竞争问题 #3771
    • 修复 is_learner 字段在 TiDB 的 TIKV_REGION_PEERS 表中显示异常的问题 #3372 #24293
    • 修复在一个 zone 内所有 TiKV 节点下线或宕机的情况下,PD 不往其他 zone 调度数据的问题 #3705
    • 修复在添加 scatter range 调度器后导致 PD 挂掉的问题 #3762
  • TiFlash

    • 修复因 split 失败而不断重启的问题
    • 修复无法删除 Delta 历史数据的潜在问题
    • 修复在 CAST 函数中为非二进制字符串填充错误数据的问题
    • 修复处理包含复杂 GROUP BY 列的聚合查询时结果不正确的问题
    • 修复写入压力过大时出现进程崩溃的问题
    • 修复右连接键不为空且左连接键可为空时进程崩溃的问题
    • 修复 read-index 请求耗时长的潜在问题
    • 修复读负载高的情况下进程崩溃的问题
    • 修复 Date_Format 函数在参数类型为 STRING 且包含 NULL 值时可能导致 TiFlash server 崩溃的问题
  • Tools

    • TiCDC

      • 修复 TiCDC owner 在刷新 checkpoint 时异常退出的问题 #1902
      • 修复写 MySQL 下游出错暂停时 MySQL 连接泄漏的问题 #1946
      • 修复 TiCDC 读取 /proc/meminfo 失败时出现的 panic 问题 #2024
      • 减少 TiCDC 运行时的内存使用 #2012 #1958
      • 修复 resolved ts 计算慢导致 TiCDC panic 的问题 #1576
      • 修复 processor 潜在的死锁问题 #2142
    • Backup & Restore (BR)

      • 修复 BR 恢复中忽略了所有系统表的问题 #1197 #1201
      • 修复在 Backup & Restore 数据恢复期间开启 TDE 会报出文件已存在的错误 #1179
    • TiDB Lightning

      • 修复 TiDB Lightning 在特殊数据下 panic 的问题 #1213
      • 修复 TiDB Lightning 导入大文件拆分时遇到的 EOF 报错问题 #1133
      • 修复 TiDB Lightning 导入含 auto_incrementDOUBLEFLOAT 类型列的表时生成极大 base 值的问题 #1186
      • 修复 TiDB Lightning 解析 Parquet 文件中 DECIMAL 类型数据失败的问题 #1277