mirror of
https://github.com/MariaDB/server.git
synced 2025-02-04 21:02:17 +01:00
242 lines
7.7 KiB
Text
242 lines
7.7 KiB
Text
#
|
|
# MDEV-29322 ASAN use-after-free options_written_to_bin_log
|
|
#
|
|
include/master-slave.inc
|
|
[connection master]
|
|
# A. set the master and slave explicit_defaults_for_timestamp values crisscross to (1,0)
|
|
connection master;
|
|
set @sav.explicit_defaults_for_timestamp = @@session.explicit_defaults_for_timestamp;
|
|
set @@session.explicit_defaults_for_timestamp = 1;
|
|
connection slave;
|
|
set @sav.explicit_defaults_for_timestamp = @@global.explicit_defaults_for_timestamp;
|
|
set global explicit_defaults_for_timestamp = 0;
|
|
set @sav.slave_parallel_workers = @@global.slave_parallel_workers;
|
|
include/stop_slave.inc
|
|
set @@global.slave_parallel_workers = 1;
|
|
include/start_slave.inc
|
|
connection slave;
|
|
include/stop_slave.inc
|
|
include/reset_slave.inc
|
|
connection master;
|
|
reset master;
|
|
create table t2 (a timestamp, b int);
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NULL DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
connection slave;
|
|
include/start_slave.inc
|
|
include/stop_slave.inc
|
|
connection master;
|
|
insert into t2 values (null, 1);
|
|
flush binary logs;
|
|
flush binary logs;
|
|
insert into t2 values (null, 2);
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1658586280/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.system_versioning_insert_history=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C utf8mb3 *//*!*/;
|
|
SET @@session.character_set_client=utf8mb3,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
create table t1 (f1 timestamp, f2 timestamp)
|
|
/*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586288/*!*/;
|
|
insert t1 values (NULL, NULL)
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586288/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586335/*!*/;
|
|
insert t1 () values ()
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586335/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
connection slave1;
|
|
lock table t2 write;
|
|
connection slave;
|
|
include/start_slave.inc
|
|
connection slave1;
|
|
unlock tables;
|
|
connection slave;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`f1` timestamp NULL DEFAULT NULL,
|
|
`f2` timestamp NULL DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
set statement time_zone='+2:00' for select * from t1;
|
|
f1 f2
|
|
NULL NULL
|
|
NULL NULL
|
|
drop table t1;
|
|
connection master;
|
|
connection slave;
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NULL DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
include/diff_tables.inc [master:t2,slave:t2]
|
|
connection master;
|
|
drop table t2;
|
|
connection slave;
|
|
# B. alternate the master and slave vars' values to (0,1)
|
|
connection master;
|
|
set @@session.explicit_defaults_for_timestamp = 0;
|
|
connection slave;
|
|
set @@global.explicit_defaults_for_timestamp = 1;
|
|
connection slave;
|
|
include/stop_slave.inc
|
|
include/reset_slave.inc
|
|
Warnings:
|
|
Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
|
|
connection master;
|
|
reset master;
|
|
create table t2 (a timestamp, b int);
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
connection slave;
|
|
include/start_slave.inc
|
|
include/stop_slave.inc
|
|
connection master;
|
|
insert into t2 values (null, 1);
|
|
flush binary logs;
|
|
flush binary logs;
|
|
insert into t2 values (null, 2);
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=1658586280/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.system_versioning_insert_history=0/*!*/;
|
|
SET @@session.sql_mode=1411383296/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C utf8mb3 *//*!*/;
|
|
SET @@session.character_set_client=utf8mb3,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
create table t1 (f1 timestamp, f2 timestamp)
|
|
/*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586288/*!*/;
|
|
insert t1 values (NULL, NULL)
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586288/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586335/*!*/;
|
|
insert t1 () values ()
|
|
/*!*/;
|
|
SET TIMESTAMP=1658586335/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
connection slave1;
|
|
lock table t2 write;
|
|
connection slave;
|
|
include/start_slave.inc
|
|
connection slave1;
|
|
unlock tables;
|
|
connection slave;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`f1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
`f2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
set statement time_zone='+2:00' for select * from t1;
|
|
f1 f2
|
|
2022-07-23 16:24:48 2022-07-23 16:24:48
|
|
2022-07-23 16:25:35 0000-00-00 00:00:00
|
|
drop table t1;
|
|
connection master;
|
|
connection slave;
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
include/diff_tables.inc [master:t2,slave:t2]
|
|
connection master;
|
|
drop table t2;
|
|
connection slave;
|
|
# C. the bug case on the same version binlogs also to demo on the patch's base
|
|
include/stop_slave.inc
|
|
set @@global.slave_parallel_workers = 4;
|
|
include/start_slave.inc
|
|
connection slave;
|
|
include/stop_slave.inc
|
|
include/reset_slave.inc
|
|
Warnings:
|
|
Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
|
|
connection master;
|
|
reset master;
|
|
create table t2 (a timestamp, b int);
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
connection slave;
|
|
include/start_slave.inc
|
|
include/stop_slave.inc
|
|
connection master;
|
|
connection slave;
|
|
include/start_slave.inc
|
|
connection slave;
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
|
include/diff_tables.inc [master:t2,slave:t2]
|
|
connection master;
|
|
drop table t2;
|
|
connection slave;
|
|
connection master;
|
|
set @@session.explicit_defaults_for_timestamp = @sav.explicit_defaults_for_timestamp;
|
|
connection slave;
|
|
set @@global.explicit_defaults_for_timestamp = @sav.explicit_defaults_for_timestamp;
|
|
include/stop_slave.inc
|
|
set @@global.slave_parallel_workers = @sav.slave_parallel_workers;
|
|
include/start_slave.inc
|
|
include/rpl_end.inc
|