Commit 367442f7 authored by unknown's avatar unknown
Browse files

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.


sql/ha_innodb.cc:
  When InnoDB rolls back a transaction in HA_ERR_LOCK_TABLE_FULL, it
  needs to inform the upper layer to rollback the transaction also.
parent fd6d45f0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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 {