summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelliot@mysql.com <>2006-03-17 10:25:29 +0100
committerelliot@mysql.com <>2006-03-17 10:25:29 +0100
commit56fca811bb9caae713a3477dfbe3ae5fe0991431 (patch)
tree2d7f0581fad7174f6de58be991ec71eca3a1892f
parentd75abf873ea1e461fe8cd2f82cd7a512a4c2428f (diff)
downloadmariadb-git-56fca811bb9caae713a3477dfbe3ae5fe0991431.tar.gz
BUG#18283 When InnoDB returns error 'lock table full', MySQL can write
to binlog too much. When InnoDB has to rollback a transaction because the lock table has filled up, it also needs to inform the upper layer that the transaction was rolled back so that the cached transaction is not written to the binary log.
-rw-r--r--sql/ha_innodb.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index d24587e23ea..8455bbaf4d0 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -332,6 +332,13 @@ convert_error_code_to_mysql(
return(HA_ERR_NO_SAVEPOINT);
} else if (error == (int) DB_LOCK_TABLE_FULL) {
+ /* Since we rolled back the whole transaction, we must
+ tell it also to MySQL so that MySQL knows to empty the
+ cached binlog for this transaction */
+
+ if (thd) {
+ ha_rollback(thd);
+ }
return(HA_ERR_LOCK_TABLE_FULL);
} else {