mirror of
https://github.com/MariaDB/server.git
synced 2025-04-21 06:35:31 +02:00
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: Jan Lindström <jan.lindstrom@mariadb.com>
This commit is contained in:
parent
161f4036c4
commit
d1ff2c583f
3 changed files with 129 additions and 1 deletions
88
mysql-test/suite/galera/r/galera_ctas.result
Normal file
88
mysql-test/suite/galera/r/galera_ctas.result
Normal file
|
@ -0,0 +1,88 @@
|
|||
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;
|
39
mysql-test/suite/galera/t/galera_ctas.test
Normal file
39
mysql-test/suite/galera/t/galera_ctas.test
Normal file
|
@ -0,0 +1,39 @@
|
|||
--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)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue