2007-02-27 11:39:29 +01:00
|
|
|
|
# Test need anonymous user when connection are made as "zedjzlcsjhd"
|
|
|
|
|
source include/add_anonymous_users.inc;
|
2006-02-08 13:08:19 +01:00
|
|
|
|
|
2005-12-22 06:39:02 +01:00
|
|
|
|
-- source include/master-slave.inc
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
2003-02-21 23:38:56 +01:00
|
|
|
|
# Clean up old slave's binlogs.
|
|
|
|
|
# The slave is started with --log-slave-updates
|
|
|
|
|
# and this test does SHOW BINLOG EVENTS on the slave's
|
|
|
|
|
# binlog. But previous tests can influence the current test's
|
|
|
|
|
# binlog (e.g. a temporary table in the previous test has not
|
|
|
|
|
# been explicitly deleted, or it has but the slave hasn't had
|
|
|
|
|
# enough time to catch it before STOP SLAVE,
|
|
|
|
|
# and at the beginning of the current
|
|
|
|
|
# test the slave immediately writes DROP TEMPORARY TABLE this_old_table).
|
|
|
|
|
# We wait for the slave to have written all he wants to the binlog
|
|
|
|
|
# (otherwise RESET MASTER may come too early).
|
|
|
|
|
save_master_pos;
|
|
|
|
|
connection slave;
|
2008-04-27 16:13:08 +02:00
|
|
|
|
|
|
|
|
|
# Add supression for expected warning(s) in slaves error log
|
|
|
|
|
call mtr.add_supression("Slave: Can\'t find record in \'user\' Error_code: 1032");
|
|
|
|
|
|
2003-02-21 23:38:56 +01:00
|
|
|
|
sync_with_master;
|
|
|
|
|
reset master;
|
|
|
|
|
connection master;
|
|
|
|
|
|
2002-12-30 01:46:48 +04:00
|
|
|
|
connect (con1,localhost,root,,);
|
|
|
|
|
connect (con2,localhost,root,,);
|
2003-10-07 23:15:13 +02:00
|
|
|
|
# We want to connect as an unprivileged user. But if we use user="" then this
|
|
|
|
|
# will pick the Unix login, which will cause problems if you're running the test
|
|
|
|
|
# as root.
|
|
|
|
|
connect (con3,localhost,zedjzlcsjhd,,);
|
2003-06-11 17:07:33 +02:00
|
|
|
|
|
|
|
|
|
# We are going to use SET PSEUDO_THREAD_ID in this test;
|
|
|
|
|
# check that it requires the SUPER privilege.
|
|
|
|
|
|
|
|
|
|
connection con3;
|
2004-03-27 01:07:09 +01:00
|
|
|
|
SET @save_select_limit=@@session.sql_select_limit;
|
2003-06-11 17:07:33 +02:00
|
|
|
|
--error 1227
|
2004-03-27 01:07:09 +01:00
|
|
|
|
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
|
|
|
|
|
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
|
2004-03-26 19:25:22 +01:00
|
|
|
|
# While we are here we also test that SQL_LOG_BIN can't be set
|
|
|
|
|
--error 1227
|
2004-03-27 01:07:09 +01:00
|
|
|
|
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
|
|
|
|
|
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
|
2004-03-26 19:25:22 +01:00
|
|
|
|
# Now as root, to be sure it works
|
|
|
|
|
connection con2;
|
|
|
|
|
SET @@session.pseudo_thread_id=100;
|
|
|
|
|
SET @@session.pseudo_thread_id=connection_id();
|
|
|
|
|
SET @@session.sql_log_bin=0;
|
|
|
|
|
SET @@session.sql_log_bin=1;
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
2004-03-26 19:25:22 +01:00
|
|
|
|
connection con3;
|
2003-01-17 16:39:29 +04:00
|
|
|
|
let $VERSION=`select version()`;
|
|
|
|
|
|
2003-01-06 01:48:59 +02:00
|
|
|
|
--disable_warnings
|
|
|
|
|
drop table if exists t1,t2;
|
|
|
|
|
--enable_warnings
|
|
|
|
|
|
2002-12-30 01:46:48 +04:00
|
|
|
|
create table t1(f int);
|
|
|
|
|
create table t2(f int);
|
|
|
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
|
|
|
|
|
|
|
|
connection con1;
|
2006-02-08 17:09:57 +01:00
|
|
|
|
create temporary table t3(f int);
|
2002-12-30 01:46:48 +04:00
|
|
|
|
insert into t3 select * from t1 where f<6;
|
2007-12-06 18:27:10 +03:00
|
|
|
|
let $wait_condition= SELECT COUNT(*) = 5 FROM t3;
|
|
|
|
|
--source include/wait_condition.inc
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
|
|
|
|
connection con2;
|
2006-02-08 17:09:57 +01:00
|
|
|
|
create temporary table t3(f int);
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
|
|
|
|
connection con1;
|
|
|
|
|
insert into t2 select count(*) from t3;
|
2007-12-06 18:27:10 +03:00
|
|
|
|
let $wait_condition= SELECT COUNT(*) = 1 FROM t2;
|
|
|
|
|
--source include/wait_condition.inc
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
|
|
|
|
connection con2;
|
|
|
|
|
insert into t3 select * from t1 where f>=4;
|
2007-12-06 18:27:10 +03:00
|
|
|
|
let $wait_condition= SELECT COUNT(*) = 7 FROM t3;
|
|
|
|
|
--source include/wait_condition.inc
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
|
|
|
|
connection con1;
|
|
|
|
|
drop temporary table t3;
|
|
|
|
|
|
|
|
|
|
connection con2;
|
|
|
|
|
insert into t2 select count(*) from t3;
|
|
|
|
|
drop temporary table t3;
|
|
|
|
|
|
2006-02-08 13:08:19 +01:00
|
|
|
|
select * from t2 ORDER BY f;
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
2005-12-22 06:39:02 +01:00
|
|
|
|
# Commented out 8/30/2005 to make compatable with both sbr and rbr
|
|
|
|
|
#--replace_result $VERSION VERSION
|
|
|
|
|
#--replace_column 2 # 5 #
|
|
|
|
|
#show binlog events;
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
2003-01-06 01:48:59 +02:00
|
|
|
|
drop table t1, t2;
|
2002-12-30 01:46:48 +04:00
|
|
|
|
|
|
|
|
|
use test;
|
|
|
|
|
SET TIMESTAMP=1040323920;
|
|
|
|
|
create table t1(f int);
|
|
|
|
|
SET TIMESTAMP=1040323931;
|
|
|
|
|
create table t2(f int);
|
|
|
|
|
SET TIMESTAMP=1040323938;
|
|
|
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
|
|
|
|
|
|
|
|
SET TIMESTAMP=1040323945;
|
|
|
|
|
SET @@session.pseudo_thread_id=1;
|
2006-02-08 17:09:57 +01:00
|
|
|
|
create temporary table t3(f int);
|
2002-12-30 01:46:48 +04:00
|
|
|
|
SET TIMESTAMP=1040323952;
|
|
|
|
|
SET @@session.pseudo_thread_id=1;
|
|
|
|
|
insert into t3 select * from t1 where f<6;
|
|
|
|
|
SET TIMESTAMP=1040324145;
|
|
|
|
|
SET @@session.pseudo_thread_id=2;
|
2006-02-08 17:09:57 +01:00
|
|
|
|
create temporary table t3(f int);
|
2002-12-30 01:46:48 +04:00
|
|
|
|
SET TIMESTAMP=1040324186;
|
|
|
|
|
SET @@session.pseudo_thread_id=1;
|
|
|
|
|
insert into t2 select count(*) from t3;
|
|
|
|
|
SET TIMESTAMP=1040324200;
|
|
|
|
|
SET @@session.pseudo_thread_id=2;
|
|
|
|
|
insert into t3 select * from t1 where f>=4;
|
|
|
|
|
SET TIMESTAMP=1040324211;
|
|
|
|
|
SET @@session.pseudo_thread_id=1;
|
|
|
|
|
drop temporary table t3;
|
|
|
|
|
SET TIMESTAMP=1040324219;
|
|
|
|
|
SET @@session.pseudo_thread_id=2;
|
|
|
|
|
insert into t2 select count(*) from t3;
|
|
|
|
|
SET TIMESTAMP=1040324224;
|
|
|
|
|
SET @@session.pseudo_thread_id=2;
|
|
|
|
|
drop temporary table t3;
|
|
|
|
|
|
2006-02-08 13:08:19 +01:00
|
|
|
|
select * from t2 ORDER BY f;
|
2003-01-06 01:48:59 +02:00
|
|
|
|
drop table t1,t2;
|
2003-11-03 14:01:59 +02:00
|
|
|
|
|
|
|
|
|
# Create last a temporary table that is not dropped at end to ensure that we
|
|
|
|
|
# don't get any memory leaks for this
|
|
|
|
|
|
2006-02-08 17:09:57 +01:00
|
|
|
|
create temporary table t3 (f int);
|
2008-03-07 21:14:28 +02:00
|
|
|
|
sync_slave_with_master;
|
2003-11-03 14:01:59 +02:00
|
|
|
|
|
2006-04-23 19:59:43 +03:00
|
|
|
|
# The server will now close done
|
|
|
|
|
|
2006-04-07 20:44:37 +03:00
|
|
|
|
#
|
|
|
|
|
# Bug#17284 erroneous temp table cleanup on slave
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
|
create temporary table t4 (f int);
|
|
|
|
|
create table t5 (f int);
|
2008-03-07 21:14:28 +02:00
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
connection master;
|
2006-04-07 20:44:37 +03:00
|
|
|
|
# find dumper's $id
|
2006-07-09 00:29:33 +03:00
|
|
|
|
select id from information_schema.processlist where command='Binlog Dump' into @id;
|
|
|
|
|
kill @id; # to stimulate reconnection by slave w/o timeout
|
2006-04-07 20:44:37 +03:00
|
|
|
|
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;
|
|
|
|
|
|
2006-04-23 19:59:43 +03:00
|
|
|
|
#
|
|
|
|
|
# BUG#17263 incorrect generation DROP temp tables
|
|
|
|
|
# Temporary tables of connection are dropped in batches
|
|
|
|
|
# where a batch correspond to pseudo_thread_id
|
|
|
|
|
# value was set up at the moment of temp table creation
|
|
|
|
|
#
|
|
|
|
|
connection con1;
|
2006-05-29 18:01:58 +03:00
|
|
|
|
set @@session.pseudo_thread_id=100;
|
2006-04-23 19:59:43 +03:00
|
|
|
|
create temporary table t101 (id int);
|
|
|
|
|
create temporary table t102 (id int);
|
2006-05-29 18:01:58 +03:00
|
|
|
|
set @@session.pseudo_thread_id=200;
|
2006-04-23 19:59:43 +03:00
|
|
|
|
create temporary table t201 (id int);
|
2006-05-29 18:01:58 +03:00
|
|
|
|
create temporary table `t``201` (id int);
|
|
|
|
|
# emulate internal temp table not to come to binlog
|
|
|
|
|
create temporary table `#sql_not_user_table202` (id int);
|
|
|
|
|
set @@session.pseudo_thread_id=300;
|
|
|
|
|
create temporary table t301 (id int);
|
|
|
|
|
create temporary table t302 (id int);
|
|
|
|
|
create temporary table `#sql_not_user_table303` (id int);
|
|
|
|
|
disconnect con1;
|
2006-04-23 19:59:43 +03:00
|
|
|
|
|
|
|
|
|
#now do something to show that slave is ok after DROP temp tables
|
|
|
|
|
connection master;
|
|
|
|
|
create table t1(f int);
|
|
|
|
|
insert into t1 values (1);
|
|
|
|
|
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
#connection slave;
|
|
|
|
|
select * from t1 /* must be 1 */;
|
|
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
|
drop table t1;
|
2006-05-29 18:01:58 +03:00
|
|
|
|
|
2006-07-09 00:29:33 +03:00
|
|
|
|
#
|
|
|
|
|
#14157: utf8 encoding in binlog without set character_set_client
|
|
|
|
|
#
|
2007-02-20 18:35:59 +01:00
|
|
|
|
--write_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
|
|
|
|
create table t1 (a int);
|
|
|
|
|
set names latin1;
|
|
|
|
|
create temporary table `<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>` (a int);
|
|
|
|
|
insert into `<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>` values (1);
|
|
|
|
|
insert into t1 select * from `<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`
|
|
|
|
|
EOF
|
|
|
|
|
--exec $MYSQL --character-sets-dir=../sql/share/charsets/ --default-character-set=latin1 test < $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
2006-07-09 00:29:33 +03:00
|
|
|
|
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
#connection slave;
|
|
|
|
|
select * from t1;
|
|
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
|
drop table t1;
|
2007-11-05 17:20:10 +02:00
|
|
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
2006-07-09 00:29:33 +03:00
|
|
|
|
|
2007-02-27 11:39:29 +01:00
|
|
|
|
# Delete the anonymous users
|
|
|
|
|
source include/delete_anonymous_users.inc;
|
|
|
|
|
|
2007-11-06 20:41:06 +02:00
|
|
|
|
# End of tests
|