summaryrefslogtreecommitdiff
path: root/sql/log.cc
diff options
context:
space:
mode:
authorMikael Ronström <mikael@dator9>2011-05-12 20:35:31 +0200
committerMikael Ronström <mikael@dator9>2011-05-12 20:35:31 +0200
commit06087d23156f77e6be7a13ddee71129c093c7757 (patch)
tree9b80136979cd63617dbabc84a4e61ad1e8c309ae /sql/log.cc
parent69396894f15f145ad48d45f21bba1d902602c96a (diff)
parent7577c115a028eb0b713878fdd3be95a018bd9cdb (diff)
downloadmariadb-git-06087d23156f77e6be7a13ddee71129c093c7757.tar.gz
merge
Diffstat (limited to 'sql/log.cc')
-rw-r--r--sql/log.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/sql/log.cc b/sql/log.cc
index bb5b37baa69..ce6b0f0a5a2 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -6506,8 +6506,11 @@ int TC_LOG_BINLOG::unlog(ulong cookie, my_xid xid)
{
DBUG_ENTER("TC_LOG_BINLOG::unlog");
mysql_mutex_lock(&LOCK_prep_xids);
- DBUG_ASSERT(prepared_xids > 0);
- if (--prepared_xids == 0) {
+ // prepared_xids can be 0 if the transaction had ignorable errors.
+ DBUG_ASSERT(prepared_xids >= 0);
+ if (prepared_xids > 0)
+ prepared_xids--;
+ if (prepared_xids == 0) {
DBUG_PRINT("info", ("prepared_xids=%lu", prepared_xids));
mysql_cond_signal(&COND_prep_xids);
}