Description:
Hello, dear verification team:
For tablespace export and import, if decimal field of source table and dest table have same precision but different scale, import operation works successfully but data of dest table differs with source table.
Please check `How to repeat` part for detail.
How to repeat:
(1) create table `d1` and `d4` (column b have same precision but different scale)
mysql> create table d1 (id int, b decimal(20,5));
Query OK, 0 rows affected (0.56 sec)
mysql> insert into d1 values (1, 1.003343);
Query OK, 1 row affected, 1 warning (0.22 sec)
mysql> create table d4 (id int, b decimal(20,8));
Query OK, 0 rows affected (0.09 sec)
(2) export, copy and import tablespace from `d1` to `d4`
mysql> alter table d4 discard tablespace;
Query OK, 0 rows affected (0.03 sec)
mysql> flush table d1 for export;
Query OK, 0 rows affected (0.00 sec)
[yxx_git@zxin21 yxx]$ cp d1.cfg d4.cfg
[yxx_git@zxin21 yxx]$ cp d1.ibd d4.ibd
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> alter table d4 import tablespace;
Query OK, 0 rows affected (0.15 sec)
(3) check data, we found that data in table `d4` differs with data in table `d1`
mysql> select * from d4;
+------+------------+
| id | b |
+------+------------+
| 1 | 0.16777550 |
+------+------------+
1 row in set (0.00 sec)
mysql> select * from d1;
+------+---------+
| id | b |
+------+---------+
| 1 | 1.00334 |
+------+---------+
1 row in set (0.00 sec)
Suggested fix:
I suppose that import tablespace command should fail if decimal scale of dest table differs with source table