阅读《2024 中国开源开发者报告》赢大奖,扫码申请享特权
本文来源:https://dev.mysql.com/doc/refman/9.2/en/mysql-nutshell.html,
由「爱可生开源社区」翻译:https://mp.weixin.qq.com/s/gNRaHz-1Eq_PKsg792uwjg
2025 年 1 月 21 日,MySQL 9.2.0 版本发布!
根据 MySQL 版本发布计划,MySQL 9.2.0 是一个创新版,那么我们来看一下有哪些功能新增,弃用和删除。
1一、新增或更改的功能
CREATE_SPATIAL_REFERENCE_SYSTEM 权限
MySQL 9.2.0 引入了 CREATE_SPATIAL_REFERENCE_SYSTEM 权限,该权限允许用户执行任何以下声明:
-
CREATE SPATIAL REFERENCE SYSTEM
-
CREATE OR REPLACE SPATIAL REFERENCE SYSTEM
-
DROP SPATIAL REFERENCE SYSTEM
目前,若没有此权限(或 SUPER 权限)的情况下执行以上列出的任何语句,都会引发错误:
Error number: 6427; Symbol: ER_CMD_NEED_SUPER_OR_CREATE_SPATIAL_REFERENCE_SYSTEM; SQLSTATE: HY000 Message: You need the SUPER or CREATE_SPATIAL_REFERENCE_SYSTEM privilege for command '%s'
更多信息:https://dev.mysql.com/doc/refman/9.2/en/privileges-provided.html
JavaScript 库
多语言引擎组件(MLE)现在支持可重用的 JavaScript 库,其中包含可以从其他 JavaScript 存储程序调用的函数。此类函数必须使用导出 keyword 标记为可导入。
函数库可以使用 MySQL 9.2.0 中添加的 CREATE LIBRARY
和 DROP LIBRARY SQL
语句进行管理;它们可以包含在其他存储的 JavaScript 程序中,并在同一版本中添加 USING
子句到 CREATE FUNCTION
和 CREATE PROCEDURE
;USING
支持一个或多个库名称的列表。
CREATE LIBRARY
语句在给定数据库中创建一个新的 JavaScript 库,给定一个或多个 JavaScript 函数的代码。JavaScript 代码是在创建时解析并检查有效性;如果代码包含任何错误,则拒绝 CREATE LIBRARY
。DROP LIBRARY
删除给定的 JavaScript 库。
更多信息:https://dev.mysql.com/doc/refman/9.2/en/srjs-libraries.html
用于 JS 的 SQL 存储例程和会话变量 API
MySQL 9.2.0 及以上版本的 MLE 组件支持访问从 JavaScript 例程到用户定义的函数,过程和变量。
现在可以使用 Schema 方法访问 MySQL 存储的函数和过程 getFunction()
和 getProcedure()
的这些函数中的每一个都返回一个可以使用参数 Function 对象。
此外,现在可以访问 MySQL 用户变量直接作为 JavaScript 全局变量的属性 Session 对象。JavaScript 访问 Session Variables,了解更多信息 信息和示例。
MySQL 9.2.0 版本还增加了对直接访问多个 MySQL 内置函数的支持,如下所示:
-
rand()
:等同于 MySQLRAND()
-
sleep()
:等同于 MySQLSLEEP()
-
uuid()
:等同于 MySQLUUID()
-
isUUID()
:等同于 MySQLIS_UUID()
所有这些函数都可以作为全局 MySQL 对象的方法调用。
更多信息: https://dev.mysql.com/doc/refman/9.2/en/srjsapi-mysql.html
JavaScript 事务 API
从 MySQL 9.2.0 开始,MLE 组件提供了一个 JavaScript MySQL 事务 API,它执行大多数 MySQL 事务性 SQL 语句的操作,例如 作为 START TRANSACTION
,COMMIT
、ROLLBACK
和 SET AUTOCOMMIT
。对 Savepoints 也支持。
这项工作还实现了一个 SqlError 对象。
更多信息:https://dev.mysql.com/doc/refman/9.2/en/srjsapi-transactions.html
JavaScript ENUM 和 SET 支持
MySQL 9.2.0 及更高版本中的 JavaScript 存储例程的参数支持 MySQL 的 ENUM 和 SET 类型。
更多信息: https://dev.mysql.com/doc/refman/9.2/en/srjs-data-arguments.html#srjs-enum-set-conversion
EXPLAIN FORMAT=JSON
MySQL 9.2.0 在输出中添加格式版本信息 EXPLAIN FORMAT=JSON
设置 JSON 格式版本时设置为 2。
要设置格式版本,设置 explain_json_format_version=2
。输出如下:
mysql> EXPLAIN FORMAT=JSON SELECT 1\G *************************** 1. row *************************** EXPLAIN: { "query": "/* select#1 */ select 1 AS `1`", "query_plan": { "operation": "Rows fetched before execution", "access_type": "rows_fetched_before_execution", "estimated_rows": 1.0, "estimated_total_cost": 0.0, "estimated_first_row_cost": 0.0 }, "query_type": "select", "json_schema_version": "2.0" } 1 row in set (0.00 sec)
此语句的输出不包含任何格式 version 信息时 explain_json_format_version
为 1,如下所示:
mysql> SET explain_json_format_version=1; Query OK, 0 rows affected (0.00 sec) mysql> SELECT @@explain_json_format_version; +-------------------------------+ | @@explain_json_format_version | +-------------------------------+ | 1 | +-------------------------------+ 1 row in set (0.00 sec) mysql> EXPLAIN FORMAT=JSON SELECT 1\G *************************** 1. row *************************** EXPLAIN: { "query_block": { "select_id": 1, "message": "No tables used" } } 1 row in set, 1 warning (0.00 sec)
更多信息:https://dev.mysql.com/doc/refman/9.2/en/explain.html#explain-execution-plan
2弃用的功能
以下功能在 MySQL 9.2 中已弃用 ,并且可能会在未来的系列中删除。替代方案如下所示,请尽快更新。
对于使用 MySQL 9.2 中已弃用的功能且已在更高版本的 MySQL 版本中删除的应用程序,语句在从 MySQL 9.2 源复制到运行更高版本的副本时可能会失败,或者可能对源和副本产生不同的影响。为避免此类问题,应修改使用 9.2 中已弃用功能的应用程序以避免这些问题,并尽可能使用替代方法。
函数(已启用)
-
version_tokens_delete()
-
version_tokens_edit()
-
version_tokens_lock_exclusive()
-
version_tokens_lock_shared()
-
version_tokens_set()
-
version_tokens_show()
-
version_tokens_unlock()
权限
- VERSION_TOKEN_ADMIN
系统变量
-
version_tokens_session
-
version_tokens_session_number
3删除的功能
以下功能已过时,并已在 MySQL 9.2.0 中删除。
关键字限制
BINLOG 关键字现在受到限制,不能再作为 MySQL 存储例程或存储函数中的标签使用。在升级到 MySQL 9.2 之前,您应该相应地更新任何受影响的应用程序。
更多信息:https://dev.mysql.com/doc/refman/9.2/en/keywkeywordsords.html
还没有评论,来说两句吧...