mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/bug17137/my50-bug17137
This commit is contained in:
commit
c80332c7b9
3 changed files with 56 additions and 0 deletions
22
mysql-test/r/rpl_trunc_temp.result
Normal file
22
mysql-test/r/rpl_trunc_temp.result
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
create temporary table t1 (n int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_open_temp_tables 1
|
||||||
|
delete from t1;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_open_temp_tables 1
|
||||||
|
truncate t1;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_open_temp_tables 1
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Slave_open_temp_tables 0
|
32
mysql-test/t/rpl_trunc_temp.test
Normal file
32
mysql-test/t/rpl_trunc_temp.test
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#17137 Running "truncate table" on temporary table
|
||||||
|
# leaves the table open on a slave
|
||||||
|
#
|
||||||
|
|
||||||
|
create temporary table t1 (n int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
sync_slave_with_master;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
|
||||||
|
# Perform a delete from temp table
|
||||||
|
connection master;
|
||||||
|
delete from t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
|
||||||
|
# Perform truncate on temp table
|
||||||
|
connection master;
|
||||||
|
truncate t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
|
||||||
|
# Disconnect the master, temp table on slave should dissapear
|
||||||
|
disconnect master;
|
||||||
|
--real_sleep 3 # time for DROP to be read by slave
|
||||||
|
connection slave;
|
||||||
|
show status like 'Slave_open_temp_tables';
|
||||||
|
|
||||||
|
|
||||||
|
# End of 4.1 tests
|
|
@ -813,6 +813,8 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
|
||||||
strmov(path, table->s->path);
|
strmov(path, table->s->path);
|
||||||
*table_ptr= table->next; // Unlink table from list
|
*table_ptr= table->next; // Unlink table from list
|
||||||
close_temporary(table,0);
|
close_temporary(table,0);
|
||||||
|
if (thd->slave_thread)
|
||||||
|
--slave_open_temp_tables;
|
||||||
*fn_ext(path)=0; // Remove the .frm extension
|
*fn_ext(path)=0; // Remove the .frm extension
|
||||||
ha_create_table(path, &create_info,1);
|
ha_create_table(path, &create_info,1);
|
||||||
// We don't need to call invalidate() because this table is not in cache
|
// We don't need to call invalidate() because this table is not in cache
|
||||||
|
|
Loading…
Add table
Reference in a new issue