summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorunknown <aivanov@mysql.com>2006-04-26 08:30:37 +0400
committerunknown <aivanov@mysql.com>2006-04-26 08:30:37 +0400
commit67d23360d791b86a0f82fef56b80c7884ea0dede (patch)
treef6f9823c53befea7e0c9ba768102a4be32689bf3 /storage
parentf13569a76b996816657e4526898b59c42d545a2c (diff)
downloadmariadb-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.c7
-rw-r--r--storage/innobase/dict/dict0load.c2
-rw-r--r--storage/innobase/include/os0thread.h2
-rw-r--r--storage/innobase/include/srv0srv.h42
-rw-r--r--storage/innobase/include/trx0roll.h6
-rw-r--r--storage/innobase/include/univ.i12
-rw-r--r--storage/innobase/log/log0recv.c3
-rw-r--r--storage/innobase/os/os0thread.c10
-rw-r--r--storage/innobase/que/que0que.c8
-rw-r--r--storage/innobase/srv/srv0srv.c66
-rw-r--r--storage/innobase/srv/srv0start.c17
-rw-r--r--storage/innobase/trx/trx0roll.c14
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;
}
/***********************************************************************