mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	 3826a01ee4
			
		
	
	3826a01ee4
	
	
	
		
			
			that it tested the privilege in ::update() whereas it should be in ::check() (see email from Serg, subject "Re: bk commit - 4.1 tree (guilhem:1.1706)"). So I add instead a check_func function to sys_var_thd_bit. I do the same addition to sys_var_thd_ulong, to unify handling of PSEUDO_THREAD_ID with the one of SQL_LOG_BIN. So class sys_var_pseudo_thread_id is not needed anymore, removing it.
		
			
				
	
	
		
			132 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.6 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;
 | |
| 
 | |
| # The server will now close done
 |