Commit 67d23360 authored by unknown's avatar unknown

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.
parent f13569a7
...@@ -243,11 +243,10 @@ dict_remove_db_name( ...@@ -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( ...@@ -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( ...@@ -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; ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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{ ...@@ -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 ...@@ -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. */ ...@@ -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) ...@@ -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) ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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: ...@@ -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; ...@@ -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) ...@@ -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) ...@@ -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: ...@@ -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: ...@@ -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) ...@@ -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( ...@@ -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: ...@@ -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( ...@@ -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( ...@@ -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. */ ...@@ -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 ...@@ -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: ...@@ -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
} }
/*********************************************************************** /***********************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment