Commit b75d8ac0 authored by serg@serg.mylan's avatar serg@serg.mylan

xa assert fixes

parent 1bc6ae89
......@@ -476,6 +476,9 @@ void ha_close_connection(THD* thd)
void trans_register_ha(THD *thd, bool all, handlerton *ht_arg)
{
THD_TRANS *trans;
DBUG_ENTER("trans_register_ha");
DBUG_PRINT("enter",("%s", all ? "all" : "stmt"));
if (all)
{
trans= &thd->transaction.all;
......@@ -496,6 +499,7 @@ void trans_register_ha(THD *thd, bool all, handlerton *ht_arg)
trans->no_2pc|=(ht_arg->prepare==0);
if (thd->transaction.xid.is_null())
thd->transaction.xid.set(thd->query_id);
DBUG_VOID_RETURN;
}
/*
......@@ -514,7 +518,7 @@ int ha_prepare(THD *thd)
if (trans->nht)
{
if (trans->no_2pc)
return -1;
DBUG_RETURN(-1);
for (; *ht; ht++)
{
int err;
......
......@@ -97,7 +97,7 @@
Note: the following includes binlog and closing 0.
so: innodb+bdb+ndb+binlog+0
*/
#define MAX_HA 5
#define MAX_HA 6
/*
Bits in index_ddl_flags(KEY *wanted_index)
......
......@@ -129,11 +129,12 @@ static int binlog_rollback(THD *thd, bool all)
IO_CACHE *trans_log= (IO_CACHE*)thd->ha_data[binlog_hton.slot];
DBUG_ENTER("binlog_rollback");
/*
first two conditions here are guaranteed - see trans_register_ha()
call below. The third one must be true. If it is not, we're registering
First assert is guaranteed - see trans_register_ha() call below.
The second must be true. If it is not, we're registering
unnecessary, doing extra work. The cause should be found and eliminated
*/
DBUG_ASSERT(all && mysql_bin_log.is_open() && my_b_tell(trans_log));
DBUG_ASSERT(all || !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)));
DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(trans_log));
/*
Update the binary log with a BEGIN/ROLLBACK block if we have
cached some queries and we updated some non-transactional
......
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