Oracle va donar a conèixer fa poc, el llançament de la nova versió de MySQL 9.2 la qual arriba emmarcada dins del model de llançament implementat el 2023, on MySQL 9.2 es classifica com una branca de «Innovation», destinada als que busquen accés d'hora les darreres característiques.
Cal esmentar que per als que desconeixen del nou model de llançaments, han de saber que aquestes versions es publiquen trimestralment i el seu suport s'estén únicament fins a l'arribada de la següent versió important, cosa que implica que, amb la introducció de MySQL 9.2, el suport per a la versió 9.1 s'ha descontinuat.
Principals novetats de MySQL 9.2
Entre les novetats més rellevants que introdueix aquesta nova versió de MySQL 9.2 hi ha la incorporació del motor MLE (Multilingual Engine Component), que ara permet treballar amb biblioteques reutilitzables escrites a JavaScript dins de funcions i procediments emmagatzemats.
Per integrar aquestes biblioteques, s'han de marcar explícitament amb la paraula clau «export», permetent-ne l'ús dins dels procediments de JavaScript. A més, s'han introduït noves declaracions SQL, com «CREATE LIBRARY»i«DROP LIBRARY«, per gestionar les connexions a biblioteques de JavaScript, juntament amb l'expressió SHOW CREATE LIBRARY, que facilita visualitzar la llista de biblioteques disponibles. S'esmenta que la informació relacionada amb aquestes biblioteques i els procediments que les empren es registra a les taules del sistema «LLIBRARIES» i «ROUTINE_LIBRARIES», respectivament. La integració d'una biblioteca en un procediment emmagatzemat es fa a través de l'expressió USING, que especifica les biblioteques a utilitzar.
Una altra de les novetats MySQL 9.2 és el mètode getFunction() permet invocar funcions de MySQL, mentre que getProcedure() facilita l'accés a procediments emmagatzemats, tornant objectes de funció en JavaScript que es poden executar amb arguments. A més, les variables de sessió poden ser manipulades directament com a propietats de l'objecte de sessió a JavaScript. Finalment, s'ha afegit la possibilitat d'utilitzar funcions integrades com ara rand(), sleep(), uuid() i isUUID(), que mantenen un comportament similar als seus equivalents en SQL. Aquestes millores reforcen la versatilitat de MySQL com una eina capaç d'integrar diferents llenguatges de programació al seu ecosistema.
A més, MySQL 9.2 introdueix una API per gestionar transaccions des de JavaScript. Aquesta API permet realitzar operacions comunes sobre transaccions, com ara «START TRANSACTION, COMMIT, ROLLBACK i SET AUTOCOMMIT, facilitant la integració de transaccions dins dels procediments escrits a JavaScript. A més, s'ha habilitat la compatibilitat per utilitzar els tipus MySQL ENUM i SET com a arguments en procediments emmagatzemats escrits en JavaScript, ampliant les possibilitats de treball amb dades de tipus enumerat i conjunt en aquest entorn.
Pel que fa a la gestió de dades espacials, s'ha afegit un nou privilegi anomenat CREATE_SPATIAL_REFERENCE_SYSTEM, que atorga permisos per crear i eliminar definicions de referència espacial, essencials en el context dels sistemes d'informació geogràfica (GIS) Aquest privilegi o el privilegi SUPER ara són requerits per executar les instruccions SQL associades amb la creació i eliminació de sistemes de referència espacial.
Pel que fa a les optimitzacions, MySQL 9.2 ara inclou informació de versió del format JSON a la sortida de l'ordre «EXPLAIN FORMAT=JSON«, el que facilita el treball amb explicacions de consultes. Per controlar la versió del format JSON, es pot utilitzar la variable explain_json_format_version, configurant-la amb els valors 1 o 2 segons calgui.
D'altra banda, algunes característiques han estat descontinuades, incloent:
- L'expressió FLUSH PRIVILEGES
- Les ordres mysqladmin flush-privileges i mysqladmin reload
- El complement version_tokens.
- La paraula clau BINLOG també ha estat eliminada de la versió.
En termes de seguretat, MySQL 9.2 corregeix un total de 32 vulnerabilitats, de les quals 3 podrien ser explotades de manera remota. Els dos problemes més greus, relacionats amb els components Kerberos i Curl, tenen una alta gravetat de 9,1. A més, s'han corregit vulnerabilitats de menor impacte que afecten diversos components del sistema, com InnoDB, l'agrupament de fils (Thread Pooling), l'optimitzador, l'analitzador i el sistema d'autenticació.
Finalment si estàs interessat en poder conèixer més a l'respecte, pots consultar els detalls al següent enllaç.
Obtenir MySQL 9.2
Per aixòs interessats a poder obtenir la nova versió, han de saber que les compilacions de MySQL ja estan disponibles tant per a Linux, FreeBSD, macOS i Windows. Podeu obtenir la nova versió en el següent enllaç.
Per últim i no menys important, val la pena esmentar que Oracle planeja llançar una branca LTS a l'estiu, dissenyada per a implementacions que prioritzen l'estabilitat i la continuïtat a llarg termini. Posteriorment, s'iniciarà una nova branca d'Innovation amb l'arribada de MySQL 10.0.