mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	manual merge of 5.0 patch and fixing an issue with closing temp tables when no binlog or RBR. Note, that despite temporary_tables is indeed double-linked list in 5.1 (patch for bug #19881) it is still enough to use only 'next' reference, as it was done for 5.0, when the list is sorted and destoyed after. mysql-test/r/rpl_temporary.result: results changed mysql-test/t/rpl_temporary.test: fixing kill stmt for a thread with temp tables. Restoring check of temp table with accent char. sql/sql_base.cc: manual merge part 2. Leaving only extensively refactored close_temporary_tables from local rep.
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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;
 | 
						|
reset master;
 | 
						|
SET @save_select_limit=@@session.sql_select_limit;
 | 
						|
SET @@session.sql_select_limit=10, @@session.pseudo_thread_id=100;
 | 
						|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
 | 
						|
SELECT @@session.sql_select_limit = @save_select_limit;
 | 
						|
@@session.sql_select_limit = @save_select_limit
 | 
						|
1
 | 
						|
SET @@session.sql_select_limit=10, @@session.sql_log_bin=0;
 | 
						|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
 | 
						|
SELECT @@session.sql_select_limit = @save_select_limit;
 | 
						|
@@session.sql_select_limit = @save_select_limit
 | 
						|
1
 | 
						|
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;
 | 
						|
drop table if exists t1,t2;
 | 
						|
create table t1(f int);
 | 
						|
create table t2(f int);
 | 
						|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
 | 
						|
create temporary table t3(f int);
 | 
						|
insert into t3 select * from t1 where f<6;
 | 
						|
create temporary table t3(f int);
 | 
						|
insert into t2 select count(*) from t3;
 | 
						|
insert into t3 select * from t1 where f>=4;
 | 
						|
drop temporary table t3;
 | 
						|
insert into t2 select count(*) from t3;
 | 
						|
drop temporary table t3;
 | 
						|
select * from t2 ORDER BY f;
 | 
						|
f
 | 
						|
5
 | 
						|
7
 | 
						|
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 ORDER BY f;
 | 
						|
f
 | 
						|
5
 | 
						|
7
 | 
						|
drop table t1,t2;
 | 
						|
create temporary table t3 (f int);
 | 
						|
create temporary table t4 (f int);
 | 
						|
create table t5 (f int);
 | 
						|
select id from information_schema.processlist where command='Binlog Dump' into @id;
 | 
						|
kill @id;
 | 
						|
insert into t5 select * from t4;
 | 
						|
select * from t5 /* must be 1 after reconnection */;
 | 
						|
f
 | 
						|
drop temporary table t4;
 | 
						|
drop table t5;
 | 
						|
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);
 | 
						|
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);
 | 
						|
create table t1(f int);
 | 
						|
insert into t1 values (1);
 | 
						|
select * from t1 /* must be 1 */;
 | 
						|
f
 | 
						|
1
 | 
						|
drop table t1;
 | 
						|
select * from t1;
 | 
						|
a
 | 
						|
1
 | 
						|
drop table t1;
 |