Se ha publicado la versión de la base de datos MariaDB 12.2.2, que se marca como la primera versión estable de la rama 12.2. La rama MariaDB 12.2 se ha clasificado como lanzamientos intermedios (rolling), continúa el desarrollo gradual de funcionalidades y sustituye a la rama MariaDB 12.1. Al mismo tiempo, se ha publicado la versión MariaDB 12.3.1 con una nueva implementación de binlog, que tiene el estado de candidato para lanzamientos de la futura rama LTS. La rama MariaDB 12.2 será mantenida hasta que se forme la versión 12.3.2.
El proyecto de MaríaDB desarrolla una bifurcación de MySQL, que mantiene la compatibilidad y se diferencia por la integración de motores de almacenamiento adicionales y capacidades ampliadas. El desarrollo de MaríaDB es supervisado por la organización independiente Fundación MaríaDB, en conformidad con un proceso de desarrollo abierto y transparente, que no depende de fabricantes individuales. MaríaDB se distribuye en lugar de MySQL en muchas distribuciones de Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) y se ha implementado en grandes proyectos como Wikipedia, Google Cloud SQL y Nimbuzz.
Entre los cambios en la rama MariaDB 12.2:
- Se han implementado las funciones TO_NUMBER (convierte una cadena en número) y TRUNC (recorta una fecha, por ejemplo, a la hora, el día, el mes o el año) en modo de compatibilidad con la base de datos Oracle.
- Al realizar operaciones de unión de tablas (JOIN) se implementó una optimización que considera la unicidad de las filas en subconsultas con la expresión «GROUP BY» para una previsión más precisa del número de filas resultantes (out_rows) y la correcta aplicación de índices.
- Se han añadido nuevas opciones de control para el optimizador ROWID_FILTER/NO_ROWID_FILTER e INDEX_MERGE/NO_INDEX_MERGE, así como la posibilidad de especificar nombres de bloques implícitamente en las consultas (se pueden aplicar opciones de optimización de manera puntual a partes de las consultas, refiriéndose a ellas por los nombres «select#N», donde N es el número secuencial del bloque). Por ejemplo: «select /*+ JOIN_ORDER(@»select#2″ twenty,ten) */ ….».
- Se han levantado las restricciones sobre el nivel de anidamiento de estructuras en funciones para trabajar con JSON (se eliminó el límite JSON_DEPTH_LIMIT, que anteriormente tenía un valor de 32).
- Se ha añadido la tabla TRIGGERED_UPDATE_COLUMNS en el esquema INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), que muestra las columnas que se modifican al activarse un desencadenador.
- En la tabla PARAMETERS en el esquema INFORMATION_SCHEMA se ha implementado la columna PARAMETER_DEFAULT, que contiene los valores predeterminados de los parámetros de los procedimientos almacenados.
- Se ha implementado un soporte experimental para la expresión «CREATE GLOBAL TEMPORARY TABLE» para crear tablas temporales globales. Tales tablas temporales se eliminan al finalizar la sesión y son visibles para todos los usuarios, pero contienen datos individuales para cada usuario.
- Se ha propuesto en fase de prueba una mejorada compatibilidad de replicación entre tablas con estructuras diferentes.
Fuente: opennet.ru
