mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Applied innodb-5.1-ss492 snapshot.
* Fix BUG#19217 "dict_load_indexes() may read the delete-mark incorrectly". * Remove obsolete and unused variables from srv0srv.c. * Remove srv_sys->operational since it is unused. * Make thread_id parameter in os_thread_create() optional. * Add platform-specific os_thread_ret_t and OS_THREAD_DUMMY_RETURN, and convert thread start functions to use them. storage/innobase/dict/dict0dict.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/dict/dict0load.c: Applied innodb-5.1-ss492 snapshot. dict_load_indexes(): pass comp=0 to rec_get_deleted_flag(), because SYS_INDEXES always is in ROW_FORMAT=REDUNDANT (Bug #19217). storage/innobase/include/os0thread.h: Applied innodb-5.1-ss492 snapshot. storage/innobase/include/srv0srv.h: Applied innodb-5.1-ss492 snapshot. storage/innobase/include/trx0roll.h: Applied innodb-5.1-ss492 snapshot. storage/innobase/include/univ.i: Applied innodb-5.1-ss492 snapshot. storage/innobase/log/log0recv.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/os/os0thread.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/que/que0que.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/srv/srv0srv.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/srv/srv0start.c: Applied innodb-5.1-ss492 snapshot. storage/innobase/trx/trx0roll.c: Applied innodb-5.1-ss492 snapshot.
This commit is contained in:
@ -243,11 +243,10 @@ dict_remove_db_name(
|
|||||||
const char* name) /* in: table name in the form
|
const char* name) /* in: table name in the form
|
||||||
dbname '/' tablename */
|
dbname '/' tablename */
|
||||||
{
|
{
|
||||||
const char* s;
|
const char* s = strchr(name, '/');
|
||||||
s = strchr(name, '/');
|
|
||||||
ut_a(s);
|
ut_a(s);
|
||||||
if (s) s++;
|
|
||||||
return(s);
|
return(s + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -617,7 +617,7 @@ dict_load_indexes(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rec_get_deleted_flag(rec, dict_table_is_comp(table))) {
|
if (rec_get_deleted_flag(rec, 0)) {
|
||||||
dict_load_report_deleted_index(table->name,
|
dict_load_report_deleted_index(table->name,
|
||||||
ULINT_UNDEFINED);
|
ULINT_UNDEFINED);
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ os_thread_create(
|
|||||||
void* arg, /* in: argument to start
|
void* arg, /* in: argument to start
|
||||||
function */
|
function */
|
||||||
os_thread_id_t* thread_id); /* out: id of the created
|
os_thread_id_t* thread_id); /* out: id of the created
|
||||||
thread */
|
thread, or NULL */
|
||||||
int
|
int
|
||||||
os_thread_join(
|
os_thread_join(
|
||||||
/*===========*/
|
/*===========*/
|
||||||
|
@ -157,33 +157,12 @@ extern ulint srv_pool_size;
|
|||||||
extern ulint srv_mem_pool_size;
|
extern ulint srv_mem_pool_size;
|
||||||
extern ulint srv_lock_table_size;
|
extern ulint srv_lock_table_size;
|
||||||
|
|
||||||
extern ulint srv_sim_disk_wait_pct;
|
|
||||||
extern ulint srv_sim_disk_wait_len;
|
|
||||||
extern ibool srv_sim_disk_wait_by_yield;
|
|
||||||
extern ibool srv_sim_disk_wait_by_wait;
|
|
||||||
|
|
||||||
extern ibool srv_measure_contention;
|
|
||||||
extern ibool srv_measure_by_spin;
|
|
||||||
|
|
||||||
extern ibool srv_print_thread_releases;
|
extern ibool srv_print_thread_releases;
|
||||||
extern ibool srv_print_lock_waits;
|
extern ibool srv_print_lock_waits;
|
||||||
extern ibool srv_print_buf_io;
|
extern ibool srv_print_buf_io;
|
||||||
extern ibool srv_print_log_io;
|
extern ibool srv_print_log_io;
|
||||||
extern ibool srv_print_parsed_sql;
|
|
||||||
extern ibool srv_print_latch_waits;
|
extern ibool srv_print_latch_waits;
|
||||||
|
|
||||||
extern ibool srv_test_nocache;
|
|
||||||
extern ibool srv_test_cache_evict;
|
|
||||||
|
|
||||||
extern ibool srv_test_extra_mutexes;
|
|
||||||
extern ibool srv_test_sync;
|
|
||||||
extern ulint srv_test_n_threads;
|
|
||||||
extern ulint srv_test_n_loops;
|
|
||||||
extern ulint srv_test_n_free_rnds;
|
|
||||||
extern ulint srv_test_n_reserved_rnds;
|
|
||||||
extern ulint srv_test_n_mutexes;
|
|
||||||
extern ulint srv_test_array_size;
|
|
||||||
|
|
||||||
extern ulint srv_activity_count;
|
extern ulint srv_activity_count;
|
||||||
extern ulint srv_fatal_semaphore_wait_threshold;
|
extern ulint srv_fatal_semaphore_wait_threshold;
|
||||||
extern ulint srv_dml_needed_delay;
|
extern ulint srv_dml_needed_delay;
|
||||||
@ -365,11 +344,7 @@ srv_release_threads(
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
The master thread controlling the server. */
|
The master thread controlling the server. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_master_thread(
|
srv_master_thread(
|
||||||
/*==============*/
|
/*==============*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -451,11 +426,7 @@ srv_release_mysql_thread_if_suspended(
|
|||||||
A thread which wakes up threads whose lock wait may have lasted too long.
|
A thread which wakes up threads whose lock wait may have lasted too long.
|
||||||
This also prints the info output by various InnoDB monitors. */
|
This also prints the info output by various InnoDB monitors. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_lock_timeout_and_monitor_thread(
|
srv_lock_timeout_and_monitor_thread(
|
||||||
/*================================*/
|
/*================================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -465,11 +436,7 @@ srv_lock_timeout_and_monitor_thread(
|
|||||||
A thread which prints warnings about semaphore waits which have lasted
|
A thread which prints warnings about semaphore waits which have lasted
|
||||||
too long. These can be used to track bugs which cause hangs. */
|
too long. These can be used to track bugs which cause hangs. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_error_monitor_thread(
|
srv_error_monitor_thread(
|
||||||
/*=====================*/
|
/*=====================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -567,9 +534,6 @@ struct export_var_struct{
|
|||||||
|
|
||||||
/* The server system struct */
|
/* The server system struct */
|
||||||
struct srv_sys_struct{
|
struct srv_sys_struct{
|
||||||
os_event_t operational; /* created threads must wait for the
|
|
||||||
server to become operational by
|
|
||||||
waiting for this event */
|
|
||||||
srv_table_t* threads; /* server thread table */
|
srv_table_t* threads; /* server thread table */
|
||||||
UT_LIST_BASE_NODE_T(que_thr_t)
|
UT_LIST_BASE_NODE_T(que_thr_t)
|
||||||
tasks; /* task queue */
|
tasks; /* task queue */
|
||||||
|
@ -107,11 +107,7 @@ transaction already was committed, then we clean up a possible insert
|
|||||||
undo log. If the transaction was not yet committed, then we roll it back.
|
undo log. If the transaction was not yet committed, then we roll it back.
|
||||||
Note: this is done in a background thread. */
|
Note: this is done in a background thread. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
trx_rollback_or_clean_all_without_sess(
|
trx_rollback_or_clean_all_without_sess(
|
||||||
/*===================================*/
|
/*===================================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
|
@ -273,6 +273,18 @@ it is read or written. */
|
|||||||
/* Compile-time constant of the given array's size. */
|
/* Compile-time constant of the given array's size. */
|
||||||
#define UT_ARR_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
#define UT_ARR_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
||||||
|
|
||||||
|
/* The return type from a thread's start function differs between Unix and
|
||||||
|
Windows, so define a typedef for it and a macro to use at the end of such
|
||||||
|
functions. */
|
||||||
|
|
||||||
|
#ifdef __WIN__
|
||||||
|
typedef ulint os_thread_ret_t;
|
||||||
|
#define OS_THREAD_DUMMY_RETURN return(0)
|
||||||
|
#else
|
||||||
|
typedef void* os_thread_ret_t;
|
||||||
|
#define OS_THREAD_DUMMY_RETURN return(NULL)
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "ut0dbg.h"
|
#include "ut0dbg.h"
|
||||||
#include "ut0ut.h"
|
#include "ut0ut.h"
|
||||||
|
@ -2940,7 +2940,6 @@ recv_recovery_from_checkpoint_finish(void)
|
|||||||
/*======================================*/
|
/*======================================*/
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
os_thread_id_t recovery_thread_id;
|
|
||||||
|
|
||||||
/* Apply the hashed log records to the respective file pages */
|
/* Apply the hashed log records to the respective file pages */
|
||||||
|
|
||||||
@ -2984,7 +2983,7 @@ recv_recovery_from_checkpoint_finish(void)
|
|||||||
session */
|
session */
|
||||||
|
|
||||||
os_thread_create(trx_rollback_or_clean_all_without_sess,
|
os_thread_create(trx_rollback_or_clean_all_without_sess,
|
||||||
(void *)&i, &recovery_thread_id);
|
(void *)&i, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ os_thread_create(
|
|||||||
void* arg, /* in: argument to start
|
void* arg, /* in: argument to start
|
||||||
function */
|
function */
|
||||||
os_thread_id_t* thread_id) /* out: id of the created
|
os_thread_id_t* thread_id) /* out: id of the created
|
||||||
thread */
|
thread, or NULL */
|
||||||
{
|
{
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
os_thread_t thread;
|
os_thread_t thread;
|
||||||
@ -122,7 +122,9 @@ os_thread_create(
|
|||||||
ut_a(SetThreadPriority(thread, srv_query_thread_priority));
|
ut_a(SetThreadPriority(thread, srv_query_thread_priority));
|
||||||
}
|
}
|
||||||
|
|
||||||
*thread_id = win_thread_id;
|
if (thread_id) {
|
||||||
|
*thread_id = win_thread_id;
|
||||||
|
}
|
||||||
|
|
||||||
return(thread);
|
return(thread);
|
||||||
#else
|
#else
|
||||||
@ -180,7 +182,9 @@ os_thread_create(
|
|||||||
my_pthread_setprio(pthread, srv_query_thread_priority);
|
my_pthread_setprio(pthread, srv_query_thread_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
*thread_id = pthread;
|
if (thread_id) {
|
||||||
|
*thread_id = pthread;
|
||||||
|
}
|
||||||
|
|
||||||
return(pthread);
|
return(pthread);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1340,14 +1340,6 @@ loop:
|
|||||||
next_thr = que_thr_step(thr);
|
next_thr = que_thr_step(thr);
|
||||||
/*-------------------------*/
|
/*-------------------------*/
|
||||||
|
|
||||||
/* Test the effect on performance of adding extra mutex
|
|
||||||
reservations */
|
|
||||||
|
|
||||||
/* if (srv_test_extra_mutexes) {
|
|
||||||
mutex_enter(&kernel_mutex);
|
|
||||||
mutex_exit(&kernel_mutex);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
loop_count++;
|
loop_count++;
|
||||||
|
|
||||||
if (next_thr != thr) {
|
if (next_thr != thr) {
|
||||||
|
@ -362,30 +362,6 @@ ibool srv_print_innodb_lock_monitor = FALSE;
|
|||||||
ibool srv_print_innodb_tablespace_monitor = FALSE;
|
ibool srv_print_innodb_tablespace_monitor = FALSE;
|
||||||
ibool srv_print_innodb_table_monitor = FALSE;
|
ibool srv_print_innodb_table_monitor = FALSE;
|
||||||
|
|
||||||
/* The parameters below are obsolete: */
|
|
||||||
|
|
||||||
ibool srv_print_parsed_sql = FALSE;
|
|
||||||
|
|
||||||
ulint srv_sim_disk_wait_pct = ULINT_MAX;
|
|
||||||
ulint srv_sim_disk_wait_len = ULINT_MAX;
|
|
||||||
ibool srv_sim_disk_wait_by_yield = FALSE;
|
|
||||||
ibool srv_sim_disk_wait_by_wait = FALSE;
|
|
||||||
|
|
||||||
ibool srv_measure_contention = FALSE;
|
|
||||||
ibool srv_measure_by_spin = FALSE;
|
|
||||||
|
|
||||||
ibool srv_test_extra_mutexes = FALSE;
|
|
||||||
ibool srv_test_nocache = FALSE;
|
|
||||||
ibool srv_test_cache_evict = FALSE;
|
|
||||||
|
|
||||||
ibool srv_test_sync = FALSE;
|
|
||||||
ulint srv_test_n_threads = ULINT_MAX;
|
|
||||||
ulint srv_test_n_loops = ULINT_MAX;
|
|
||||||
ulint srv_test_n_free_rnds = ULINT_MAX;
|
|
||||||
ulint srv_test_n_reserved_rnds = ULINT_MAX;
|
|
||||||
ulint srv_test_array_size = ULINT_MAX;
|
|
||||||
ulint srv_test_n_mutexes = ULINT_MAX;
|
|
||||||
|
|
||||||
/* Array of English strings describing the current state of an
|
/* Array of English strings describing the current state of an
|
||||||
i/o handler thread */
|
i/o handler thread */
|
||||||
|
|
||||||
@ -911,10 +887,6 @@ srv_init(void)
|
|||||||
srv_meter_foreground[i] = 250;
|
srv_meter_foreground[i] = 250;
|
||||||
}
|
}
|
||||||
|
|
||||||
srv_sys->operational = os_event_create(NULL);
|
|
||||||
|
|
||||||
ut_a(srv_sys->operational);
|
|
||||||
|
|
||||||
UT_LIST_INIT(srv_sys->tasks);
|
UT_LIST_INIT(srv_sys->tasks);
|
||||||
|
|
||||||
/* create dummy table and index for old-style infimum and supremum */
|
/* create dummy table and index for old-style infimum and supremum */
|
||||||
@ -1847,11 +1819,7 @@ srv_export_innodb_status(void)
|
|||||||
A thread which wakes up threads whose lock wait may have lasted too long.
|
A thread which wakes up threads whose lock wait may have lasted too long.
|
||||||
This also prints the info output by various InnoDB monitors. */
|
This also prints the info output by various InnoDB monitors. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_lock_timeout_and_monitor_thread(
|
srv_lock_timeout_and_monitor_thread(
|
||||||
/*================================*/
|
/*================================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -2023,22 +1991,15 @@ exit_func:
|
|||||||
thread should always use that to exit and not use return() to exit. */
|
thread should always use that to exit and not use return() to exit. */
|
||||||
|
|
||||||
os_thread_exit(NULL);
|
os_thread_exit(NULL);
|
||||||
#ifndef __WIN__
|
|
||||||
return(NULL);
|
OS_THREAD_DUMMY_RETURN;
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
A thread which prints warnings about semaphore waits which have lasted
|
A thread which prints warnings about semaphore waits which have lasted
|
||||||
too long. These can be used to track bugs which cause hangs. */
|
too long. These can be used to track bugs which cause hangs. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_error_monitor_thread(
|
srv_error_monitor_thread(
|
||||||
/*=====================*/
|
/*=====================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -2120,11 +2081,7 @@ loop:
|
|||||||
|
|
||||||
os_thread_exit(NULL);
|
os_thread_exit(NULL);
|
||||||
|
|
||||||
#ifndef __WIN__
|
OS_THREAD_DUMMY_RETURN;
|
||||||
return(NULL);
|
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
@ -2169,11 +2126,7 @@ srv_wake_master_thread(void)
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
The master thread controlling the server. */
|
The master thread controlling the server. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
srv_master_thread(
|
srv_master_thread(
|
||||||
/*==============*/
|
/*==============*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -2212,7 +2165,6 @@ srv_master_thread(
|
|||||||
|
|
||||||
mutex_exit(&kernel_mutex);
|
mutex_exit(&kernel_mutex);
|
||||||
|
|
||||||
os_event_set(srv_sys->operational);
|
|
||||||
loop:
|
loop:
|
||||||
/*****************************************************************/
|
/*****************************************************************/
|
||||||
/* ---- When there is database activity by users, we cycle in this
|
/* ---- When there is database activity by users, we cycle in this
|
||||||
@ -2619,10 +2571,6 @@ suspend_thread:
|
|||||||
|
|
||||||
os_thread_exit(NULL);
|
os_thread_exit(NULL);
|
||||||
|
|
||||||
#ifndef __WIN__
|
OS_THREAD_DUMMY_RETURN;
|
||||||
return(NULL); /* Not reached */
|
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
@ -426,11 +426,7 @@ srv_parse_log_group_home_dirs(
|
|||||||
I/o-handler thread function. */
|
I/o-handler thread function. */
|
||||||
static
|
static
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
io_handler_thread(
|
io_handler_thread(
|
||||||
/*==============*/
|
/*==============*/
|
||||||
void* arg)
|
void* arg)
|
||||||
@ -459,11 +455,7 @@ io_handler_thread(
|
|||||||
|
|
||||||
os_thread_exit(NULL);
|
os_thread_exit(NULL);
|
||||||
|
|
||||||
#ifndef __WIN__
|
OS_THREAD_DUMMY_RETURN;
|
||||||
return(NULL); /* Not reached */
|
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
@ -1540,11 +1532,6 @@ NetWare. */
|
|||||||
}
|
}
|
||||||
#endif /* UNIV_LOG_ARCHIVE */
|
#endif /* UNIV_LOG_ARCHIVE */
|
||||||
|
|
||||||
if (srv_measure_contention) {
|
|
||||||
/* os_thread_create(&test_measure_cont, NULL, thread_ids +
|
|
||||||
SRV_MAX_N_IO_THREADS); */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fprintf(stderr, "Max allowed record size %lu\n",
|
/* fprintf(stderr, "Max allowed record size %lu\n",
|
||||||
page_get_free_space_of_empty() / 2); */
|
page_get_free_space_of_empty() / 2); */
|
||||||
|
|
||||||
|
@ -391,11 +391,7 @@ transaction already was committed, then we clean up a possible insert
|
|||||||
undo log. If the transaction was not yet committed, then we roll it back.
|
undo log. If the transaction was not yet committed, then we roll it back.
|
||||||
Note: this is done in a background thread. */
|
Note: this is done in a background thread. */
|
||||||
|
|
||||||
#ifndef __WIN__
|
os_thread_ret_t
|
||||||
void*
|
|
||||||
#else
|
|
||||||
ulint
|
|
||||||
#endif
|
|
||||||
trx_rollback_or_clean_all_without_sess(
|
trx_rollback_or_clean_all_without_sess(
|
||||||
/*===================================*/
|
/*===================================*/
|
||||||
/* out: a dummy parameter */
|
/* out: a dummy parameter */
|
||||||
@ -576,13 +572,7 @@ leave_function:
|
|||||||
|
|
||||||
os_thread_exit(NULL);
|
os_thread_exit(NULL);
|
||||||
|
|
||||||
/* The following is dummy code to keep the compiler happy: */
|
OS_THREAD_DUMMY_RETURN;
|
||||||
|
|
||||||
#ifndef __WIN__
|
|
||||||
return(NULL);
|
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
Reference in New Issue
Block a user