mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	fixing encoding example because of table names can not be in koi8r on some platforms. mysql-test/t/rpl_temporary.test: koi8r encoding to name tables is changed for latin1 for the former does not work on some platforms. The effect of the test remains: a test table is named to have multibyte utf8 representation, which is the essence of the bug.
		
			
				
	
	
		
			177 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
source include/master-slave.inc;
 | 
						||
 | 
						||
# 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;
 | 
						||
sync_with_master;
 | 
						||
reset master;
 | 
						||
connection master;
 | 
						||
 | 
						||
connect (con1,localhost,root,,);
 | 
						||
connect (con2,localhost,root,,);
 | 
						||
# 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,,);
 | 
						||
 | 
						||
# We are going to use SET PSEUDO_THREAD_ID in this test;
 | 
						||
# check that it requires the SUPER privilege.
 | 
						||
 | 
						||
connection con3;
 | 
						||
SET @save_select_limit=@@session.sql_select_limit;
 | 
						||
--error 1227
 | 
						||
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
 | 
						||
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
 | 
						||
# While we are here we also test that SQL_LOG_BIN can't be set
 | 
						||
--error 1227
 | 
						||
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
 | 
						||
SELECT @@session.sql_select_limit = @save_select_limit; #shouldn't have changed
 | 
						||
# 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;
 | 
						||
 | 
						||
connection con3;
 | 
						||
let $VERSION=`select version()`;
 | 
						||
 | 
						||
--disable_warnings
 | 
						||
drop table if exists t1,t2;
 | 
						||
--enable_warnings
 | 
						||
 | 
						||
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;
 | 
						||
create temporary table t3(f int);
 | 
						||
insert into t3 select * from t1 where f<6;
 | 
						||
sleep 1;
 | 
						||
 | 
						||
connection con2;
 | 
						||
create temporary table t3(f int);
 | 
						||
sleep 1;
 | 
						||
 | 
						||
connection con1;
 | 
						||
insert into t2 select count(*) from t3;
 | 
						||
sleep 1;
 | 
						||
 | 
						||
connection con2;
 | 
						||
insert into t3 select * from t1 where f>=4;
 | 
						||
sleep 1;
 | 
						||
 | 
						||
connection con1;
 | 
						||
drop temporary table t3;
 | 
						||
sleep 1;
 | 
						||
 | 
						||
connection con2;
 | 
						||
insert into t2 select count(*) from t3;
 | 
						||
drop temporary table t3;
 | 
						||
 | 
						||
select * from t2;
 | 
						||
 | 
						||
--replace_result $VERSION VERSION
 | 
						||
show binlog events;
 | 
						||
 | 
						||
drop table t1, t2;
 | 
						||
 | 
						||
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;
 | 
						||
create temporary table t3(f int);
 | 
						||
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;
 | 
						||
create temporary table t3(f int);
 | 
						||
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;
 | 
						||
 | 
						||
select * from t2;
 | 
						||
drop table t1,t2;
 | 
						||
 | 
						||
# Create last a temporary table that is not dropped at end to ensure that we
 | 
						||
# don't get any memory leaks for this
 | 
						||
 | 
						||
create temporary table t3 (f int);
 | 
						||
sync_with_master;
 | 
						||
 | 
						||
#
 | 
						||
# 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;
 | 
						||
set @@session.pseudo_thread_id=100;
 | 
						||
create temporary table t101 (id int);
 | 
						||
create temporary table t102 (id int);
 | 
						||
set @@session.pseudo_thread_id=200;
 | 
						||
create temporary table t201 (id int);
 | 
						||
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;
 | 
						||
 | 
						||
#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;
 | 
						||
 | 
						||
#
 | 
						||
#14157: utf8 encoding in binlog without set character_set_client
 | 
						||
#
 | 
						||
--exec $MYSQL --character-sets-dir=../sql/share/charsets/ --default-character-set=latin1 test -e '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>`'
 | 
						||
 | 
						||
sync_slave_with_master;
 | 
						||
#connection slave;
 | 
						||
select * from t1;
 | 
						||
 | 
						||
connection master; 
 | 
						||
drop table t1;
 | 
						||
 | 
						||
# End of 4.1 tests
 |