MySQL 9.2, широко распространённая система управления реляционными базами данных с открытым исходным кодом, содержит несколько новых функций, а также отменяет и удаляет некоторые другие, предоставляя разработчикам и администраторам баз данных расширенные возможности, улучшенную безопасность и удобство использования.
В MySQL 9.2.0 появилась новая привилегия CREATE_SPATIAL_REFERENCE_SYSTEM, которая позволяет пользователям выполнять такие операторы, как «CREATE SPATIAL REFERENCE SYSTEM», «CREATE OR REPLACE SPATIAL REFERENCE SYSTEM» и «DROP SPATIAL REFERENCE SYSTEM».
Однако при выполнении этих команд без этой привилегии (или привилегии SUPER) возникает ошибка. Хотя привилегию SUPER по-прежнему можно использовать для выполнения этих команд, разработчикам следует считать такое использование устаревшим и соответствующим образом планировать переход.
Что касается библиотек JavaScript, то компонент многоязычного движка MySQL (MLE) теперь поддерживает библиотеки JavaScript многократного использования, что упрощает обмен функциями JavaScript и управление ими в разных хранимых программах. Другими словами, теперь вы можете эффективно организовывать свой код в модули многократного использования с помощью операторов CREATE LIBRARY и DROP LIBRARY.
Кроме того, библиотеки JavaScript можно включать в другие хранимые программы с помощью нового предложения USING
в «CREATE FUNCTION» или «CREATE PROCEDURE». Более того, в MySQL 9.2.0 есть удобный оператор «SHOW CREATE LIBRARY» для получения кода существующих библиотек, а также две новые таблицы информационной схемы — LIBRARIES и ROUTINE_LIBRARIES — для отслеживания и управления этими ресурсами JavaScript.
Компонент MLE расширяет возможности, позволяя программам JavaScript вызывать хранимые в MySQL функции, процедуры и пользовательские переменные сеанса. Теперь JavaScript может вызывать функции или процедуры MySQL с помощью таких методов, как getFunction()
и getProcedure()
.
Также стоит отметить, что теперь к переменным сеанса можно получить прямой доступ через глобальный объект Session
в JavaScript. В версии 9.2 также реализован прямой доступ к встроенным функциям MySQL, таким как rand()
, sleep()
, uuid()
и isUUID()
через глобальный объект Mysql
.
Поддержка транзакций — ещё одно интересное дополнение: MySQL 9.2 предоставляет транзакционный API на JavaScript, который соответствует стандартным командам SQL в MySQL, таким как START TRANSACTION
, COMMIT
, ROLLBACK
и SET AUTOCOMMIT
. Также включены точки сохранения. В дополнение к функциям транзакций предоставляется объект SqlError, обеспечивающий надёжную обработку ошибок в программах на JavaScript.
Типы данных ENUM и SET в MySQL теперь распознаются в хранимых процедурах JavaScript, что позволяет легко преобразовывать их друг в друга. Если ваше приложение использует эти типы, теперь вы можете работать с ними напрямую в JavaScript без сложных преобразований.
В MySQL 9.2 в выводе EXPLAIN FORMAT=JSON
появляется информация о версии формата, если для системной переменной «explain_json_format_version» установлено значение 2. Это дополнение помогает разработчикам различать разные форматы вывода JSON и соответствующим образом адаптировать инструменты или скрипты. Если версия формата равна 1, в результате EXPLAIN отсутствует информация о версии для обеспечения совместимости со старыми процессами.
Помимо новых дополнений, упомянутых выше, в MySQL 9.2 несколько функций помечены как устаревшие. Оператор FLUSH PRIVILEGES, который долгое время использовался для перезагрузки таблиц разрешений, теперь устарел. Плагин Version Tokens также будет удалён в следующем выпуске.
В то же время в новой версии полностью удалены некоторые элементы, ранее доступные в версии 9.1, поэтому разработчикам следует учитывать их отсутствие при обновлении или репликации. Например, ключевое слово BINLOG больше нельзя использовать без кавычек в хранимых процедурах.
Для получения более подробной информации ознакомьтесь с примечаниями к выпуску или здесь, чтобы узнать обо всех новинках MySQL 9.2.