|
When online alter is applied on top of intermediate DML changes, it converts data truncation errors and such into warnings, even if strict mode is enabled.
--source include/have_debug_sync.inc
|
|
create table t (a int);
|
insert into t values (1),(2),(3);
|
--send
|
set debug_sync= 'now wait_for downgraded';
|
|
--connect (con_alter,localhost,root,,test)
|
|
set sql_mode='STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
set debug_sync= 'alter_table_online_downgraded signal downgraded wait_for goforit';
|
--send
|
alter table t modify a int not null, algorithm=copy, lock=none;
|
|
--connection default
|
--reap
|
insert into t values (null),(null);
|
set debug_sync= 'now signal goforit';
|
|
--connection con_alter
|
--reap
|
show create table t;
|
select * from t;
|
|
# Cleanup
|
drop table t;
|
set debug_sync= reset;
|
|
bb-10.10-MDEV-16329 cb1f08bd1
|
connection default;
|
insert into t values (null),(null);
|
set debug_sync= 'now signal goforit';
|
connection con_alter;
|
Warnings:
|
Warning 1265 Data truncated for column 'a' at row 4
|
Warning 1265 Data truncated for column 'a' at row 4
|
show create table t;
|
Table Create Table
|
t CREATE TABLE `t` (
|
`a` int(11) NOT NULL
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
select * from t;
|
a
|
1
|
2
|
3
|
0
|
0
|
Reproducible the same way with at least InnoDB and MyISAM.
|