title: TiDB 2.1.16 Release Notes

TiDB 2.1.16 Release Notes

发版日期:2019 年 8 月 15 日

TiDB 版本:2.1.16

TiDB Ansible 版本:2.1.16

TiDB

  • SQL 优化器
    • 修复时间列上的等值条件 Row Count 估算不准确的问题 #11526
    • 修复 TIDB_INLJ Hint 不生效或者对非指定的表生效的问题 #11361
    • 将查询中的 NOT EXISTS 由 OUTER JOIN 实现方式改为 ANTI JOIN ,便于找到更优执行计划 #11291
    • 支持在 SHOW 语句中使用子查询,现在可以支持诸如 SHOW COLUMNS FROM tbl WHERE FIELDS IN (SELECT 'a') 的写法 #11461
    • 修复常量折叠优化导致 SELECT … CASE WHEN … ELSE NULL ... 查询结果不正确的问题 #11441
  • SQL 执行引擎
    • 修复函数 DATE_ADD 在 INTERVAL 为负的情况下结果错误的问题 #11616
    • 修复 DATE_ADD 函数接受 FLOATDOUBLEDECIMAL 类型的参数时,没有正确地进行类型转换而导致结果可能不正确的问题 #11628
    • 修复 CAST(JSON AS SIGNED) 出现 OVERFLOW 时错误信息不准确的问题 #11562
    • 修复在关闭 Executor 的过程中,子节点关闭返回错误时其他子节点未关闭的问题 #11598
    • 支持 SPLIT TABLE 语句返回切分成功的 REGION 数量,并且当部分 REGION SCATTER 在超时未完成调度时,不再返回错误,而是返回完成调度的比例 #11487
    • 修复 REGEXP BINARY 函数对大小写敏感,与 MySQL 不兼容的问题 #11505
    • 修复 DATE_ADD / DATE_SUB 结果中 YEAR 小于 0 或 大于 65535 时溢出导致结果没有正确返回 NULL 值的问题 #11477
    • 慢查询表中添加用于表示是否执行成功的 Succ 字段 #11412
    • 修复一条 SQL 语句在涉及当前时间计算时(例如 CURRENT_TIMESTAMP 或者 NOW),多次取当前时间值,结果与 MySQL不兼容的问题:现在同一条SQL语句中取当前时间时,均使用相同值 #11392
    • 修复 AUTO INCREMENT 列未处理 FLOAT / DOUBLE 的问题 #11389
    • 修复 CONVERT_TZ 函数在参数不合法时,没有正确返回 NULL 的问题 #11357
    • 修复 PARTITION BY LIST 报错的问题(仅添加语法支持,TiDB 执行时候会作为普通表创建并提供提示信息) #11236
    • 修复 Mod(%)Multiple(*)Minus(-) 返回结果为 0 时,在小数位数较多(例如 select 0.000 % 0.11234500000000000000)的情况下与 MySQL 位数不一致的问题 #11353
  • Server
    • 修复插件在 OnInit 回调中获取 Domain 为 NULL 的问题 #11426
    • 修复当 Schema 删除后,依然可以通过 HTTP 接口获取该 Schema 中表信息的问题 #11586
  • DDL
    • 禁止 DROP 自增列索引,修复因为 DROP 自增列上的索引导致自增列结果可能出错的问题 #11402
    • 修复列和表使用不同的 CHARSET 和 COLLATE 创建表和修改表时,列的字符集不正确的问题 #11423
    • 修复并行执行 “alter table … set default…” 和其他修改此列信息的 DDL,可能导致此列的结构出错的问题 #11374
    • 修复当 Generated column A 依赖 Generated column B 时,使用 A 创建索引,数据回填失败的问题 #11538
    • 提升 ADMIN CHECK TABLE 的速度 #11538

TiKV

  • 访问正在关闭的 TiKV Region 时返回 Close 错误 #4820
  • 支持逆向 raw_scan 和逆向 raw_batch_scan 接口 #5148

Tools

  • TiDB Binlog
    • Drainer 增加 ignore-txn-commit-ts 配置项,用于跳过执行某些事务语句 #697
    • 增加启动时配置项检查功能,遇到不合法配置项会退出运行并给出错误信息 #708
    • Drainer 增加 node-id 配置,用于指定固定逻辑 Drainer #706
  • TiDB Lightning
    • 修复 2 个 checksum 同时运行的情况下,tikv_gc_life_time 没有正常修改回原本值的问题 #224

TiDB Ansible

  • Spark 新增 log4j 日志配置 #842
  • 更新 tispark jar 包为 v2.1.2 版本 #863
  • 修复了 TiDB Binlog 使用 Kafka 或者 ZooKeeper 时导致生成的 Prometheus 配置文件格式错误的问题 #845
  • 修复执行 rolling_update.yml 操作时,切换 PD Leader 失效的 Bug #888
  • 优化滚动升级 PD 节点的逻辑,先升级 Follower 再升级 Leader,提高稳定性 #895