1.4 Что нового в MySQL 9.2
В этом разделе описывается, что было добавлено, устарело, изменено и удалено в MySQL 9.2 с момента MySQL 9.1. В связанном разделе перечислены параметры и переменные сервера MySQL, которые были добавлены, устарели или удалены в MySQL 9.2; см. Раздел 1.5, «Параметры и переменные сервера и состояния, добавленные, устаревшие или удаленные в MySQL 9.2».
Функции, добавленные или изменённые в MySQL 9.2
Следующие функции были добавлены в MySQL 9.2:
-
Привилегия CREATE_SPATIAL_REFERENCE_SYSTEM. MySQL 9.2.0 вводит привилегию
CREATE_SPATIAL_REFERENCE_SYSTEM, которая позволяет пользователю выполнять любые из следующих операторов:Попытка выполнить любой из перечисленных операторов без этой привилегии (или привилегии
SUPER) теперь вызывает ошибку. Использование привилегииSUPERдля этой цели следует считать устаревшим.Дополнительную информацию см. в разделе 8.2.2, «Привилегии, предоставляемые MySQL».
-
Библиотеки JavaScript. Компонент MLE (см. раздел 7.5.8, «Компонент многоязычного движка (MLE)») теперь поддерживает многократно используемые библиотеки JavaScript, содержащие функции, которые могут быть вызваны из других хранимых JavaScript-программ. Такие функции должны быть помечены как импортируемые с помощью ключевого слова
export. Библиотеки можно управлять с помощью SQL-операторовCREATE LIBRARYиDROP LIBRARY, добавленных в MySQL 9.2.0; они могут быть включены в другие хранимые JavaScript-программы с клаузойUSING, добавленной в том же выпуске вCREATE FUNCTIONиCREATE PROCEDURE;USINGподдерживает список одного или нескольких имён библиотек.Оператор
CREATE LIBRARYсоздает новую библиотеку JavaScript в указанной базе данных, используя код одной или нескольких JavaScript-функций. Код JavaScript анализируется и проверяется на соответствие при создании;CREATE LIBRARYотклоняется, если код содержит ошибки.DROP LIBRARYудаляет заданную библиотеку JavaScript. К функциям библиотек можно обращаться в других хранимых JavaScript-программах, используя обозначениеlibrary_name.function_name. Библиотеки могут быть алиасированы как часть клаузыUSINGсCREATE FUNCTIONилиCREATE PROCEDURE.Вы можете получить код, содержащийся в существующей библиотеке JavaScript, используя оператор
SHOW CREATE LIBRARY, также реализованный в MySQL 9.2.0. Дополнительную информацию о JavaScript-библиотеках можно получить из двух таблиц Information Schema, добавленных в MySQL 9.2.0: таблицаLIBRARIESсодержит информацию о JavaScript-библиотеках; таблицаROUTINE_LIBRARIESсодержит информацию о хранимых процедурах, использующих JavaScript-библиотеки.Количество операторов
CREATE LIBRARY,DROP LIBRARYиSHOW CREATE LIBRARY, которые были выполнены на сервере, можно получить как переменные состоянияCom_create_library,Com_drop_libraryиCom_show_create_libraryсоответственно.Дополнительную информацию см. в разделе 27.3.8, «Использование JavaScript-библиотек».
-
API хранимых SQL-процедур и переменных сеанса для JavaScript. Компонент MLE в MySQL 9.2.0 и более поздних версиях поддерживает доступ из JavaScript-процедур к пользовательским функциям, процедурам и переменным.
Теперь к хранимым функциям и процедурам MySQL можно получить доступ, используя методы
SchemagetFunction()иgetProcedure(). Каждая из этих функций возвращает объектFunction, который можно вызвать с аргументами. Аргумент хранимой функции или параметрINхранимой процедуры можно передать непосредственно; параметрOUTилиINOUTхранимой процедуры требует создания заполнителя (объектаArgument) с помощьюmysql.arg().Кроме того, к переменным пользователей MySQL теперь можно получить прямой доступ как к свойствам глобального объекта JavaScript
Session. Дополнительную информацию и примеры см. в Доступ к переменным сеанса из JavaScript.В выпуске 9.2.0 также добавлена поддержка прямого доступа к нескольким встроенным функциям MySQL, перечисленным здесь:
Все эти функции могут быть вызваны как методы глобального объекта
Mysql.Дополнительную информацию см. в разделе 27.3.6.8, «API хранимых процедур», разделе 27.3.6.10, «Функции MySQL», а также разделе 7.5.8, «Компонент многоязычного движка (MLE)».
-
JavaScript API транзакций. Начиная с MySQL 9.2.0, компонент MLE предоставляет JavaScript API транзакций MySQL, который выполняет действия большинства SQL-операторов MySQL, таких как
START TRANSACTION,COMMIT,ROLLBACKиSET AUTOCOMMIT. Также включена поддержка точек сохранения.Эта работа также реализует объект
SqlError.Дополнительную информацию см. в разделе 27.3.6.9, «JavaScript API транзакций», а также разделе 27.3.6.11, «Объект SqlError».
-
Поддержка JavaScript ENUM и SET. Типы MySQL
ENUMиSETподдерживаются для аргументов хранимых JavaScript-процедур в MySQL 9.2.0 и более поздних версиях.Более подробную информацию, включая правила преобразования между этими типами MySQL и типами JavaScript, см. в Преобразовании в и из MySQL ENUM и SET.
-
Информация о версии EXPLAIN FORMAT=JSON. MySQL 9.2.0 добавляет информацию о версии формата в вывод оператора
EXPLAIN FORMAT=JSON, когда версия формата JSON установлена в 2.Для установки версии формата используйте оператор
SETexplain_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)Вывод этого оператора не содержит информации о версии формата, когда
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)Дополнительную информацию см. в Получение информации о плане выполнения, а также в описании системной переменной
explain_json_format_version.
Функции, устаревшие в MySQL 9.2
Следующие функции устарели в MySQL 9.2 и могут быть удалены в будущих версиях. При наличии альтернатив, приложения должны быть обновлены для использования альтернатив.
Для приложений, использующих устаревшие в MySQL 9.2 функции, которые были удалены в более поздних версиях MySQL, запросы могут завершаться ошибкой при репликации из источника MySQL 9.2 на реплику, работающую на более поздней версии, или могут иметь разные эффекты на источнике и реплике. Для избежания таких проблем, приложения, использующие устаревшие в 9.2 функции, должны быть пересмотрены, чтобы избежать их использования и использовать альтернативы, когда это возможно.
-
FLUSH PRIVILEGES устарело. Запрос
FLUSH PRIVILEGESустарел начиная с MySQL 9.2.0 и вызывает предупреждение при выполнении. Ожидается, что этот запрос будет удален в будущих релизах MySQL.Также устарели следующие конструкции в MySQL 9.2.0:
Права доступа
FLUSH_PRIVILEGES; предоставление этих прав вызывает предупреждение.Команда mysqladmin flush-privileges; выполнение этой команды вызывает предупреждение.
Команда mysqladmin reload; выполнение этой команды вызывает предупреждение.
Кроме того, следующие функции не вызывают предупреждений, но следует рассматривать как устаревшие:
Очистка прав доступа с помощью
SIGHUPОчистка кэша
caching_sha2с помощьюFLUSH PRIVILEGESОчистка прав доступа с помощью mysqladmin refresh
Дополнительную информацию см. в разделе 15.7.8.3, “Запрос FLUSH”.
-
Плагин Version Tokens. Плагин Version Tokens устарел начиная с MySQL 9.2.0 и может быть удален в будущих выпусках MySQL. Попытка установить плагин
version_tokensили запустить сервер с установленным плагином вызывает предупреждение об устаревании. Следующие связанные функции также устарели в MySQL 9.2.0 и вызывают предупреждения об устаревании при каждом вызове:-
Перечисленные здесь функции:
Предоставление прав
VERSION_TOKEN_ADMIN-
Следующие системные переменные сервера:
-
Функции, удаленные в MySQL 9.2
Следующие элементы устарели и были удалены в MySQL 9.2. При наличии альтернатив, приложения должны быть обновлены для использования альтернатив.
Для приложений MySQL 9.1, использующих функции, удалённые в MySQL 9.2, запросы могут завершаться ошибкой при репликации из источника MySQL 9.1 на реплику MySQL 9.2, или могут иметь разные эффекты на источнике и реплике. Для избежания таких проблем, приложения, использующие функции, удаленные в MySQL 9.2, должны быть пересмотрены, чтобы избежать их использования и использовать альтернативы, когда это возможно.
-
Ключевое слово BINLOG теперь ограничено. Ключевое слово
BINLOGтеперь ограничено и больше не может быть использовано без кавычек в качестве метки в хранимой процедуре или функции MySQL. Необходимо обновить все затронутые приложения до обновления на MySQL 9.2.См. раздел 11.3, “Ключевые слова и зарезервированные слова” для получения дополнительной информации.
© 2025 Oracle
Licensed under the GPLv2 License.