Commit 820840a0 authored by unknown's avatar unknown
Browse files

Applied innodb-5.0-ss660 snapshot.


innobase/btr/btr0cur.c:
  Applied innodb-5.0-ss660 snapshot.
   btr_cur_search_to_nth_level(): Reacquire btr_search_latch after
   inserting to the insert buffer. This was noticed while analyzing
   Bug#19081 but this shold not fix this bug since according to
   Heikki, btr_search_latch is not reserved during an insert.
innobase/ibuf/ibuf0ibuf.c:
  Applied innodb-5.0-ss660 snapshot.
   ibuf_fixed_addr_page(): Add parameter space. As the insert buffer
   B-tree is only located in the system tablespace (space 0),
   IBUF_TREE_ROOT_PAGE_NO is only special in space 0.
innobase/include/sync0rw.ic:
  Applied innodb-5.0-ss660 snapshot.
   rw_lock_s_unlock_func(): Change a debug assertion to a
   production assertion in order to track down Bug#19081.
parent d8bb59fc
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -439,7 +439,7 @@ btr_cur_search_to_nth_level(
				if (UNIV_LIKELY_NULL(heap)) {
					mem_heap_free(heap);
				}
				return;
				goto func_exit;
			}

			/* Insert to the insert buffer did not succeed:
@@ -555,6 +555,7 @@ btr_cur_search_to_nth_level(
						|| mode != PAGE_CUR_LE);
	}

func_exit:
	if (has_search_latch) {
		
		rw_lock_s_lock(&btr_search_latch);
+6 −9
Original line number Diff line number Diff line
@@ -950,14 +950,11 @@ ibool
ibuf_fixed_addr_page(
/*=================*/
			/* out: TRUE if a fixed address ibuf i/o page */
	ulint	space,	/* in: space id */
	ulint	page_no)/* in: page number */
{
	if ((ibuf_bitmap_page(page_no))
				|| (page_no == IBUF_TREE_ROOT_PAGE_NO)) {
		return(TRUE);
	}

	return(FALSE);
	return((space == 0 && page_no == IBUF_TREE_ROOT_PAGE_NO)
			|| ibuf_bitmap_page(page_no));
}

/***************************************************************************
@@ -981,7 +978,7 @@ ibuf_page(
		return(FALSE);
	}

	if (ibuf_fixed_addr_page(page_no)) {
	if (ibuf_fixed_addr_page(space, page_no)) {

		return(TRUE);
	}
@@ -1029,7 +1026,7 @@ ibuf_page_low(
		return(FALSE);
	}
#endif	
	if (ibuf_fixed_addr_page(page_no)) {
	if (ibuf_fixed_addr_page(space, page_no)) {

		return(TRUE);
	}
@@ -3052,7 +3049,7 @@ ibuf_merge_or_delete_for_page(
		return;
	}
#endif	
	if (ibuf_fixed_addr_page(page_no) || fsp_descr_page(page_no)
	if (ibuf_fixed_addr_page(space, page_no) || fsp_descr_page(page_no)
					|| trx_sys_hdr_page(space, page_no)) {
		return;
	}
+1 −1
Original line number Diff line number Diff line
@@ -362,7 +362,7 @@ rw_lock_s_unlock_func(

	/* Reset the shared lock by decrementing the reader count */

	ut_ad(lock->reader_count > 0);
	ut_a(lock->reader_count > 0);
	lock->reader_count--;

#ifdef UNIV_SYNC_DEBUG