Компания 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, оптимизатора, парсера и системата за удостоверяване.
Източник: opennet.ru
