Commit bac42636 authored by aelkin@mysql.com's avatar aelkin@mysql.com

Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/BARE/5.0

into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.1
parents 2e662287 61377e95
--exec $MYSQL test -e 'show processlist' | grep 'Binlog Dump' | cut -f1 > $MYSQLTEST_VARDIR/tmp/bl_dump_thread_id
--disable_warnings
drop table if exists t999;
--enable_warnings
create temporary table t999 (f int);
--replace_result $MYSQL_TEST_DIR "."
eval LOAD DATA INFILE "$MYSQLTEST_VARDIR/tmp/bl_dump_thread_id" into table t999;
let $id = `select f from t999`;
drop table t999;
...@@ -330,6 +330,8 @@ STRESS_INIT_FILE="" ...@@ -330,6 +330,8 @@ STRESS_INIT_FILE=""
STRESS_TEST_FILE="" STRESS_TEST_FILE=""
STRESS_TEST="" STRESS_TEST=""
$ECHO "Logging: $0 $*" # To ensure we see all arguments in the output, for the test analysis tool
while test $# -gt 0; do while test $# -gt 0; do
case "$1" in case "$1" in
--embedded-server) --embedded-server)
......
...@@ -74,3 +74,17 @@ f ...@@ -74,3 +74,17 @@ f
7 7
drop table t1,t2; drop table t1,t2;
create temporary table t3 (f int); create temporary table t3 (f int);
create temporary table t4 (f int);
create table t5 (f int);
drop table if exists t999;
create temporary table t999 (f int);
LOAD DATA INFILE "./var/tmp/bl_dump_thread_id" into table t999;
drop table t999;
insert into t4 values (1);
kill `select id from information_schema.processlist where command='Binlog Dump'`;
insert into t5 select * from t4;
select * from t5 /* must be 1 after reconnection */;
f
1
drop temporary table t4;
drop table t5;
...@@ -131,4 +131,30 @@ drop table t1,t2; ...@@ -131,4 +131,30 @@ drop table t1,t2;
create temporary table t3 (f int); create temporary table t3 (f int);
sync_with_master; sync_with_master;
#
# Bug#17284 erroneous temp table cleanup on slave
#
connection master;
create temporary table t4 (f int);
create table t5 (f int);
sync_with_master;
# find dumper's $id
source include/get_binlog_dump_thread_id.inc;
insert into t4 values (1);
# a hint how to do that in 5.1
--replace_result $id "`select id from information_schema.processlist where command='Binlog Dump'`"
eval kill $id; # to stimulate reconnection by slave w/o timeout
insert into t5 select * from t4;
save_master_pos;
connection slave;
sync_with_master;
select * from t5 /* must be 1 after reconnection */;
connection master;
drop temporary table t4;
drop table t5;
# The server will now close done # The server will now close done
# End of 5.1 tests
...@@ -464,6 +464,12 @@ impossible position"; ...@@ -464,6 +464,12 @@ impossible position";
(rli->group_master_log_pos) (rli->group_master_log_pos)
*/ */
int4store((char*) packet->ptr()+LOG_POS_OFFSET+1, 0); int4store((char*) packet->ptr()+LOG_POS_OFFSET+1, 0);
/*
if reconnect master sends FD event with `created' as 0
to avoid destroying temp tables.
*/
int4store((char*) packet->ptr()+LOG_EVENT_MINIMAL_HEADER_LEN+
ST_CREATED_OFFSET+1, (ulong) 0);
/* send it */ /* send it */
if (my_net_write(net, (char*)packet->ptr(), packet->length())) if (my_net_write(net, (char*)packet->ptr(), packet->length()))
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment