Compania Oracle a creat o nouă ramură a SGBD-ului MySQL 9.1.0. Versiunile MySQL Community Server 9.1.0 sunt pregătite pentru toate principalele distribuții Linux, FreeBSD, macOS și Windows. În cadrul noului model de formare a versiunilor implementat anul trecut, MySQL 9.1 este inclus în ramurile „Innovation”, la care va fi adăugată și următoarea versiune importantă MySQL 9.2. Ramurile Innovation sunt recomandate celor care doresc să aibă acces mai devreme la noi funcționalități, fiind publicate la fiecare 3 luni și susținute doar până la publicarea următoarei versiuni semnificative (de exemplu, după apariția ramurii 9.1, suportul pentru ramura 9.0 a fost întrerupt). Vara următoare se plănuiește formarea unei versiuni LTS, recomandate pentru implementările care necesită predictibilitate și menținerea unui comportament constant pe termen lung. Imediat după ramura LTS va fi formulată o nouă ramură Innovation — MySQL 10.0.
Principalele modificări în MySQL 9.1:
- Operațiunea „CREATE VIEW” a fost extinsă cu suport pentru expresia „IF NOT EXISTS”, permițând Crearea unei vederi doar dacă nu există deja o vedere cu numele specificat, evitând astfel returnarea unei erori dacă vederea a fost deja creată.
- Încărcarea triggerelor a fost oprită în timpul operațiunilor legate doar de citire. Anterior, trigger-urile erau încărcate la orice acces la tabel, ceea ce ducea la consumul de memorie și la crearea unei sarcini pe CPU în situațiile în care trigger-urile nu erau utilizate (de exemplu, la executarea interogărilor SELECT). În MySQL 9.1, procesarea și încărcarea trigger-urilor este împărțită în două etape: citirea metadatelor despre trigger și interpretarea + executarea trigger-ului. Datele obținute în prima etapă sunt păstrate o singură dată și utilizate în comun în diverse instanțe ale trigger-ului. Interpretarea și executarea trigger-ului se realizează doar pentru expresiile care duc la modificarea datelor. În plus, pentru a reduce consumul de memorie, s-a trecut de la alocarea statică a bufferelor pentru gestionarea erorilor în trigger-e la o alocare dinamică a memoriei, după necesitate.
- Ieșirea operațiunii „EXPLAIN” a fost extinsă, acum fiind incluse informații despre utilizarea citirii multi-range și aplicarea strategiei de semi-îmbinare (semijoin), în care în operațiile JOIN sunt prelucrate doar rândurile dintr-un singur tabel.
- Executarea atomică a operațiunilor „CREATE DATABASE” și „DROP DATABASE” este asigurată pentru a proteja împotriva defecțiunilor în cazul închiderilor neașteptate sau apariției erorilor la nivelul sistemului de fișiere în timpul acestor operațiuni. De exemplu, anterior, în cazul unei închideri neașteptate, „CREATE DATABASE” putea genera o structură incompletă și nefuncțională a depozitului de bază de date, care necesita intervenția manuală pentru curățare.
- Procedurile stocate scrise în JavaScript oferă suport pentru tipul VECTOR. Datele cu acest tip pot fi acum transmise în parametrii de intrare și ieșire.
- A fost adăugată posibilitatea autentificării la conectarea la SGBD folosind protocolul OpenID Connect.
- Au fost remediate 27 de vulnerabilități, cea mai gravă dintre ele (CVE-2024-5535) având un nivel critic de severitate (9.1 din 10). Vulnerabilitatea poate fi exploatată de la distanță fără a necesita autentificarea. Problema este cauzată de citirea datelor dintr-o zonă dincolo de bufferul alocat în biblioteca OpenSSL și duce la închideri neașteptate sau scurgeri de conținut din memorie în răspunsul după conectarea cu serverul parametrii incorecți ai protocolului.
Sursa: opennet.ro
