Spoločnosť Oracle vytvorila novú vetvu databázového systému MySQL 9.3.0. Verzie MySQL Community Server 9.3.0 sú pripravené pre všetky hlavné distribúcie Linuxu, FreeBSD, macOS a Windows. V súlade s novým modelom uvoľňovania, ktorý bol implementovaný v roku 2023, je MySQL 9.3 zaradený do vetiev „Innovation“. Innovation vetvy sú odporúčané pre tých, ktorí chcú skôr získať prístup k novej funkcionalite, publikujú sa každé 3 mesiace a sú podporované iba do publikácie nasledujúceho významného uvoľnenia (napríklad po vydaní vetvy 9.3 sa ukončí podpora vetvy 9.2). V lete sa plánuje vytvorenie LTS uvoľnenia 9.4, ktoré je odporúčané pre nasadenia, ktoré potrebujú predvídateľnosť a dlhodobé zachovanie nemenného správania. Po LTS vetve bude vytvorená nová vetva Innovation – MySQL 10.0.
Hlavné zmeny v MySQL 9.3:
- Do nástroja mysqldump bola pridaná možnosť „—users“ na vytváranie logických výpisov so všetkými informáciami o účtoch, ktoré sú generované prostredníctvom SQL výrazov „CREATE USER“ a „GRANT“. Na vloženie výrazu „DROP USER“ pred „CREATE USER“ je k dispozícii možnosť „—add-drop-user“ a na selektívne odrážanie jednotlivých používateľov vo výpise sú k dispozícii možnosti „—include-user=user@host“ a „—exclude-user=user@host“, ktoré je možné uvádzať niekoľkokrát.
- V engíne MLE (Multilingual Engine Component), ktorý umožňuje používať kód v procedúrach a funkciách v iných jazykov než SQL, bola vylepšená podpora JavaScriptu. Pre procedúry na jazyku JavaScript bol implementovaný typ „DECIMAL“, ktorý je možné použiť pre vstupné a návratové argumenty. Predvolene sa pre bezpečnosť MySQL typ DECIMAL konvertuje na JavaScript typ „String“, ale toto správanie je možné predefinovať príkazom 'SELECT mle_set_session_state('{"decimal_type":"Number"}')', po ktorom sa použije JavaScript typ „Number“. Podporuje sa pretypovanie na typ DECIMAL hodnôt s JavaScript typmi Boolean, Number, String a BigInt.
- Do procedúr na JavaScript bola pridaná podpora na nastavovanie parametrov lokalizácie pomocou JavaScript API Intl. Napríklad na určenie aktuálnej lokalizácie je možné použiť vlastnosti „Intl.DateTimeFormat().resolvedOptions().locale“, a na predefinovanie lokalizácie metódu „toLocaleString().“
- Rozšírené možnosti správy JavaScript knižníc: na zmenu zoznamu importovaných knižníc je teraz možné použiť výrazy „ALTER PROCEDURE“ a „ALTER FUNCTION“. Pridaná je možnosť použitia výrazu „ALTER LIBRARY“ na pridanie, odstránenie alebo zmenu SQL komentára v knižnici. Na získanie informácií o knižnici je implementovaný výraz „SHOW LIBRARY STATUS“.
- Pridaná podpora dynamického načítania JavaScript knižníc. Na dynamický import knižnice by sa malo použiť kľúčové slovo „await“, napríklad „let module = await import(‘/db1/lib_${object_type}’)“.
- Rozšírené optimalizácie dotazov využívajúcich kvantifikované porovnávacie operátory. Okrem podpory operátorov „=ANY“ a „ALL“ pri optimalizácii poddotazov je v novej verzii pridaná podpora operátorov „>ANY“, „>=ANY“, „<ANY“, „ALL“, „>=ALL“, „<ALL“ a „<=ALL“.
- Odstránený plugin „version_tokens“, ktorý bol predtým vyhlásený za zastaraný.
- Zakázané je nastavenie hodnoty 0 v systémovej premennej replica_parallel_workers.
- Odstránených bolo 28 zraniteľností, z ktorých 26 môže byť zneužitých na diaľku, ak existuje prístup na odosielanie požiadaviek na DBMS. Šesť najzávažnejších problémov má úroveň nebezpečenstva 6.5 a súvisí so zraniteľnosťami v engíne InnoDB, parseri a optimalizátore. Menej závažné zraniteľnosti sa dotýkajú mysqldump, InnoDB, optimalizátora, DDL, UDF, parseru a systému replikácie.
Zdroj: opennet.ru
