Commit 8b7521eb authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi
Browse files

Merge with 3.23.53

parents fa4e07bf 75a39efa
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -51289,6 +51289,9 @@ Linux-x86 binaries.
@itemize @bullet
@item
Fixed buffer overflow problem if someone specified a too long datadir
parameter to mysqld
@item
Add missing @code{<row>} tags for @code{mysqldump} XML output.
@item
Fixed problem with @code{crash-me} and @code{gcc} 3.0.4.
+25 −0
Original line number Diff line number Diff line
@@ -302,6 +302,9 @@ btr_cur_search_to_nth_level(
		rw_lock_s_unlock(&btr_search_latch);
	}

	/* Store the position of the tree latch we push to mtr so that we
	know how to release it when we have latched leaf node(s) */

	savepoint = mtr_set_savepoint(mtr);

	tree = index->tree;
@@ -506,12 +509,18 @@ btr_cur_open_at_index_side(
	ulint		root_height = 0; /* remove warning */
	rec_t*		node_ptr;
	ulint		estimate;
	ulint           savepoint;

	estimate = latch_mode & BTR_ESTIMATE;
	latch_mode = latch_mode & ~BTR_ESTIMATE;
	
	tree = index->tree;
	
	/* Store the position of the tree latch we push to mtr so that we
	know how to release it when we have latched the leaf node */

	savepoint = mtr_set_savepoint(mtr);

	if (latch_mode == BTR_MODIFY_TREE) {
		mtr_x_lock(dict_tree_get_lock(tree), mtr);
	} else {
@@ -544,6 +553,22 @@ btr_cur_open_at_index_side(
		if (height == 0) {
			btr_cur_latch_leaves(tree, page, space, page_no,
						latch_mode, cursor, mtr);

			/* In versions <= 3.23.52 we had forgotten to
			release the tree latch here. If in an index scan
			we had to scan far to find a record visible to the
			current transaction, that could starve others
			waiting for the tree latch. */
 
			if ((latch_mode != BTR_MODIFY_TREE)
			    && (latch_mode != BTR_CONT_MODIFY_TREE)) {

				/* Release the tree s-latch */

				mtr_release_s_latch_at_savepoint(
						mtr, savepoint,
						dict_tree_get_lock(tree));
			}
		}
		
		if (from_left) {
+1 −1
Original line number Diff line number Diff line
@@ -2278,7 +2278,7 @@ os_aio_simulated_handle(
				    	ut_print_timestamp(stderr);
				    	fprintf(stderr,
"  InnoDB: ERROR: The page to be written seems corrupt!\n");
					page_print(combined_buf + len2);
					buf_page_print(combined_buf + len2);
				    	fprintf(stderr,
"InnoDB: ERROR: The page to be written seems corrupt!\n");
				}
+6 −0
Original line number Diff line number Diff line
@@ -49,6 +49,12 @@ os_event_create(
			TRUE,		/* Manual reset */
			FALSE,		/* Initial state nonsignaled */
			name);
	if (!event) {
	        fprintf(stderr,
"InnoDB: Could not create a Windows event semaphore; Windows error %lu\n",
		  (ulint)GetLastError());
	}

	ut_a(event);

	return(event);
+11 −2
Original line number Diff line number Diff line
@@ -2825,7 +2825,11 @@ srv_master_thread(
		
	srv_main_thread_op_info = (char*)"purging";

	if (srv_fast_shutdown && srv_shutdown_state > 0) {
	        n_pages_purged = 0;
	} else {
	        n_pages_purged = trx_purge();
	}

	srv_main_thread_op_info = (char*)"reserving kernel mutex";

@@ -2837,7 +2841,12 @@ srv_master_thread(
	mutex_exit(&kernel_mutex);

	srv_main_thread_op_info = (char*)"doing insert buffer merge";

	if (srv_fast_shutdown && srv_shutdown_state > 0) {
	        n_bytes_merged = 0;
	} else {
	        n_bytes_merged = ibuf_contract_for_n_pages(TRUE, 20);
	}

	srv_main_thread_op_info = (char*)"reserving kernel mutex";

Loading