Компания Oracle сформировала новую ветку СУБД MySQL 9.0.0. Сборки MySQL Community Server 9.0.0 подготовлены для всех основных дистрибутивов Linux, FreeBSD, macOS и Windows. В рамках внедрённой в прошлом году модели формирования релизов, MySQL 9.0 отнесён к веткам “Innovation”, к которым также будут отнесены следующие значительные релизы MySQL 9.1 и 9.2. Innovation-ветки рекомендованы для тех, кто хочет раньше получать доступ к новой функциональности, публикуются каждые 3 месяца и поддерживаются только до публикации следующего значительного релиза (например, после появления ветки 9.1 будет прекращена поддержка ветки 9.0). Примерно через год планируют сформировать LTS-релиз, который будет рекомендован для внедрений, которым необходима предсказуемость и длительное сохранение неизменного поведения. Следом за LTS-веткой будет сформирована новая Innovation-ветка – MySQL 10.0.
Основные изменения в MySQL 9.0:
- При выполнении конструкции “EXPLAIN ANALYZE INTO” добавлена возможность сохранения вывода в формате JSON в пользовательскую переменную, которая затем может использоваться в качестве аргумента в функциях для работы с JSON. EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
- Разрешено оформление выражений “CREATE EVENT“, “ALTER EVENT” и “DROP EVENT” в виде параметризованных запросов внутри хранимых процедур. Создание параметризованного запроса осуществляется с использованием выражения PREPARE, а выполнение – выражения EXECUTE. CREATE PROCEDURE sp(n INT) BEGIN SET @s1 = “CREATE EVENT e ON SCHEDULE EVERY “; SET @s2 = ” SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 10 SECOND ENDS CURRENT_TIMESTAMP + INTERVAL 2 MINUTE ON COMPLETION PRESERVE DO INSERT INTO d.t VALUES ROW(NULL, NOW(), FLOOR(RAND()*100))”; SET @s = CONCAT(@s1, n, @s2); PREPARE ps FROM @s; EXECUTE ps; DEALLOCATE PREPARE ps; END
- Добавлены две новые системные таблицы, содержащие сведения о системных переменных: variables_metadata – содержит информацию об именах, области действия, типах и диапазонах значений всех поддерживаемых MySQL-сервером системных переменных; global_variable_attributes – содержит значения атрибутов, выставленных для глобальных переменных, таких как offline_mode и read_only.
- Удалён ранее объявленный устаревшим серверный плагин mysql_native_password, обеспечивающий аутентификацию при помощи паролей. Вместо mysql_native_password рекомендуется перейти на использование плагина caching_sha2_password, применяющего для хэширования алгоритм SHA2 вместо SHA1.
- Добавлено 15 переменных для настройки и инспектирования движка MLE (Multilingual Engine Component), позволяющего использовать в хранимых процедурах и функциях код на языках, отличных от SQL.