MariaDB [test]> drop table if exists i1, i2, i3;
|
Query OK, 0 rows affected (0.035 sec)
|
|
MariaDB [test]> create table i1 (a decimal(38,38));
|
Query OK, 0 rows affected (0.014 sec)
|
|
MariaDB [test]> insert into i1 values (-0.9999999999999999999999999999999999999), (0.9999999999999999999999999999999999999);
|
Query OK, 2 rows affected (0.004 sec)
|
Records: 2 Duplicates: 0 Warnings: 0
|
|
MariaDB [test]> select format(a,0), format(a,38) from i1;
|
+-------------+-----------------------------------+
|
| format(a,0) | format(a,38) |
|
+-------------+-----------------------------------+
|
| -1 | -1.000000000000000000000000000000 |
|
| 1 | 1.000000000000000000000000000000 |
|
+-------------+-----------------------------------+
|
2 rows in set (0.001 sec)
|
|
MariaDB [test]> create table i2 as select format(a,0) from i1;
|
ERROR 1406 (22001): Data too long for column 'format(a,0)' at row 1
|
MariaDB [test]> create table i3 as select format(a,38) from i1;
|
ERROR 1406 (22001): Data too long for column 'format(a,38)' at row 1
|
MariaDB [test]> delete from i1;
|
Query OK, 2 rows affected (0.003 sec)
|
|
MariaDB [test]> create table i2 as select format(a,0) from i1;
|
Query OK, 0 rows affected (0.016 sec)
|
Records: 0 Duplicates: 0 Warnings: 0
|
|
MariaDB [test]> show create table i2;
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
| Table | Create Table |
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
| i2 | CREATE TABLE `i2` (
|
`format(a,0)` varchar(1) CHARACTER SET utf8 DEFAULT NULL
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
1 row in set (0.000 sec)
|
|
MariaDB [test]> create table i3 as select format(a,38) from i1;
|
Query OK, 0 rows affected (0.017 sec)
|
Records: 0 Duplicates: 0 Warnings: 0
|
|
MariaDB [test]> show create table i3;
|
+-------+-------------------------------------------------------------------------------------------------------------------------+
|
| Table | Create Table |
|
+-------+-------------------------------------------------------------------------------------------------------------------------+
|
| i3 | CREATE TABLE `i3` (
|
`format(a,38)` varchar(32) CHARACTER SET utf8 DEFAULT NULL
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|
+-------+-------------------------------------------------------------------------------------------------------------------------+
|
1 row in set (0.001 sec)
|
MDEV-23118.patch
Attached is a quick patch I wrote to get this working.