Commit d1ff2c58 authored by mkaruza's avatar mkaruza Committed by Jan Lindström

MDEV-21697: Galera assertion !wsrep_has_changes(thd) || (thd->lex->sql_command...

MDEV-21697: Galera assertion !wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row())

Prevent adding WSREP keys with CTAS when table is is not InnoDB.
Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
parent 161f4036
connection node_2;
connection node_1;
connection node_1;
create table t1_Aria(a int, count int, b int, key(b)) engine=Aria;
INSERT INTO t1_Aria values (1,1,1);
create table t1_MyISAM(a int, count int, b int, key(b)) engine=MyISAM;
INSERT INTO t1_MyISAM values (1,1,1);
create table t1_InnoDB(a int, count int, b int, key(b)) engine=InnoDB;
INSERT INTO t1_InnoDB values (1,1,1);
SET SESSION default_storage_engine=MyISAM;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW CREATE TABLE t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW CREATE TABLE t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2, t3,t4;
SET SESSION default_storage_engine=Aria;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
SHOW CREATE TABLE t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
SHOW CREATE TABLE t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
DROP TABLE t2, t3,t4;
SET SESSION default_storage_engine=InnoDB;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t3;
Table Create Table
t3 CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t2, t3,t4;
DROP TABLE t1_MyISAM, t1_Aria,t1_InnoDB;
--source include/galera_cluster.inc
--connection node_1
create table t1_Aria(a int, count int, b int, key(b)) engine=Aria;
INSERT INTO t1_Aria values (1,1,1);
create table t1_MyISAM(a int, count int, b int, key(b)) engine=MyISAM;
INSERT INTO t1_MyISAM values (1,1,1);
create table t1_InnoDB(a int, count int, b int, key(b)) engine=InnoDB;
INSERT INTO t1_InnoDB values (1,1,1);
SET SESSION default_storage_engine=MyISAM;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
SHOW CREATE TABLE t3;
SHOW CREATE TABLE t4;
DROP TABLE t2, t3,t4;
SET SESSION default_storage_engine=Aria;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
SHOW CREATE TABLE t3;
SHOW CREATE TABLE t4;
DROP TABLE t2, t3,t4;
SET SESSION default_storage_engine=InnoDB;
CREATE TABLE t2 AS SELECT * FROM t1_Aria;
CREATE TABLE t3 AS SELECT * FROM t1_MyISAM;
CREATE TABLE t4 AS SELECT * FROM t1_InnoDB;
SHOW CREATE TABLE t2;
SHOW CREATE TABLE t3;
SHOW CREATE TABLE t4;
DROP TABLE t2, t3,t4;
DROP TABLE t1_MyISAM, t1_Aria,t1_InnoDB;
......@@ -4724,7 +4724,8 @@ bool select_create::send_eof()
if (!table->s->tmp_table)
{
#ifdef WITH_WSREP
if (WSREP(thd))
if (WSREP(thd) &&
table->file->ht->db_type == DB_TYPE_INNODB)
{
if (thd->wsrep_trx_id() == WSREP_UNDEFINED_TRX_ID)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment