Commit c75eae35 authored by unknown's avatar unknown
Browse files

row0sel.c:

  Optimize speed: no need to keep track of set new rec locks in a consistent read


innobase/row/row0sel.c:
  Optimize speed: no need to keep track of set new rec locks in a consistent read
parent de21d09d
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -3150,7 +3150,9 @@ row_search_for_mysql(
	is set. Then we are able to remove the record locks set here on an
	individual row. */

	if (srv_locks_unsafe_for_binlog) {
	if (srv_locks_unsafe_for_binlog
	    && prebuilt->select_lock_type != LOCK_NONE) {

		trx_reset_new_rec_lock_info(trx);
	}

@@ -3793,7 +3795,9 @@ row_search_for_mysql(
		not a consistent read which might see an earlier version
		of a non-clustered index record */

		if (srv_locks_unsafe_for_binlog) {
		if (srv_locks_unsafe_for_binlog
	    	    && prebuilt->select_lock_type != LOCK_NONE) {

			/* No need to keep a lock on a delete-marked record
			if we do not want to use next-key locking. */

@@ -3845,7 +3849,9 @@ row_search_for_mysql(

			/* The record is delete marked: we can skip it */

			if (srv_locks_unsafe_for_binlog) {
			if (srv_locks_unsafe_for_binlog
	    		    && prebuilt->select_lock_type != LOCK_NONE) {

				/* No need to keep a lock on a delete-marked
				record if we do not want to use next-key
				locking. */
@@ -4013,6 +4019,8 @@ row_search_for_mysql(
	thr->lock_state = QUE_THR_LOCK_ROW;

	if (row_mysql_handle_errors(&err, trx, thr, NULL)) {
		/* It was a lock wait, and it ended */

		thr->lock_state = QUE_THR_LOCK_NOLOCK;
		mtr_start(&mtr);