Commit be51d6ae authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi
Browse files

row0mysql.c:

  Backport from 4.0: Fix corruption of ON DELETE CASCADE in lock wait timeout
parent 57152522
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -1012,10 +1012,25 @@ row_update_cascade_for_mysql(

	err = trx->error_state;

	/* Note that the cascade node is a subnode of another InnoDB
	query graph node. We do a normal lock wait in this node, but
	all errors are handled by the parent node. */

	if (err == DB_LOCK_WAIT) {
		/* Handle lock wait here */
	
		que_thr_stop_for_mysql(thr);

		row_mysql_handle_errors(&err, trx, thr, NULL);
		srv_suspend_mysql_thread(thr);

		/* Note that a lock wait may also end in a lock wait timeout */

		if (trx->error_state != DB_SUCCESS) {

			return(trx->error_state);
		}

		/* Retry operation after a normal lock wait */
		
		goto run_again;
	}