Firma Oracle utworzyła nową gałąź bazy danych MySQL 9.2.0. Kompilacje MySQL Community Server 9.2.0 są dostępne dla wszystkich głównych dystrybucji Linuxa, FreeBSD, macOS i Windows. W ramach wprowadzonego w 2023 roku nowego modelu wydania, MySQL 9.2 zostało przypisane do gałęzi „Innovation”, do której zostanie również przypisane następne istotne wydanie MySQL 9.3. Gałęzie Innovation są zalecane dla tych, którzy chcą uzyskać wcześniejszy dostęp do nowych funkcji, publikowane są co 3 miesiące i są wspierane tylko do momentu publikacji następnego istotnego wydania (na przykład, po wprowadzeniu gałęzi 9.2 wsparcie dla gałęzi 9.1 zostaje zakończone). Lato planuje utworzenie wydania LTS, które jest zalecane dla wdrożeń wymagających przewidywalności i długoterminowego utrzymania stałego zachowania. Po gałęzi LTS zostanie utworzona nowa gałąź Innovation — MySQL 10.0.
Główne zmiany w MySQL 9.2:
- Do silnika MLE (Multilingual Engine Component), który umożliwia używanie kodu w procedurach i funkcjach w językach innych niż SQL, dodano wsparcie dla wielokrotnego użytku bibliotek w języku JavaScript. Funkcje z takich bibliotek mogą być wywoływane z procedur zapisanych w języku JavaScript, ale muszą być wyraźnie oznaczone jako importowane za pomocą słowa kluczowego „export”. Do zarządzania połączeniem z bibliotekami JavaScript dodano nowe wyrażenia SQL „CREATE LIBRARY” i „DROP LIBRARY”. Aby uzyskać listę dostępnych bibliotek JavaScript, dodano wyrażenie „SHOW CREATE LIBRARY”. Informacje o bibliotekach JavaScript są odzwierciedlane w tabeli systemowej „LIBRARIES”, a o procedurach, które wykorzystują takie biblioteki, w tabeli „ROUTINE_LIBRARIES”. Połączenie biblioteki w procedurze odbywa się poprzez podanie listy bibliotek w wyrażeniu „USING”.
- Dodano interfejs API do dostępu do procedur zdefiniowanych w bazie danych, funkcji oraz zmiennych sesyjnych z kodu napisanego w języku JavaScript. Aby uzyskać dostęp do funkcji MySQL, dodano metodę getFunction(), a do procedur zdefiniowanych w bazie danych — metodę getProcedure(), które zwracają obiekt JavaScript Function, który można uruchomić z argumentami. Dostęp do zmiennych odbywa się bezpośrednio jako do właściwości obiektu JavaScript Session. Dodatkowo dodano możliwość bezpośredniego dostępu do wbudowanych funkcji rand(), sleep(), uuid() i isUUID(), które są odpowiednikami funkcji SQL o tej samej nazwie.
- Dodano API do obsługi transakcji z JavaScript, umożliwiające wykonywanie większości wyrażeń SQL do pracy z transakcjami, takich jak „START TRANSACTION”, „COMMIT”, „ROLLBACK” i „SET AUTOCOMMIT”.
- Dodano możliwość korzystania z typów MySQL ENUM i SET w argumentach procedur składowanych napisanych w JavaScript.
- Dodano uprawnienie CREATE_SPATIAL_REFERENCE_SYSTEM, które pozwala zarządzać możliwością tworzenia i usuwania definicji przestrzennych w systemach informacji geograficznej. Posiadanie tego uprawnienia lub uprawnienia SUPER jest teraz obowiązkowe do wykonania wyrażeń „CREATE SPATIAL REFERENCE SYSTEM”, „CREATE OR REPLACE SPATIAL REFERENCE SYSTEM” i „DROP SPATIAL REFERENCE SYSTEM”.
- Do wyniku „EXPLAIN FORMAT=JSON” dodano informacje o wersji formatu JSON. Aby ustawić wersję formatu JSON, należy użyć zmiennej explain_json_format_version („SET explain_json_format_version=1|2”).
- Zostały uznane za przestarzałe: wyrażenie „FLUSH PRIVILEGES”, polecenia „mysqladmin flush-privileges” i „mysqladmin reload”, wtyczka „version_tokens”.
- Zaprzestano wsparcia dla słowa kluczowego BINLOG.
- Usunięto 32 luki w zabezpieczeniach, z czego 3 mogą być wykorzystywane zdalnie. Dwie najpoważniejsze problemy mają poziom zagrożenia 9.1 i są związane z lukami w komponentach Kerberos i Curl. Mniej niebezpieczne luki dotyczą InnoDB, Thread Pooling, DDL, optymalizatora, analizatora i systemu uwierzytelniania.
Źródło: opennet.ru
