mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	Problem was that detection of temporary tables was all wrong for RENAME TABLE. (Temporary tables where opened by top level call to open_temporary_tables(), which can't detect if a temporary table was renamed to something and then reused). Fixed by adding proper parsing of rename list to check against the current name of a table at each rename stage. Also change do_rename_temporary() to check against the current state of temporary tables, not according to the state of start of RENAME TABLE.
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Text
		
	
	
	
	
	
--source include/have_binlog_format_mixed.inc
 | 
						|
--source include/master-slave.inc
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # MDEV-16229 Replication aborts with ER_VIEW_SELECT_TMPTABLE after
 | 
						|
--echo # half-failed RENAME
 | 
						|
--echo #
 | 
						|
 | 
						|
CREATE TABLE t1 (a INT);
 | 
						|
CREATE TEMPORARY TABLE t1 (b INT);
 | 
						|
RENAME TABLE t1 TO tmp, tmp TO t1;
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
--error ER_VIEW_SELECT_TMPTABLE
 | 
						|
CREATE VIEW v AS SELECT * FROM t1;
 | 
						|
 | 
						|
RENAME TABLE t1 TO tmp, t1 TO t2;
 | 
						|
SHOW CREATE TABLE tmp;
 | 
						|
SHOW CREATE TABLE t2;
 | 
						|
--error ER_VIEW_SELECT_TMPTABLE
 | 
						|
CREATE VIEW v AS SELECT * FROM tmp;
 | 
						|
CREATE VIEW v AS SELECT * FROM t2;
 | 
						|
 | 
						|
--sync_slave_with_master
 | 
						|
 | 
						|
# Cleanup
 | 
						|
 | 
						|
--connection master
 | 
						|
 | 
						|
DROP VIEW v;
 | 
						|
DROP TABLE tmp;
 | 
						|
DROP TABLE t2;
 | 
						|
 | 
						|
--source include/rpl_end.inc
 |