Выпуск СУБД MySQL 9.2.0

Компания Oracle сформировала новую ветку СУБД MySQL 9.2.0. Сборки MySQL Community Server 9.2.0 подготовлены для всех основных дистрибутивов Linux, FreeBSD, macOS и Windows. В рамках внедрённой в 2023 году новой модели формирования релизов, MySQL 9.2 отнесён к веткам “Innovation”, к которым также будет отнесён следующий значительный релиз MySQL 9.3. Innovation-ветки рекомендованы для тех, кто хочет раньше получать доступ к новой функциональности, публикуются каждые 3 месяца и поддерживаются только до публикации следующего значительного релиза (например, после появления ветки 9.2 прекращена поддержка ветки 9.1). Летом планируют сформировать LTS-релиз, рекомендованный для внедрений, которым необходима предсказуемость и длительное сохранение неизменного поведения. Следом за LTS-веткой будет сформирована новая Innovation-ветка – MySQL 10.0.

Основные изменения в MySQL 9.2:

  • В движок MLE (Multilingual Engine Component), позволяющий использовать в хранимых процедурах и функциях код на языках, отличных от SQL, добавлена поддержка повторно используемых библиотек на языке JavaScript. Функции из подобных библиотек могут вызываться из хранимых процедур на языке JavaScript, но должны быть явно помечены как импортируемые при помощи ключевого слова “export”. Для управления подключением JavaScript-библиотек добавлены новые
    SQL-выражения “CREATE LIBRARY” и “DROP LIBRARY“. Для просмотра списка доступных JavaScript-библиотек добавлено выражение “SHOW CREATE LIBRARY“. Информация о JavaScript-библиотеках отражается в системной таблице “LIBRARIES”, а о хранимых процедурах, использующих подобные библиотек, в таблице “ROUTINE_LIBRARIES”. Подключение библиотеки в хранимой процедуре осуществляется через указание списка библиотек в выражении “USING”.
  • Добавлен API для доступа к хранимым процедурам, функциям и сессионным переменным из кода на языке JavaScript. Для обращения к функциям MySQL добавлен метод getFunction(), а к хранимым процедурам – метод getProcedure(), возвращающие JavaScript-объект Function, который может быть запущен с аргументами. Обращение к переменным осуществляется напрямую как к свойствам JavaScript-объекта Session. Дополнительно добавлена возможность прямого доступа ко встроенным функциям rand(), sleep(), uuid() и isUUID(), которые аналогичны одноимённым SQL-функциям.
  • Добавлен API для работы с транзакциями из JavaScript, позволяющий выполнять действия большинства SQL-выражений для работы с транзакциями, таких как “START TRANSACTION”, “COMMIT”, “ROLLBACK” и “SET AUTOCOMMIT”.
  • Добавлена возможность использования MySQL-типов ENUM и SET в аргументах хранимых процедур, написанных на JavaScript
  • Добавлена привилегия CREATE_SPATIAL_REFERENCE_SYSTEM, при помощи которой можно управлять возможностью создания и удаления определений пространственной привязки данных геоинформационных систем. Наличие данной привилегии или привилегии SUPER теперь обязательно для выполнения выражений “CREATE SPATIAL REFERENCE SYSTEM”, “CREATE OR REPLACE SPATIAL REFERENCE SYSTEM” и “DROP SPATIAL REFERENCE SYSTEM”.
  • В вывод “EXPLAIN FORMAT=JSON” добавлена информация о версии формата JSON. Для выставления версии формата JSON следует использовать переменную explain_json_format_version (“SET explain_json_format_version=1|2”).
  • Объявлены устаревшими: выражение “FLUSH PRIVILEGES“, команды “mysqladmin flush-privileges” и “mysqladmin reload”, плагин “version_tokens“.
  • Прекращена поддержка ключевого слова BINLOG.
  • Устранены 32 уязвимости, из которых 3 могут быть эксплуатированы удалённо. Две наиболее серьёзные проблемы имеют уровень опасности 9.1 и связаны с уязвимостями в компонентах Kerberos и Curl. Менее опасные уязвимости затрагивают InnoDB, Thread Pooling, DDL, оптимизатор, парсер и систему аутентификации.
Release. Ссылка here.