Hi, Andrei! On Jun 15, Andrei Elkin wrote: > revision-id: 4cbbc796dcc (mariadb-10.5.2-335-g4cbbc796dcc) > parent(s): a74e724e061 > author: Andrei Elkin <andrei.el...@mariadb.com> > committer: Andrei Elkin <andrei.el...@mariadb.com> > timestamp: 2020-06-11 17:24:15 +0300 > message: > > MDEV-22420 DDL on temporary object is prohibited when XA is in prepare state > > The parser must reject DDL operations on temporary objects when > they may modify or alter such object, including temporary tables and > sequences. > The rejection is regardless (has been already in place for bin-loggable DML:s) > of the binlogging capability of the server or connection. > > The patch implements the requirement. A binlog test is added. > > diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc > index 86f81dd001a..6ac0cf96024 100644 > --- a/sql/sql_parse.cc > +++ b/sql/sql_parse.cc > @@ -4890,6 +4890,11 @@ mysql_execute_command(THD *thd) > } > else > { > + if (thd->transaction->xid_state.check_has_uncommitted_xa()) > + { > + thd->transaction->xid_state.er_xaer_rmfail(); > + goto error; > + } > status_var_decrement(thd->status_var.com_stat[lex->sql_command]); > status_var_increment(thd->status_var.com_drop_tmp_table);
Two comments. 1. Where is this checked for non-temporary tables? check_has_uncommitted_xa is tested in open_tables(), and it's not called for DROP. What about RENAME? What other operations are there that don't open a table? 2. check_has_uncommitted_xa() already does er_xaer_rmfail() internally, you don't need to repeat it. Regards, Sergei VP of MariaDB Server Engineering and secur...@mariadb.org _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp