Пускането на СУБД MySQL 9.3.0

Компания Oracle създаде нов клон на СУБД MySQL 9.3.0. Версиите на MySQL Community Server 9.3.0 са подготвени за всички основни дистрибуции на Linux, FreeBSD, macOS и Windows. В съответствие с новата модел за издаване на версии, въведен през 2023 г., MySQL 9.3 е класифициран в клона на „Иновации“. Иновационните клонове са препоръчителни за тези, които искат по-ранен достъп до нови функционалности, издават се на всеки 3 месеца и се поддържат само до издаването на следващата значима версия (например, след появата на клона 9.3 поддръжката на клона 9.2 се прекратява). През лятото планират да издадат LTS версия 9.4, препоръчителна за внедрения, които се нуждаят от предсказуемост и дългосрочно запазване на поведението. След LTS клона ще бъде създаден нов клон на иновации — 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“, който може да се използва за входящи и връщащи аргументи. По подразбиране за безопасност типът DECIMAL на MySQL се преобразува в 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“, „ALL“, „>=ALL“, „<ALL“ и „<=ALL“.
  • Плъгинът „version_tokens“, обявен за остарял, е премахнат.
  • Забранено е задаването на стойност 0 в системната променлива replica_parallel_workers.
  • Отстранени са 28 уязвимости, от които 26 могат да бъдат експлоатирани дистанционно с достъп за изпращане на заявки към СУБД. Шест от най-сериозните проблеми имат ниво на опасност 6.5 и са свързани с уязвимости в движка InnoDB, парсера и оптимизатора. По-малко опасните уязвимости засягат mysqldump, InnoDB, оптимизатора, DDL, UDF, парсера и системата за репликация.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster