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

  • TiCDC

Bug 修复

  • TiDB

  • 修复在 SET 类型列上 Merge Join 结果不正确的问题 #25669

  • 修复 IN 表达式参数的数据腐蚀问题 #25591
  • 避免 GC 的 session 受全局变量的影响 #24976
  • 修复了在窗口函数查询中使用 Limit 时出现 panic 问题 #25344
  • 修复查询分区表时使用 Limit 返回错误值的问题 #24636
  • 修复了 IFNULL 在 ENUM 或 SET 类型上不能正确生效的问题 #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 转换 DOUBLE 到 DOUBLE 的错误函数 #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_increment 的 DOUBLE 或 FLOAT 类型列的表时生成极大 base 值的问题 #1186
    • 修复 TiDB Lightning 解析 Parquet 文件中 DECIMAL 类型数据失败的问题 #1277