Společnost Oracle vytvořila novou větev databázového systému MySQL 9.1.0. Sestavení MySQL Community Server 9.1.0 byla připravena pro všechny hlavní distribuce Linuxu, FreeBSD, macOS a Windows. V rámci nové modelu vydávání, který byl zaveden minulý rok, byla MySQL 9.1 zařazena do větve „Innovation“, která bude zahrnovat také následující významné vydání MySQL 9.2. Větve Innovation jsou doporučeny pro uživatele, kteří chtějí dříve přistupovat k novým funkcím, vydávají se každé 3 měsíce a jsou podporovány pouze do doby vydání dalšího významného vydání (například po vytvoření větve 9.1 byla ukončena podpora větve 9.0). V létě příštího roku se plánuje vytvoření LTS vydání, které je doporučeno pro nasazení vyžadující předvídatelnost a dlouhodobé zachování neměnného chování. Po LTS větvi bude vytvořena nová větev Innovation — MySQL 10.0.
Hlavní změny v MySQL 9.1:
- Do operace „CREATE VIEW“ byla přidána podpora výrazu „IF NOT EXISTS“, což umožňuje vytvořit zobrazení pouze tehdy, pokud zobrazení se zadaným názvem ještě neexistuje, a vyhnout se vracení chyby, pokud již bylo zobrazení vytvořeno.
- Bylo zastaveno načítání triggerů při provádění operací, které se týkají pouze čtení. Dříve se triggery načítaly při jakémkoli přístupu k tabulce, což vedlo k nadměrné spotřebě paměti a zátěži CPU v situacích, kdy se triggery nepoužívaly (například při provádění SELECT dotazů). V MySQL 9.1 je zpracování a načítání triggerů rozděleno do dvou fází: čtení metadat o triggeru a analýza + provádění triggeru. Data získaná v první fázi jsou uložena jednou a poté společně používána v různých instancích triggeru. Analýza a provádění triggeru se provádí pouze pro výrazy, které vedou ke změně dat. Kromě toho, aby se snížila spotřeba paměti, byla namísto statického udělování bufferů pro zpracování chyb v triggerech zavedena dynamická alokace paměti podle potřeby.
- Byl rozšířen výstup operace „EXPLAIN“, ve kterém jsou nyní zobrazeny informace o využití vícerozměrného čtení (multi-range) a použití strategie semi-join, při které se při operacích JOIN zpracovávají řádky pouze z jedné tabulky.
- Bylo zajištěno atomické provádění operací „CREATE DATABASE“ a „DROP DATABASE“ pro ochranu před selháními v případě havarijního ukončení nebo výskytu chyb na úrovni souborového systému při provádění těchto operací. Například dříve při havarijním ukončení „CREATE DATABASE“ mohla vzniknout neúplná nefunkční struktura úložiště DB, jejíž vyčištění vyžadovalo ruční zásah.
- Ve psaných na JavaScript uložených procedurách byla zajištěna podpora typu VECTOR. Data s tímto typem mohou nyní být předávána jako vstupní a návratové parametry.
- Byla přidána možnost autentizace při připojení k SÚBD pomocí protokolu OpenID Connect.
- Bylo odstraněno 27 zranitelností, z nichž nejvážnější (CVE-2024-5535) byla klasifikována jako kritická (9.1 z 10). Zranitelnost může být zneužita vzdáleně bez ověření. Problém je způsoben čtením dat z oblasti mimo vymezený buffer v knihovně OpenSSL a vede k havarijnímu ukončení nebo úniku obsahu paměti v odpovědi po připojení s serverem s uvedením nesprávných parametrů protokolu.
Zdroj: opennet.ru
