Compania Oracle a lansat o nouă ramură a SGBD-ului MySQL 9.2.0. Versiunile MySQL Community Server 9.2.0 sunt pregătite pentru toate distribuțiile majore Linux, FreeBSD, macOS și Windows. În cadrul noului model de creștere a versiunilor implementat în 2023, MySQL 9.2 este clasificat în ramurile «Innovation», la care va fi inclus și următorul lansat major MySQL 9.3. Ramurile Innovation sunt recomandate pentru cei care doresc să acceseze mai devreme noile funcționalități, și sunt publicate la fiecare 3 luni, fiind susținute doar până la lansarea următorului upgrade major (de exemplu, după lansarea ramurii 9.2, suportul pentru ramura 9.1 va înceta). Vara se preconizează lansarea unei versiuni LTS, recomandată pentru implementări care necesită predictibilitate și păstrarea pe termen lung a comportamentului neschimbat. După ramura LTS, va fi creată o nouă ramură Innovation — MySQL 10.0.
Principalele schimbări în MySQL 9.2:
- În motorul MLE (Multilingual Engine Component), care permite utilizarea de cod în proceduri și funcții scrise în limbi diferite de SQL, a fost adăugată suportul pentru biblioteci reutilizabile scrise în JavaScript. Funcțiile din aceste biblioteci pot fi apelate din procedurile stocate scrise în JavaScript, dar trebuie să fie explicit marcate ca fiind importate cu ajutorul cuvântului cheie «export». Au fost adăugate noi expresii SQL pentru gestionarea conectării bibliotecilor JavaScript: «CREATE LIBRARY» și «DROP LIBRARY». Pentru vizualizarea listei bibliotecilor JavaScript disponibile, a fost adăugată expresia «SHOW CREATE LIBRARY». Informațiile despre bibliotecile JavaScript sunt reflectate în tabelul sistemului «LIBRARIES», iar cele despre procedurile stocate care folosesc aceste biblioteci sunt în tabelul «ROUTINE_LIBRARIES». Conectarea bibliotecii într-o procedură stocată se realizează prin specificarea listei de biblioteci în expresia «USING».
- A fost adăugat un API pentru accesarea procedurilor stocate, funcțiilor și variabilelor de sesiune din codul scris în JavaScript. Pentru a accesa funcțiile MySQL a fost adăugată metoda getFunction(), iar pentru procedurile stocate — metoda getProcedure(), care returnează un obiect Function JavaScript ce poate fi executat cu argumente. Accesul la variabile se face direct ca la proprietățile obiectului JavaScript Session. În plus, a fost adăugată posibilitatea de a accesa direct funcțiile încorporate rand(), sleep(), uuid() și isUUID(), care sunt echivalente cu funcțiile SQL cu același nume.
- A fost adăugată o API pentru gestionarea tranzacțiilor din JavaScript, care permite executarea majorității expresiilor SQL pentru gestionarea tranzacțiilor, cum ar fi "START TRANSACTION", "COMMIT", "ROLLBACK" și "SET AUTOCOMMIT".
- A fost adăugată posibilitatea de a utiliza tipurile MySQL ENUM și SET în argumentele procedurilor stocate scrise în JavaScript.
- A fost introdusă privilegia CREATE_SPATIAL_REFERENCE_SYSTEM, care permite gestionarea capacității de a crea și șterge definiții de referință spațială pentru sisteme informaționale geografice. Deținerea acestei privilegii sau a privilegii SUPER este acum obligatorie pentru executarea expresiilor "CREATE SPATIAL REFERENCE SYSTEM", "CREATE OR REPLACE SPATIAL REFERENCE SYSTEM" și "DROP SPATIAL REFERENCE SYSTEM".
- În ieșirea "EXPLAIN FORMAT=JSON" a fost adăugată informația despre versiunea formatului JSON. Pentru a seta versiunea formatului JSON, trebuie utilizată variabila explain_json_format_version ("SET explain_json_format_version=1|2").
- Au fost declarate obsolete: expresia "FLUSH PRIVILEGES", comenzile "mysqladmin flush-privileges" și "mysqladmin reload", pluginul "version_tokens".
- S-a întrerupt suportul pentru cuvântul cheie BINLOG.
- Au fost remediate 32 de vulnerabilități, dintre care 3 pot fi exploatate de la distanță. Cele două probleme cele mai grave au un nivel de pericol de 9.1 și sunt legate de vulnerabilitățile din componentele Kerberos și Curl. Vulnerabilitățile mai puțin periculoase afectează InnoDB, Thread Pooling, DDL, optimizator, parser și sistemul de autentificare.
Sursa: opennet.ro
