Компанията 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
