mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
merge to the latest 5.1-bugteam branch
This commit is contained in:
commit
800b155601
4 changed files with 116 additions and 0 deletions
30
mysql-test/suite/binlog/r/binlog_tmp_table.result
Normal file
30
mysql-test/suite/binlog/r/binlog_tmp_table.result
Normal file
|
@ -0,0 +1,30 @@
|
|||
create table foo (a int);
|
||||
flush logs;
|
||||
create temporary table tmp1_foo like foo;
|
||||
create temporary table tmp2_foo (a int);
|
||||
insert into tmp1_foo values (1), (2), (3), (4);
|
||||
replace into tmp2_foo values (1), (2), (3), (4);
|
||||
update tmp1_foo set a=2*a-1;
|
||||
update tmp2_foo set a=2*a;
|
||||
delete from tmp1_foo where a < 5;
|
||||
delete from tmp2_foo where a < 5;
|
||||
insert into foo select * from tmp1_foo;
|
||||
insert into foo select * from tmp2_foo;
|
||||
truncate table tmp1_foo;
|
||||
truncate table tmp2_foo;
|
||||
flush logs;
|
||||
select * from foo;
|
||||
a
|
||||
5
|
||||
7
|
||||
6
|
||||
8
|
||||
drop table foo;
|
||||
create table foo (a int);
|
||||
select * from foo;
|
||||
a
|
||||
5
|
||||
7
|
||||
6
|
||||
8
|
||||
drop table foo;
|
82
mysql-test/suite/binlog/t/binlog_tmp_table.test
Normal file
82
mysql-test/suite/binlog/t/binlog_tmp_table.test
Normal file
|
@ -0,0 +1,82 @@
|
|||
# ==== Purpose ====
|
||||
#
|
||||
# Test if statements used temporary tables are binlogged correctly
|
||||
#
|
||||
# ==== Method ====
|
||||
#
|
||||
# Use two connections, use temporary tables on both of them, and by
|
||||
# switching connections between statements, the test can check if the
|
||||
# statements are logged with the correct thread id.
|
||||
#
|
||||
# The statements current tested include:
|
||||
# CREATE TEMPORARY TABLE
|
||||
# CREATE TEMPORARY TABLE LIKE
|
||||
# INSERT
|
||||
# REPLACE
|
||||
# UPDATE
|
||||
# INSERT SELECT
|
||||
# TRUNCATE
|
||||
#
|
||||
# Note: When adding new query statements, please add them between the
|
||||
# two 'flush logs'. And aslo please make sure the connection is
|
||||
# switched between each statement.
|
||||
#
|
||||
# ==== Related bugs ====
|
||||
#
|
||||
# BUG#35583 mysqlbinlog replay fails with ERROR 1146 when temp tables are used
|
||||
#
|
||||
source include/have_log_bin.inc;
|
||||
source include/have_binlog_format_mixed_or_statement.inc;
|
||||
|
||||
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
|
||||
create table foo (a int);
|
||||
|
||||
flush logs;
|
||||
|
||||
connection master;
|
||||
create temporary table tmp1_foo like foo;
|
||||
connection master1;
|
||||
create temporary table tmp2_foo (a int);
|
||||
|
||||
connection master;
|
||||
insert into tmp1_foo values (1), (2), (3), (4);
|
||||
connection master1;
|
||||
replace into tmp2_foo values (1), (2), (3), (4);
|
||||
|
||||
connection master;
|
||||
update tmp1_foo set a=2*a-1;
|
||||
connection master1;
|
||||
update tmp2_foo set a=2*a;
|
||||
|
||||
connection master;
|
||||
delete from tmp1_foo where a < 5;
|
||||
connection master1;
|
||||
delete from tmp2_foo where a < 5;
|
||||
|
||||
connection master;
|
||||
insert into foo select * from tmp1_foo;
|
||||
connection master1;
|
||||
insert into foo select * from tmp2_foo;
|
||||
|
||||
connection master;
|
||||
truncate table tmp1_foo;
|
||||
connection master1;
|
||||
truncate table tmp2_foo;
|
||||
|
||||
flush logs;
|
||||
|
||||
connection default;
|
||||
select * from foo;
|
||||
|
||||
# prepare for the replay
|
||||
drop table foo;
|
||||
create table foo (a int);
|
||||
|
||||
# replay from binary log
|
||||
exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000002 | $MYSQL;
|
||||
select * from foo;
|
||||
|
||||
# clean up
|
||||
drop table foo;
|
|
@ -1010,6 +1010,9 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
|
|||
share->db.str,
|
||||
share->table_name.str, 1))))
|
||||
(void) rm_temporary_table(table_type, path);
|
||||
else
|
||||
thd->thread_specific_used= TRUE;
|
||||
|
||||
free_table_share(share);
|
||||
my_free((char*) table,MYF(0));
|
||||
/*
|
||||
|
|
|
@ -4983,6 +4983,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
|
|||
dst_path); /* purecov: inspected */
|
||||
goto err; /* purecov: inspected */
|
||||
}
|
||||
thd->thread_specific_used= TRUE;
|
||||
}
|
||||
else if (err)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue