Включите исполнение JavaScript в браузере, чтобы запустить приложение.
22 апр 2025

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

MySQL 9.3 отнесен к веткам "Innovation", которые рекомендуются для тех, кто хочет раньше получать доступ к новой функциональности.

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

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

  • В утилиту mysqldump добавлена опция "--users" для создания логических дампов с информацией о всех учётных записях, выводимой через SQL-выражения "CREATE USER" и "GRANT". Для вставки выражения "DROP USER" перед "CREATE USER" предусмотрена опция "--add-drop-user", а для выборочного отражения в дампе отдельных пользователей - опции "--include-user=user@host" и "--exclude-user=user@host", который можно указывать несколько раз.
  • В движке MLE (Multilingual Engine Component), позволяющем использовать в хранимых процедурах и функциях код на языках, отличных от SQL, улучшена поддержка JavaScript. Для хранимых процедур на языке JavaScript реализован тип "DECIMAL", который можно использовать для входящих и возвращаемых аргументов. По умолчанию для безопасности MySQL-тип DECIMAL преобразуется в JavaScript-тип "String", но данное поведение можно переопределить командой 'SELECT mle_set_session_state('{"decimal_type":"Number"}')', после которой будет использован JavaScript-тип "Number". Поддерживается приведение к типу DECIMAL значений с JavaScript-типами Boolean, Number, String и BigInt.
  • В хранимые процедуры на JavaScript добавлена поддержка выставления параметров локализации, используя JavaScript API Intl. Например для определения текущей локали можно использовать свойства "Intl.DateTimeFormat().resolvedOptions().locale", а для переопределения локали - метод "toLocaleString()".
  • Расширены возможности для управления библиотеками JavaScript: для изменения списка импортируемых библиотек теперь можно использовать выражения "ALTER PROCEDURE" и "ALTER FUNCTION". Добавлена возможность использования выражения "ALTER LIBRARY" для добавления, удаления или изменения SQL-комментария к библиотеке. Для получения сведений о библиотеке реализовано выражение "SHOW LIBRARY STATUS".
  • Добавлена поддержка динамической загрузки JavaScript-библиотек. Для динамического импорта библиотеки следует использовать ключевое слово "await", например "let module = await import('/db1/lib_${object_type}')".
  • Расширены оптимизации запросов, использующих квантифицированные операторы сравнения. Помимо поддержки операторов "=ANY" и "<>ALL" при оптимизации подзапросов в новой версии добавлена поддержка операторов ">ANY", ">=ANY", "<ANY", "<=ANY", ">ALL", ">=ALL", "<ALL" и "<=ALL".
  • Удален плагин "version_tokens", ранее объявленный устаревшим.
  • Запрещено выставление значения 0 в системную переменную replica_parallel_workers.
  • Устранено 28 уязвимостей, из которых 26 могут быть эксплуатированы удалённо при наличии доступа для отправки запросов к СУБД. Шесть наиболее серьезных проблем имеют уровень опасности 6.5 и связаны с уязвимостями в движке InnoDB, парсере и оптимизаторе. Менее опасные уязвимости затрагивают mysqldump, InnoDB, оптимизатор, DDL, UDF, парсер и систему репликации.

Источник