mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
0db5b4d202
Fix for BUG#4971 "CREATE TABLE ... TYPE=HEAP SELECT ... stops slave (wrong DELETE in binlog)": replacing the no_log argument of mysql_create_table() by some safer method (temporarily setting OPTION_BIN_LOG to 0) which guarantees that even the automatic DELETE FROM heap_table does not get into the binlog when a not-yet-existing HEAP table is opened by mysql_create_table().
49 lines
1.2 KiB
Text
49 lines
1.2 KiB
Text
# You must run this test with --manager.
|
|
|
|
require_manager;
|
|
|
|
# Don't know why, but using TCP/IP connections makes this test fail
|
|
# with "Lost connection to MySQL server during query" when we
|
|
# issue a query after the server restart.
|
|
# Maybe this is something awkward in mysqltest or in the manager?
|
|
# So we use sockets.
|
|
connect (master,localhost,root,,test,0,master.sock);
|
|
connect (slave,localhost,root,,test,0,slave.sock);
|
|
|
|
connection master;
|
|
reset master;
|
|
drop table if exists t1;
|
|
# we use CREATE SELECT to verify that DELETE does not get into binlog
|
|
# before CREATE SELECT
|
|
create table t1 type=HEAP select 10 as a;
|
|
insert into t1 values(11);
|
|
save_master_pos;
|
|
show binlog events from 79;
|
|
connection slave;
|
|
reset slave;
|
|
start slave;
|
|
sync_with_master;
|
|
show create table t1;
|
|
select * from t1; # should be one row
|
|
|
|
server_stop master;
|
|
server_start master;
|
|
|
|
connection master;
|
|
select * from t1;
|
|
# to check that DELETE is not written twice
|
|
# (the LIMIT is to not use the query cache)
|
|
select * from t1 limit 10;
|
|
save_master_pos;
|
|
show binlog events in 'master-bin.002' from 79;
|
|
|
|
connection slave;
|
|
sync_with_master;
|
|
select * from t1; # should be empty
|
|
|
|
# clean up
|
|
connection master;
|
|
drop table t1;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|