1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-7673: CREATE TABLE SELECT fails on Galera cluster

Enable execution of CREATE TABLE SELECT in total order isolation. Added
a test case.

Contributed by : Andrew W Elble
This commit is contained in:
Nirbhay Choubey
2015-03-06 13:22:15 -05:00
parent c6acdf7c28
commit d146605124
3 changed files with 21 additions and 0 deletions

View File

@ -20,4 +20,9 @@ i
1 1
DROP TABLE t1; DROP TABLE t1;
SET @@GLOBAL.wsrep_forced_binlog_format=@wsrep_forced_binlog_format_saved; SET @@GLOBAL.wsrep_forced_binlog_format=@wsrep_forced_binlog_format_saved;
#
# MDEV-7673: CREATE TABLE SELECT fails on Galera cluster
#
CREATE TABLE t1 (i INT) ENGINE=INNODB DEFAULT CHARSET=utf8 SELECT 1 as i;
DROP TABLE t1;
# End of tests # End of tests

View File

@ -22,5 +22,13 @@ SELECT * FROM t1_temp;
DROP TABLE t1; DROP TABLE t1;
SET @@GLOBAL.wsrep_forced_binlog_format=@wsrep_forced_binlog_format_saved; SET @@GLOBAL.wsrep_forced_binlog_format=@wsrep_forced_binlog_format_saved;
--echo #
--echo # MDEV-7673: CREATE TABLE SELECT fails on Galera cluster
--echo #
CREATE TABLE t1 (i INT) ENGINE=INNODB DEFAULT CHARSET=utf8 SELECT 1 as i;
# Cleanup
DROP TABLE t1;
--echo # End of tests --echo # End of tests

View File

@ -3284,6 +3284,14 @@ case SQLCOM_PREPARE:
/* Store reference to table in case of LOCK TABLES */ /* Store reference to table in case of LOCK TABLES */
create_info.table= create_table->table; create_info.table= create_table->table;
#ifdef WITH_WSREP
if (WSREP(thd) &&
(!thd->is_current_stmt_binlog_format_row() ||
!(create_info.tmp_table())))
WSREP_TO_ISOLATION_BEGIN(create_table->db, create_table->table_name,
NULL)
#endif
/* /*
select_create is currently not re-execution friendly and select_create is currently not re-execution friendly and
needs to be created for every execution of a PS/SP. needs to be created for every execution of a PS/SP.