Columnas dinámicas en MariaDB 10
Contents
MariaDB starting with 10.0.1
MariaDB 10.0.1 introdujo las siguientes mejoras a la dynamic columns función..
Nombre de la columna de soporte
Es posible hacer referencia a la columna de nombres. Los nombres pueden usarse en cualquier lugar donde en MariaDB 5.3 se podría usar sólo cadenas:
- Crear una gota de columna dinámica:
COLUMN_CREATE('int_col', 123 as int, 'double_col', 3.14 as double, 'string_col', 'text-data' as char);
- Establecer un valor de columna:
COLUMN_ADD(dyncol_blob, 'intcol', 1234);
- Obtener un valor de columna:
COLUMN_GET(dynstr, 'column1' as char(10));
- Compruebe si existe una columna
COLUMN_EXISTS(dyncol_blob, 'column_name');
Cambios en el comportamiento
- Columna salida de lista ahora incluye citar:
select column_list(column_create(1, 22, 2, 23)); +------------------------------------------+ | column_list(column_create(1, 22, 2, 23)) | +------------------------------------------+ | `1`,`2` | +------------------------------------------+ select column_list(column_create('column1', 22, 'column2', 23)); +----------------------------------------------------------+ | column_list(column_create('column1', 22, 'column2', 23)) | +----------------------------------------------------------+ | `column1`,`column2` | +----------------------------------------------------------+
- Nombre de columna interpretación ha sido cambiado para que la cadena ya no se convierte en un número. Por lo que algunos trucos "mágicos" no funcionarán más, por ejemplo, "1test" y "1", ahora se convierten en diferentes nombres de columna:
select column_list(column_add(column_create('1a', 22), '1b', 23)); +------------------------------------------------------------+ | column_list(column_add(column_create('1a', 22), '1b', 23)) | +------------------------------------------------------------+ | `1a`,`1b` | +------------------------------------------------------------+
- Ninguno comportamiento antigua:
select column_list(column_add(column_create('1a', 22), '1b', 23)); +------------------------------------------------------------+ | column_list(column_add(column_create('1a', 22), '1b', 23)) | +------------------------------------------------------------+ | 1 | +------------------------------------------------------------+
Funciones nuevas
Las siguientes nuevas funciones se han añadido a las columnas dinámicas en MariaDB 10
COLUMN_CHECK
COLUMN_CHECK se utiliza para comprobar la integridad de una columna. Cuando se encuentra un error no devuelve errores de formato ilegales, pero devuelve falso en su lugar. También comprueba la integridad más a fondo y encuentra errores en las estructuras internas de las columnas dinámicas que no podrían ser encontrados por otras funciones.
select column_check(column_create('column1', 22)); +--------------------------------------------+ | column_check(column_create('column1', 22)) | +--------------------------------------------+ | 1 | +--------------------------------------------+ select column_check('abracadabra'); +-----------------------------+ | column_check('abracadabra') | +-----------------------------+ | 0 | +-----------------------------+
COLUMN_JSON
COLUMN_JSON convierte todo el contenido dinámico registro de la columna a un objeto JSON.
select column_json(column_create('column1', 1, 'column2', "two")); +------------------------------------------------------------+ | column_json(column_create('column1', 1, 'column2', "two")) | +------------------------------------------------------------+ | {"column1":1,"column2":"two"} | +------------------------------------------------------------+
Otros Cambios
- Todas las funciones de la API no tiene el prefijo mariadb_dyncol_ (antiguo dynamic_column_ prefijo es depricated
- API cambiado para ser capaz de trabajar con el nuevo formato (* funciones _named).
- Eliminado la función 'eliminar', porque la supresión podría hacerse mediante la adición de valor NULL.
- 'Time' y 'de fecha y hora' en el nuevo formato se almacenan sin microsegundos si son 0.
- La nueva función agregó a la API (excepto que dos que están representando a las funciones de nivel SQL):
- * 'Desempaquetar' las columnas dinámicas contenido a un matrices de valores y nombres.
- * 3 funciones para obtener cualquier valor de columna como cadena, entero (largo de largo) o de punto flotante (doble).
- Un nuevo tipo de "columna dinámica" fila añadido el nivel API (en la salida de nivel de SQL es una cadena, pero si utiliza funciones de columna dinámicos para construir objetos que se añadirá como valor de columna dinámico) que permiten añadir columnas dinámicas dentro de columnas dinámicas . función JSON representan tales construcciones recursivas correctamente, pero límite de profundidad de la representación como límite implementación actual (internamente profundidad de columnas dinámicas incrustación no está limitado).
Interfaz con Cassandra
Tenga en cuenta que Cassandra ya no está siendo activamente desarrollado.
se añadieron algunos cambios internos para las columnas dinámicas para que puedan servir como interfaz con columnas dinámicas Apache Cassandra. El Cassandra engine puede empacar todas las columnas que no fueron mencionados en la definición de la tabla de interfaz MariaDB e incluso llevar a cambios en los contenidos de columna dinámicos de nuevo a la familia columnas cassandra (el análogo de mesa en Cassandra).