MySQL 9.2: presenta grandes mejoras para JavaScript, nuevas APIs, correcciones y mas
Oracle dio a conocer hace poco, el lanzamiento de la nueva versión de MySQL 9.2 la cual llega enmarcada dentro del modelo de lanzamiento implementado en 2023, en donde MySQL 9.2 se clasifica como una rama de «Innovation», destinada a quienes buscan acceso temprano a las últimas características.
Cabe mencionar que para quienes desconocen del nuevo modelo de lanzamientos, deben saber que estas versiones se publican trimestralmente y su soporte se extiende únicamente hasta la llegada de la siguiente versión importante, lo que implica que, con la introducción de MySQL 9.2, el soporte para la versión 9.1 se ha descontinuado.
Principales novedades de MySQL 9.2
Entre las novedades más relevantes que introduce esta nueva versión de MySQL 9.2 se encuentra la incorporación del motor MLE (Multilingual Engine Component), que ahora permite trabajar con bibliotecas reutilizables escritas en JavaScript dentro de funciones y procedimientos almacenados.
Para integrar estas bibliotecas, se deben marcar explícitamente con la palabra clave «export», permitiendo su uso dentro de los procedimientos de JavaScript. Además, se han introducido nuevas declaraciones SQL, como «CREATE LIBRARY» y «DROP LIBRARY«, para gestionar las conexiones a bibliotecas de JavaScript, junto con la expresión «SHOW CREATE LIBRARY», que facilita visualizar la lista de bibliotecas disponibles. Se menciona que la información relacionada con estas bibliotecas y los procedimientos que las emplean se registra en las tablas del sistema «LIBRARIES» y «ROUTINE_LIBRARIES», respectivamente. La integración de una biblioteca en un procedimiento almacenado se realiza a través de la expresión «USING», que especifica las bibliotecas a utilizar.
Otra de las novedades MySQL 9.2 es el método getFunction() permite invocar funciones de MySQL, mientras que getProcedure() facilita el acceso a procedimientos almacenados, devolviendo objetos de función en JavaScript que pueden ejecutarse con argumentos. Además, las variables de sesión pueden ser manipuladas directamente como propiedades del objeto de sesión en JavaScript. Por último, se ha añadido la posibilidad de utilizar funciones integradas como rand(), sleep(), uuid() e isUUID(), que mantienen un comportamiento similar a sus equivalentes en SQL. Estas mejoras refuerzan la versatilidad de MySQL como una herramienta capaz de integrar distintos lenguajes de programación en su ecosistema.
Ademas de ello, MySQL 9.2 introduce una API para gestionar transacciones desde JavaScript. Esta API permite realizar operaciones comunes sobre transacciones, tales como «START TRANSACTION», «COMMIT», «ROLLBACK» y «SET AUTOCOMMIT», facilitando la integración de transacciones dentro de los procedimientos escritos en JavaScript. Además, se ha habilitado la compatibilidad para utilizar los tipos MySQL ENUM y SET como argumentos en procedimientos almacenados escritos en JavaScript, ampliando las posibilidades de trabajo con datos de tipo enumerado y conjunto en este entorno.
En cuanto a la gestión de datos espaciales, se ha agregado un nuevo privilegio denominado CREATE_SPATIAL_REFERENCE_SYSTEM, que otorga permisos para crear y eliminar definiciones de referencia espacial, esenciales en el contexto de los sistemas de información geográfica (GIS). Este privilegio o el privilegio SUPER ahora son requeridos para ejecutar las instrucciones SQL asociadas con la creación y eliminación de sistemas de referencia espacial.
En lo que respecta a las optimizaciones, MySQL 9.2 ahora incluye información de versión del formato JSON en la salida del comando «EXPLAIN FORMAT=JSON«, lo que facilita el trabajo con explicaciones de consultas. Para controlar la versión del formato JSON, se puede utilizar la variable explain_json_format_version, configurándola con los valores 1 o 2 según sea necesario.
Por otro lado, algunas características han sido descontinuadas, incluyendo:
- La expresión FLUSH PRIVILEGES
- Los comandos mysqladmin flush-privileges y mysqladmin reload
- El complemento version_tokens.
- La palabra clave BINLOG también ha sido eliminada de la versión.
En términos de seguridad, MySQL 9.2 corrige un total de 32 vulnerabilidades, de las cuales 3 podrían ser explotadas de forma remota. Los dos problemas más graves, relacionados con los componentes Kerberos y Curl, tienen una alta gravedad de 9,1. Además, se han corregido vulnerabilidades de menor impacto que afectan a diversos componentes del sistema, como InnoDB, el agrupamiento de hilos (Thread Pooling), el optimizador, el analizador y el sistema de autenticación.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Obtener MySQL 9.2
Para los interesados en poder obtener la nueva versión, deben saber que las compilaciones de MySQL ya se encuentran disponibles tanto para Linux, FreeBSD, macOS y Windows. Pueden obtener la nueva versión en el siguiente enlace.
Por ultimo y no menos importante, vale la pena mencionar que Oracle planea lanzar una rama LTS en el verano, diseñada para implementaciones que priorizan la estabilidad y la continuidad a largo plazo. Posteriormente, se iniciará una nueva rama de Innovation con la llegada de MySQL 10.0.