diff options
author | unknown <aivanov@mysql.com> | 2006-04-26 08:30:37 +0400 |
---|---|---|
committer | unknown <aivanov@mysql.com> | 2006-04-26 08:30:37 +0400 |
commit | 67d23360d791b86a0f82fef56b80c7884ea0dede (patch) | |
tree | f6f9823c53befea7e0c9ba768102a4be32689bf3 /storage | |
parent | f13569a76b996816657e4526898b59c42d545a2c (diff) | |
download | mariadb-git-67d23360d791b86a0f82fef56b80c7884ea0dede.tar.gz |
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.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/innobase/dict/dict0dict.c | 7 | ||||
-rw-r--r-- | storage/innobase/dict/dict0load.c | 2 | ||||
-rw-r--r-- | storage/innobase/include/os0thread.h | 2 | ||||
-rw-r--r-- | storage/innobase/include/srv0srv.h | 42 | ||||
-rw-r--r-- | storage/innobase/include/trx0roll.h | 6 | ||||
-rw-r--r-- | storage/innobase/include/univ.i | 12 | ||||
-rw-r--r-- | storage/innobase/log/log0recv.c | 3 | ||||
-rw-r--r-- | storage/innobase/os/os0thread.c | 10 | ||||
-rw-r--r-- | storage/innobase/que/que0que.c | 8 | ||||
-rw-r--r-- | storage/innobase/srv/srv0srv.c | 66 | ||||
-rw-r--r-- | storage/innobase/srv/srv0start.c | 17 | ||||
-rw-r--r-- | storage/innobase/trx/trx0roll.c | 14 |
12 files changed, 40 insertions, 149 deletions
diff --git a/storage/innobase/dict/dict0dict.c b/storage/innobase/dict/dict0dict.c index 877d4afe8f0..74dffd4c906 100644 --- a/storage/innobase/dict/dict0dict.c +++ b/storage/innobase/dict/dict0dict.c @@ -243,11 +243,10 @@ dict_remove_db_name( const char* name) /* in: table name in the form dbname '/' tablename */ { - const char* s; - s = strchr(name, '/'); + const char* s = strchr(name, '/'); ut_a(s); - if (s) s++; - return(s); + + return(s + 1); } /************************************************************************ diff --git a/storage/innobase/dict/dict0load.c b/storage/innobase/dict/dict0load.c index 4779e50f176..ccf4b47c284 100644 --- a/storage/innobase/dict/dict0load.c +++ b/storage/innobase/dict/dict0load.c @@ -617,7 +617,7 @@ dict_load_indexes( 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, ULINT_UNDEFINED); diff --git a/storage/innobase/include/os0thread.h b/storage/innobase/include/os0thread.h index 4685ffad351..3cf05feb3a9 100644 --- a/storage/innobase/include/os0thread.h +++ b/storage/innobase/include/os0thread.h @@ -77,7 +77,7 @@ os_thread_create( void* arg, /* in: argument to start function */ os_thread_id_t* thread_id); /* out: id of the created - thread */ + thread, or NULL */ int os_thread_join( /*===========*/ diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h index 906f0e3875c..ff82cb2999a 100644 --- a/storage/innobase/include/srv0srv.h +++ b/storage/innobase/include/srv0srv.h @@ -157,33 +157,12 @@ extern ulint srv_pool_size; extern ulint srv_mem_pool_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_lock_waits; extern ibool srv_print_buf_io; extern ibool srv_print_log_io; -extern ibool srv_print_parsed_sql; 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_fatal_semaphore_wait_threshold; extern ulint srv_dml_needed_delay; @@ -365,11 +344,7 @@ srv_release_threads( /************************************************************************* The master thread controlling the server. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_master_thread( /*==============*/ /* 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. This also prints the info output by various InnoDB monitors. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_lock_timeout_and_monitor_thread( /*================================*/ /* 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 too long. These can be used to track bugs which cause hangs. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_error_monitor_thread( /*=====================*/ /* out: a dummy parameter */ @@ -567,9 +534,6 @@ struct export_var_struct{ /* The server system 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 */ UT_LIST_BASE_NODE_T(que_thr_t) tasks; /* task queue */ diff --git a/storage/innobase/include/trx0roll.h b/storage/innobase/include/trx0roll.h index 7b450f9da39..25546430ba0 100644 --- a/storage/innobase/include/trx0roll.h +++ b/storage/innobase/include/trx0roll.h @@ -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. Note: this is done in a background thread. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t trx_rollback_or_clean_all_without_sess( /*===================================*/ /* out: a dummy parameter */ diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index 5b294ae0769..c5e87e468c6 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -273,6 +273,18 @@ it is read or written. */ /* Compile-time constant of the given array's size. */ #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 "ut0dbg.h" #include "ut0ut.h" diff --git a/storage/innobase/log/log0recv.c b/storage/innobase/log/log0recv.c index 2457ca76e72..4a91192782e 100644 --- a/storage/innobase/log/log0recv.c +++ b/storage/innobase/log/log0recv.c @@ -2940,7 +2940,6 @@ recv_recovery_from_checkpoint_finish(void) /*======================================*/ { int i; - os_thread_id_t recovery_thread_id; /* Apply the hashed log records to the respective file pages */ @@ -2984,7 +2983,7 @@ recv_recovery_from_checkpoint_finish(void) session */ os_thread_create(trx_rollback_or_clean_all_without_sess, - (void *)&i, &recovery_thread_id); + (void *)&i, NULL); } } diff --git a/storage/innobase/os/os0thread.c b/storage/innobase/os/os0thread.c index ff0362840c7..0b739c07557 100644 --- a/storage/innobase/os/os0thread.c +++ b/storage/innobase/os/os0thread.c @@ -96,7 +96,7 @@ os_thread_create( void* arg, /* in: argument to start function */ os_thread_id_t* thread_id) /* out: id of the created - thread */ + thread, or NULL */ { #ifdef __WIN__ os_thread_t thread; @@ -122,7 +122,9 @@ os_thread_create( ut_a(SetThreadPriority(thread, srv_query_thread_priority)); } - *thread_id = win_thread_id; + if (thread_id) { + *thread_id = win_thread_id; + } return(thread); #else @@ -180,7 +182,9 @@ os_thread_create( my_pthread_setprio(pthread, srv_query_thread_priority); } - *thread_id = pthread; + if (thread_id) { + *thread_id = pthread; + } return(pthread); #endif diff --git a/storage/innobase/que/que0que.c b/storage/innobase/que/que0que.c index 59d90eb7e29..c6d287276c7 100644 --- a/storage/innobase/que/que0que.c +++ b/storage/innobase/que/que0que.c @@ -1340,14 +1340,6 @@ loop: 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++; if (next_thr != thr) { diff --git a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c index fe1eeab9c3f..83cdcaa271b 100644 --- a/storage/innobase/srv/srv0srv.c +++ b/storage/innobase/srv/srv0srv.c @@ -362,30 +362,6 @@ ibool srv_print_innodb_lock_monitor = FALSE; ibool srv_print_innodb_tablespace_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 i/o handler thread */ @@ -911,10 +887,6 @@ srv_init(void) srv_meter_foreground[i] = 250; } - srv_sys->operational = os_event_create(NULL); - - ut_a(srv_sys->operational); - UT_LIST_INIT(srv_sys->tasks); /* 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. This also prints the info output by various InnoDB monitors. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_lock_timeout_and_monitor_thread( /*================================*/ /* out: a dummy parameter */ @@ -2023,22 +1991,15 @@ exit_func: thread should always use that to exit and not use return() to exit. */ os_thread_exit(NULL); -#ifndef __WIN__ - return(NULL); -#else - return(0); -#endif + + OS_THREAD_DUMMY_RETURN; } /************************************************************************* A thread which prints warnings about semaphore waits which have lasted too long. These can be used to track bugs which cause hangs. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_error_monitor_thread( /*=====================*/ /* out: a dummy parameter */ @@ -2120,11 +2081,7 @@ loop: os_thread_exit(NULL); -#ifndef __WIN__ - return(NULL); -#else - return(0); -#endif + OS_THREAD_DUMMY_RETURN; } /*********************************************************************** @@ -2169,11 +2126,7 @@ srv_wake_master_thread(void) /************************************************************************* The master thread controlling the server. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t srv_master_thread( /*==============*/ /* out: a dummy parameter */ @@ -2212,7 +2165,6 @@ srv_master_thread( mutex_exit(&kernel_mutex); - os_event_set(srv_sys->operational); loop: /*****************************************************************/ /* ---- When there is database activity by users, we cycle in this @@ -2619,10 +2571,6 @@ suspend_thread: os_thread_exit(NULL); -#ifndef __WIN__ - return(NULL); /* Not reached */ -#else - return(0); -#endif + OS_THREAD_DUMMY_RETURN; } #endif /* !UNIV_HOTBACKUP */ diff --git a/storage/innobase/srv/srv0start.c b/storage/innobase/srv/srv0start.c index c792d600500..da2deac123d 100644 --- a/storage/innobase/srv/srv0start.c +++ b/storage/innobase/srv/srv0start.c @@ -426,11 +426,7 @@ srv_parse_log_group_home_dirs( I/o-handler thread function. */ static -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t io_handler_thread( /*==============*/ void* arg) @@ -459,11 +455,7 @@ io_handler_thread( os_thread_exit(NULL); -#ifndef __WIN__ - return(NULL); /* Not reached */ -#else - return(0); -#endif + OS_THREAD_DUMMY_RETURN; } #endif /* !UNIV_HOTBACKUP */ @@ -1540,11 +1532,6 @@ NetWare. */ } #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", page_get_free_space_of_empty() / 2); */ diff --git a/storage/innobase/trx/trx0roll.c b/storage/innobase/trx/trx0roll.c index fd733ef5fb8..af74cfe9032 100644 --- a/storage/innobase/trx/trx0roll.c +++ b/storage/innobase/trx/trx0roll.c @@ -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. Note: this is done in a background thread. */ -#ifndef __WIN__ -void* -#else -ulint -#endif +os_thread_ret_t trx_rollback_or_clean_all_without_sess( /*===================================*/ /* out: a dummy parameter */ @@ -576,13 +572,7 @@ leave_function: os_thread_exit(NULL); - /* The following is dummy code to keep the compiler happy: */ - -#ifndef __WIN__ - return(NULL); -#else - return(0); -#endif + OS_THREAD_DUMMY_RETURN; } /*********************************************************************** |