| limitation) | +--------+----------------------------------------------+-------------------+ | DOUBLE | DYN_COL_DOUBLE | (64 bit | | (M,D)] | | double-precision | | | | floating point) | +--------+----------------------------------------------+-------------------+ | INTEGE | DYN_COL_INT | (variable | | | | length, up to 64 | | | | bit signed | | | | integer) | +--------+----------------------------------------------+-------------------+ | SIGNED | DYN_COL_INT | (variable | | [INTEG | | length, up to 64 | | R] | | bit signed | | | | integer) | +--------+----------------------------------------------+-------------------+ | TIME[( | DYN_COL_TIME | (time (with | | )] | | microseconds, | | | | may be negative) | | | | - 6 bytes) | +--------+----------------------------------------------+-------------------+ | UNSIGN | DYN_COL_UINT | (variable | | D | | length, up to | | [INTEG | | 64bit unsigned | | R] | | integer) | +--------+----------------------------------------------+-------------------+ A Note About Lengths -------------------- If you're running queries like SELECT COLUMN_GET(blob, 'colname' as CHAR) ... without specifying a maximum length (i.e. using #as CHAR#, not as CHAR(n)), MariaDB will report the maximum length of the resultset column to be 53,6870,911 (bytes or characters?) for MariaDB 5.3-10.0.0 and 16,777,216 for MariaDB 10.0.1+. This may cause excessive memory usage in some client libraries, because they try to pre-allocate a buffer of maximum resultset width. If you suspect you're hitting this problem, use CHAR(n) whenever you're using COLUMN_GET in the select list. MariaDB 5.3 vs MariaDB 10.0 --------------------------- The dynamic columns feature was introduced into MariaDB in two steps: * MariaDB 5.3 was the first version to support dynamic columns. Only numbers could be used as column names in this version. * In MariaDB 10.0.1, column names can be either numbers or strings. Also, the COLUMN_JSON and COLUMN_CHECK functions were added. See also Dynamic Columns in MariaDB 10. Client-side API --------------- It is also possible to create or parse dynamic columns blobs on the client side. libmysql client library now includes an API for writing/reading dynamic column blobs. See dynamic-columns-api for details. Limitations ----------- +---------------------------------------------------+------------------------+ | Description | Limit | +---------------------------------------------------+------------------------+ | Max number of columns | 65535 | +---------------------------------------------------+------------------------+ | Max total length of packed dynamic column | max_allowed_packet | | | (1G) | +---------------------------------------------------+------------------------+ URL: https://mariadb.com/kb/en/dynamic-columns/