平凯数据库 7.5.1-0 Release Notes

发版日期:2024 年 06 月 07 日

平凯数据库版本:7.5.1-0

Open-Core 版本:7.5.1

7.5.1-0 为长期支持版本 (Long-Term Support Release, LTS),基于上游 TiDB v7.5.1 (Long-Term Support Release, LTS) 版本。相关 Open-Core 版本的 Release Notes 参见 TiDB 7.5.0 Release Notes。

7.5.1-0 版本引入了以下关键特性:

1. 需求列表

分类功能描述
SQL兼容 MySQL 存储过程增强存储过程功能增强。
支持 GET DIAGNOSTICS 功能用于获取当前执行环境信息,包括有关先前执行的SQL语句(GET DIAGNOSTICS语句除外)的信息。
Signal自定义“返回”错误的方法。
支持 select ... into 语法MySQL 功能兼容。
功能特性与兼容性支持 GB18030-2022 字符集增强。支持 GB18030 最新版字符集-2022标准,增加 tidb-lightning 支持,从 v7.5.1-0 版本开始,平凯数据库支持 GB18030-2022 字符集(试验特性)。
平凯数据库支持 ORC 格式数据文件导入支持将 Hadoop 生态的 ORC 格式文件导入。
安全列级别权限支持与 MySQL 兼容的列级别权限。
用户组支持用户组管理(角色同义词)。
四权分立支持四权分立(开启后默认初始化数据库管理员、系统管理员、安全管理员、审计管理员四个权限)。
基于国密算法的传输加密(TLCP)是指符合《GB/T38636-2020信息安全技术传输层密码协议(TLCP)》的安全通信协议,支持国密算法套。
其他 EAL2 相关功能合入1. 事务提交失败,自动回滚打印审计日志。
2. 达到资源限制打印审计日志。
3. 客户端默认显示最近一次成功和失败登录信息。

2. 功能列表

2.1 SQL

  • 支持 GET DIAGNOSTICS 功能

    • 平凯数据库 v7.5.1-0 支持 GET DIAGNOSTICS 功能,用于获取当前执行环境信息,包括有关先前执行的SQL语句(GET DIAGNOSTICS语句除外)的信息。
    • 更多信息,请参考 GET DIAGNOSTICS
  • Signal

    • 平凯数据库 v7.5.1-0 支持 Signal 功能,用于自定义“返回”错误。
    • 更多信息,请参考 SIGNAL
  • SELECT ... INTO

    • 平凯数据库 v7.5.1-0 版本开始支持 SELECT ... INTO 功能,用于将查询结果写入到变量中。当前仅支持 varlist 在 from 之前场景。
    • 更多信息,请参考 SELECT ... INTO

2.2 功能特性与兼容性

  • 支持 GB18030-2022 字符集增强

    • 平凯数据库 v7.5.1-0 版本进一步增强 GB18030-2022 支持,增加支持 GB18030-2022 字符数据导入。
    • 更多信息,请参考 GB18030-2022 字符集

3. 合入问题列表

序号Issuelink来源
151107https://github.com/pingcap/tidb/issues/51107Open-core
251372https://github.com/pingcap/tidb/issues/51372Open-core
351560https://github.com/pingcap/tidb/issues/51560Open-core
451746https://github.com/pingcap/tidb/issues/51746Open-core
551784https://github.com/pingcap/tidb/issues/51784Open-core
652080https://github.com/pingcap/tidb/issues/52080Open-core
752411https://github.com/pingcap/tidb/issues/52411Open-core
852902https://github.com/pingcap/tidb/issues/52902Open-core
916561https://github.com/tikv/tikv/issues/16561Open-core
1016809https://github.com/tikv/tikv/issues/16809Open-core
11I9HI37https://gitee.com/pingcap_enterprise/tidb/issues/I9HI37?from=project-issueEE

4. 变更描述

4.1 用户历史登录信息查询系统表结构变更

用户历史登录信息查询功能在 v7.1.1-0 版本 GA,v7.1.1-0 版本对应的系统表结构如下:

mysql> desc mysql.login_history; +---------------+---------------------+------+------+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+------+-------------------+-------+ | Time | timestamp | YES | | CURRENT_TIMESTAMP | | | Host | char(255) | NO | | | | | User | char(32) | NO | MUL | | | | DB | char(64) | NO | | | | | Connection_id | bigint(21) unsigned | NO | MUL | 0 | | | Result | char(16) | NO | | | | | Client_host | char(255) | NO | | | | | Detail | text | YES | | NULL | | +---------------+---------------------+------+------+-------------------+-------+ 8 rows in set (0.00 sec)

在 7.1.1-0 版本中,Host 记录的是用户登录的 tidb-server 服务对应的 host,但 MySQL 系定义的用户标准是 User@Host,当前记录方式未记录用户的完整信息,在 v7.5.1-0 对系统表进行如下改造:

mysql> desc mysql.login_history; +---------------+---------------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+------+---------+-------+ | Time | datetime(6) | NO | MUL | NULL | | | Server_host | char(255) | NO | | | | | User | char(32) | NO | MUL | | | | User_host | char(255) | NO | | | | | DB | char(64) | NO | | | | | Connection_id | bigint(21) unsigned | NO | | 0 | | | Result | char(16) | NO | | | | | Client_host | char(255) | NO | | | | | Detail | text | YES | | NULL | | +---------------+---------------------+------+------+---------+-------+ 9 rows in set (0.00 sec)

描述:

  • Server_host:tidb-server 服务所在 host;
  • User_host:同 MySQL 用户的 host。

具体升级兼容性变更详见平凯数据库系统表变更及升级兼容性说明

4.2 用户历史登录信息查询数据清理功能变更

用户历史登录信息查询功能在 v7.1.1-0 版本 GA,v7.1.1-0 版本表定义如下:

mysql> show create table mysql.login_history; +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | login_history | CREATE TABLE `login_history` ( `Time` timestamp DEFAULT CURRENT_TIMESTAMP, `Host` char(255) NOT NULL DEFAULT '', `User` char(32) NOT NULL DEFAULT '', `DB` char(64) NOT NULL DEFAULT '', `Connection_id` bigint(21) unsigned NOT NULL DEFAULT '0', `Result` char(16) NOT NULL DEFAULT '', `Client_host` char(255) NOT NULL DEFAULT '', `Detail` text DEFAULT NULL, KEY `idx_user` (`User`), KEY `idx_session_id` (`Connection_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`time` + INTERVAL 3 MONTH */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec)

用户历史登录信息查询系统表数据清理功能借助于开源版本 TTL 功能进行自动清理,但是测试发现从不支持 TTL 版本的集群升级到该版本,会出现 TTL 属性丢失,造成数据清理功能不生效。在 v7.5.1-0 版本中表定义修改成如下:

mysql> show create table mysql.login_history; +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | login_history | CREATE TABLE `login_history` ( `Time` datetime(6) NOT NULL, `Server_host` char(255) NOT NULL DEFAULT '', `User` char(32) NOT NULL DEFAULT '', `User_host` char(255) NOT NULL DEFAULT '', `DB` char(64) NOT NULL DEFAULT '', `Connection_id` bigint(21) unsigned NOT NULL DEFAULT '0', `Result` char(16) NOT NULL DEFAULT '', `Client_host` char(255) NOT NULL DEFAULT '', `Detail` text DEFAULT NULL, KEY `idx_user` (`User`,`User_host`,`Result`,`Time`), KEY `idx_time` (`Time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin | +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)

将原有 TTL 功能删除,独立实现后台线程清理历史登录信息查询数据清理功能。