Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
MDEV-16229 Replication aborts with ER_VIEW_SELECT_TMPTABLE after half…
…-failed RENAME 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.
- Loading branch information
Showing
8 changed files
with
245 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
include/master-slave.inc | ||
[connection master] | ||
# | ||
# MDEV-16229 Replication aborts with ER_VIEW_SELECT_TMPTABLE after | ||
# half-failed RENAME | ||
# | ||
CREATE TABLE t1 (a INT); | ||
CREATE TEMPORARY TABLE t1 (b INT); | ||
RENAME TABLE t1 TO tmp, tmp TO t1; | ||
SHOW CREATE TABLE t1; | ||
Table Create Table | ||
t1 CREATE TEMPORARY TABLE `t1` ( | ||
`b` int(11) DEFAULT NULL | ||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
CREATE VIEW v AS SELECT * FROM t1; | ||
ERROR HY000: View's SELECT refers to a temporary table 't1' | ||
RENAME TABLE t1 TO tmp, t1 TO t2; | ||
SHOW CREATE TABLE tmp; | ||
Table Create Table | ||
tmp CREATE TEMPORARY TABLE `tmp` ( | ||
`b` int(11) DEFAULT NULL | ||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
SHOW CREATE TABLE t2; | ||
Table Create Table | ||
t2 CREATE TABLE `t2` ( | ||
`a` int(11) DEFAULT NULL | ||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
CREATE VIEW v AS SELECT * FROM tmp; | ||
ERROR HY000: View's SELECT refers to a temporary table 'tmp' | ||
CREATE VIEW v AS SELECT * FROM t2; | ||
DROP VIEW v; | ||
DROP TABLE tmp; | ||
DROP TABLE t2; | ||
include/rpl_end.inc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters