MDEV-7000 Assertion `0' failed in Protocol::end_statement() on executing DDL under innodb_fake_changes=1

correct the if() condition to match the behavior of the old code
that this if() was supposed to replace
This commit is contained in:
Sergei Golubchik 2015-02-27 21:42:03 +01:00
parent ba80708f66
commit 7ba2916c55
3 changed files with 17 additions and 3 deletions

View File

@ -0,0 +1,6 @@
create table t1 (i int) engine=InnoDB;
set innodb_fake_changes = 1;
insert into t1 values (1);
ERROR HY000: Got error 131 "Command not supported by database" during COMMIT
set innodb_fake_changes = 0;
drop table t1;

View File

@ -0,0 +1,9 @@
--source include/have_log_bin.inc
--source include/have_xtradb.inc
create table t1 (i int) engine=InnoDB;
set innodb_fake_changes = 1;
--disable_abort_on_error
insert into t1 values (1);
set innodb_fake_changes = 0;
drop table t1;

View File

@ -1152,9 +1152,8 @@ static int prepare_or_error(handlerton *ht, THD *thd, bool all)
{
/* avoid sending error, if we're going to replay the transaction */
#ifdef WITH_WSREP
if (ht == wsrep_hton &&
err != EMSGSIZE &&
thd->wsrep_conflict_state != MUST_REPLAY)
if (ht != wsrep_hton ||
err == EMSGSIZE || thd->wsrep_conflict_state != MUST_REPLAY)
#endif
my_error(ER_ERROR_DURING_COMMIT, MYF(0), err);
}