On 5/19/09 5:43 AM, Sergei Golubchik wrote:
> Hi, Davi!
>
> On May 12, Davi Arnaut wrote:
>> 2874 Davi Arnaut 2009-05-12
>> Bug#44672: Assertion failed: thd->transaction.xid_state.xid.is_null()
>>
>> === modified file 'sql/handler.cc'
>> --- a/sql/handler.cc 2009-03-27 09:34:24 +0000
>> +++ b/sql/handler.cc 2009-05-12 11:55:11 +0000
>> @@ -1193,6 +1193,8 @@ end:
>> or ha_rollback_trans().
>> */
>> thd->transaction.cleanup();
>> + if (is_real_trans)
>> + thd->transaction.xid_state.xid.null();
>
> Shouldn't this be part of transaction.cleanup() ?
Probably.
> Logically resetting the xid is part of cleanup, isn't it ?
Yes, but there is a reason why this was introduced directly into the
commit/rollback functions -- transaction.cleanup() is not called in
autocommit mode as there is nothing inside st_transactions to cleanup,
yet the xid state is implicitly initialized when a storage engine
registers for a transaction.
We could certainty clean up this a bit, but otoh it widens the scope of
the bug fix and increases the risk of breaking something else. Perhaps
we can defer this clean up to 6.0?
Regards,
-- Davi Arnaut