Commit c02509b1 authored by unknown's avatar unknown
Browse files

row0mysql.c, ha_innodb.cc:

  Fix bug #12308 : do not roll back the whhole transaction in a lock wait timeout error, just roll back the latest SQL statement; note that the locks set in the latest SQL statements remain, as InnoDB does not know what locks were set in which SQL statement


sql/ha_innodb.cc:
  Fix bug #12308 : do not roll back the whhole transaction in a lock wait timeout error, just roll back the latest SQL statement; note that the locks set in the latest SQL statements remain, as InnoDB does not know what locks were set in which SQL statement
innobase/row/row0mysql.c:
  Fix bug #12308 : do not roll back the whhole transaction in a lock wait timeout error, just roll back the latest SQL statement; note that the locks set in the latest SQL statements remain, as InnoDB does not know what locks were set in which SQL statement
parent 7425899f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -513,14 +513,15 @@ row_mysql_handle_errors(

		return(TRUE);

	} else if (err == DB_DEADLOCK || err == DB_LOCK_WAIT_TIMEOUT
	} else if (err == DB_DEADLOCK
		   || err == DB_LOCK_TABLE_FULL) {
		/* Roll back the whole transaction; this resolution was added
		to version 3.23.43 */

		trx_general_rollback_for_mysql(trx, FALSE, NULL);
				
	} else if (err == DB_OUT_OF_FILE_SPACE) {
	} else if (err == DB_OUT_OF_FILE_SPACE
		   || err == DB_LOCK_WAIT_TIMEOUT) {
           	if (savept) {
			/* Roll back the latest, possibly incomplete
			insertion or update */
+3 −7
Original line number Diff line number Diff line
@@ -463,13 +463,9 @@ convert_error_code_to_mysql(

 	} else if (error == (int) DB_LOCK_WAIT_TIMEOUT) {

		/* 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);
		}
		/* Starting from 5.0.13, we let MySQL just roll back the
		latest SQL statement in a lock wait timeout. Previously, we
		rolled back the whole transaction. */

   		return(HA_ERR_LOCK_WAIT_TIMEOUT);