Compania Oracle a format un nou ram al SGBD MySQL 9.3.0. Versiunile MySQL Community Server 9.3.0 sunt pregătite pentru toate principalele distribuții Linux, FreeBSD, macOS și Windows. Conform noului model de lansare implementat în 2023, MySQL 9.3 este catalogat ca parte a ramurilor „Innovation”. Ramurile de Innovation sunt recomandate celor care doresc să acceseze mai devreme funcționalități noi, fiind publicate la fiecare 3 luni și susținute numai până la lansarea următoarei versiuni majore (de exemplu, după apariția ramurii 9.3, suportul pentru ramura 9.2 este întrerupt). Vara se preconizează formarea unei versiuni LTS 9.4, recomandată pentru implementări care necesită predictibilitate și conservarea unui comportament stabil pe termen lung. Următoarea ramură de Innovation va fi MySQL 10.0.
Principalele modificări în MySQL 9.3:
- Utilitarul mysqldump a fost îmbogățit cu opțiunea „—users” pentru a crea dump-uri logice cu informații despre toate conturile de utilizator, prezentate prin expresiile SQL „CREATE USER” și „GRANT”. Opțiunea „—add-drop-user” este disponibilă pentru a insera expresia „DROP USER” înainte de „CREATE USER”, iar pentru a selecta în mod specific anumiți utilizatori în dump sunt disponibile opțiunile „—include-user=user@host” și „—exclude-user=user@host”, care pot fi specificate de mai multe ori.
- În motorul MLE (Componenta Motorului Multilingv), care permite utilizarea unor coduri în proceduri și funcții stocate în alte limbaje decât SQL, s-a îmbunătățit suportul pentru JavaScript. Pentru procedurile stocate în JavaScript a fost implementat tipul „DECIMAL”, care poate fi utilizat pentru argumente de intrare și ieșire. Din motive de siguranță, tipul DECIMAL din MySQL este convertit în tipul „String” din JavaScript, dar acest comportament poate fi suprascris prin comanda ‘SELECT mle_set_session_state(‘{„decimal_type”:„Number”}’)’, după care va fi folosit tipul „Number” din JavaScript. Conversia la tipul DECIMAL este suportată pentru valori cu tipurile Boolean, Number, String și BigInt din JavaScript.
- În procedurile stocate în JavaScript a fost adăugată suportul pentru setarea parametrilor de localizare, utilizând API-ul JavaScript Intl. De exemplu, pentru a determina localizarea curentă, se pot utiliza proprietățile „Intl.DateTimeFormat().resolvedOptions().locale”, iar pentru a suprascrie localizarea - metoda „toLocaleString()”.
- Funcționalitățile de gestionare a bibliotecilor JavaScript au fost extinse: pentru a modifica lista bibliotecilor importate, acum se pot folosi expresiile „ALTER PROCEDURE” și „ALTER FUNCTION”. A fost adăugată posibilitatea utilizării expresiei „ALTER LIBRARY” pentru a adăuga, elimina sau modifica comentariul SQL al bibliotecii. Pentru a obține informații despre bibliotecă, a fost implementată expresia „SHOW LIBRARY STATUS”.
- A fost adăugată suport pentru încărcarea dinamică a bibliotecilor JavaScript. Pentru a importa dinamic o bibliotecă, trebuie utilizat cuvântul cheie „await”, de exemplu „let module = await import(‘/db1/lib_${object_type}’)”.
- Au fost extinse optimizările interogărilor care folosesc operatori de comparare cuantificați. Pe lângă suportul pentru operatorii „=ANY” și „ALL”, în noua versiune a fost adăugat suport pentru operatorii „>ANY”, „>=ANY”, „<ANY”, „ALL”, „>=ALL”, „<ALL” și „<=ALL”.
- Pluginul „version_tokens”, anterior declarat învechit, a fost eliminat.
- Este interzisă setarea valorii 0 în variabila de sistem replica_parallel_workers.
- Au fost remediate 28 de vulnerabilități, dintre care 26 pot fi exploatate de la distanță în prezența accesului pentru a trimite cereri către SGBD. Cele șase probleme cele mai grave au un nivel de severitate de 6.5 și sunt legate de vulnerabilități în motorul InnoDB, parser și optimizer. Vulnerabilitățile mai puțin grave afectează mysqldump, InnoDB, optimizer, DDL, UDF, parser și sistemul de replicare.
Sursa: opennet.ro
