Firma Oracle utworzyła nową gałąź bazy danych MySQL 9.1.0. Kompilacje MySQL Community Server 9.1.0 są przygotowane dla wszystkich głównych dystrybucji Linux, FreeBSD, macOS i Windows. W ramach wprowadzonego w ubiegłym roku nowego modelu tworzenia wydań, MySQL 9.1 został przypisany do gałęzi „Innovation”, do których również zostanie przypisane następne znaczące wydanie MySQL 9.2. Gałęzie Innovation są zalecane dla tych, którzy chcą wcześnie uzyskać dostęp do nowej funkcjonalności, publikowane są co 3 miesiące i są wspierane tylko do publikacji następnego znaczącego wydania (na przykład, po wydaniu gałęzi 9.1 wsparcie dla gałęzi 9.0 zostało zakończone). Lato przyszłego roku planuje stworzenie wydania LTS, które jest zalecane dla wdrożeń wymagających przewidywalności i długotrwałego zachowania niezmiennego. Wkrótce po gałęzi LTS zostanie utworzona nowa gałąź Innovation — MySQL 10.0.
Główne zmiany w MySQL 9.1:
- Do operacji „CREATE VIEW” dodano wsparcie dla wyrażenia „IF NOT EXISTS”, co pozwala na utworzenie widoku tylko wtedy, gdy widok o podanej nazwie jeszcze nie istnieje, unikając zwracania błędu, jeśli widok już został utworzony.
- Załadowanie wyzwalaczy zostało zatrzymane podczas wykonywania operacji związanych tylko z odczytem. Wcześniej wyzwalacze były ładowane przy każdym dostępie do tabeli, co prowadziło do zużycia pamięci i obciążenia CPU w sytuacjach, gdy wyzwalacze nie były używane (na przykład podczas wykonywania zapytań SELECT). W MySQL 9.1 przetwarzanie i ładowanie wyzwalaczy zostało podzielone na dwa etapy: odczyt metadanych wyzwalacza i analiza oraz wykonanie wyzwalacza. Dane uzyskane w pierwszym etapie są przechowywane jednokrotnie i następnie współdzielone w różnych instancjach wyzwalacza. Analiza i wykonanie wyzwalacza są przeprowadzane tylko dla wyrażeń prowadzących do zmiany danych. Ponadto, w celu zmniejszenia zużycia pamięci, zamiast statycznego przydziału buforów do obsługi błędów w wyzwalaczach wprowadzono dynamiczny przydział pamięci w razie potrzeby.
- Rozszerzono wyjście operacji „EXPLAIN”, w którym teraz wyświetlane są informacje o użyciu odczytu wielopasmowego (multi-range) oraz zastosowaniu strategii półłączenia (semijoin), w której przy operacjach JOIN przetwarzane są wiersze tylko z jednej tabeli.
- Zapewniono atomowe wykonanie operacji „CREATE DATABASE” i „DROP DATABASE” w celu ochrony przed awariami w przypadku nagłego zakończenia lub wystąpienia błędów na poziomie systemu plików podczas wykonywania tych operacji. Na przykład wcześniej, w przypadku nagłego zakończenia, operacja „CREATE DATABASE” mogła utworzyć niekompletną, nieaktywną strukturę magazynu bazy danych, którą trzeba było oczyścić ręcznie.
- W napisanych na JavaScript procedurach składowanych zapewniono obsługę typu VECTOR. Dane o podanym typie mogą teraz być przekazywane w parametrach wejściowych i zwracanych.
- Dodano możliwość uwierzytelniania podczas łączenia z SGBD z wykorzystaniem protokołu OpenID Connect.
- Usunięto 27 podatności, z czego najbardziej poważnej (CVE-2024-5535) przypisano krytyczny poziom zagrożenia (9,1 na 10). Podatność może być wykorzystywana zdalnie bez przechodzenia uwierzytelnienia. Problem wynika z odczytu danych z obszaru poza przydzielonym buforem w bibliotece OpenSSL i prowadzi do awaryjnego zakończenia lub wycieku zawartości pamięci w odpowiedzi po połączeniu z serwerem przy podaniu niepoprawnych parametrów protokołu.
Źródło: opennet.ru
