平凯数据库 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。
- 平凯数据库 v7.5.1-0 版本开始支持
2.2 功能特性与兼容性
支持 GB18030-2022 字符集增强
- 平凯数据库 v7.5.1-0 版本进一步增强 GB18030-2022 支持,增加支持 GB18030-2022 字符数据导入。
- 更多信息,请参考 GB18030-2022 字符集。
3. 合入问题列表
| 序号 | Issue | link | 来源 |
|---|---|---|---|
| 1 | 51107 | https://github.com/pingcap/tidb/issues/51107 | Open-core |
| 2 | 51372 | https://github.com/pingcap/tidb/issues/51372 | Open-core |
| 3 | 51560 | https://github.com/pingcap/tidb/issues/51560 | Open-core |
| 4 | 51746 | https://github.com/pingcap/tidb/issues/51746 | Open-core |
| 5 | 51784 | https://github.com/pingcap/tidb/issues/51784 | Open-core |
| 6 | 52080 | https://github.com/pingcap/tidb/issues/52080 | Open-core |
| 7 | 52411 | https://github.com/pingcap/tidb/issues/52411 | Open-core |
| 8 | 52902 | https://github.com/pingcap/tidb/issues/52902 | Open-core |
| 9 | 16561 | https://github.com/tikv/tikv/issues/16561 | Open-core |
| 10 | 16809 | https://github.com/tikv/tikv/issues/16809 | Open-core |
| 11 | I9HI37 | https://gitee.com/pingcap_enterprise/tidb/issues/I9HI37?from=project-issue | EE |
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 功能删除,独立实现后台线程清理历史登录信息查询数据清理功能。