mirror of
https://github.com/MariaDB/server.git
synced 2026-05-10 17:14:30 +02:00
Added xml patch to mysqldump.
Made innodb to compile more cleanly with debugging options enabled. Fixed a few bugs and found a few possible bugs, which I hope Heikki will check. Comments needs to be fixed too. Some while() functions should be changed to do ... until for documenting purposes, because some of them must and will be processed at least once, or a variable would be used uninitialized. Regards, Jani client/mysqldump.c: Added xml output. Patch originally from Gary Huntress, but needed a some clean up. innobase/btr/btr0btr.c: cleaner compiling innobase/btr/btr0cur.c: cleaner compiling innobase/btr/btr0sea.c: cleaner compiling / found a bug ?? innobase/buf/buf0buf.c: Fixed a bug. innobase/buf/buf0lru.c: Fixed a bug. innobase/data/data0data.c: cleaner compiling innobase/dict/dict0boot.c: cleaner compiling innobase/dict/dict0crea.c: cleaner compiling innobase/dict/dict0dict.c: cleaner compiling innobase/dict/dict0load.c: cleaner compiling innobase/eval/eval0eval.c: cleaner compiling / found a bug ?? innobase/fil/fil0fil.c: cleaner compiling innobase/fsp/fsp0fsp.c: cleaner compiling innobase/ibuf/ibuf0ibuf.c: cleaner compiling innobase/include/btr0btr.ic: cleaner compiling innobase/include/buf0buf.ic: cleaner compiling innobase/include/dict0dict.ic: cleaner compiling innobase/include/ha0ha.ic: cleaner compiling innobase/include/row0mysql.ic: cleaner compiling innobase/include/row0vers.ic: cleaner compiling innobase/include/sync0rw.ic: cleaner compiling innobase/lock/lock0lock.c: cleaner compiling innobase/mem/mem0dbg.c: cleaner compiling innobase/mtr/mtr0mtr.c: cleaner compiling innobase/odbc/odbc0odbc.c: cleaner compiling innobase/os/os0thread.c: cleaner compiling innobase/page/page0cur.c: cleaner compiling. while() should be changed to do ... until for documenting purposes. innobase/page/page0page.c: cleaner compiling innobase/pars/pars0opt.c: cleaner compiling. while() should be changed to do ... until, because it will and must be processed at least once (for documenting purposes) innobase/pars/pars0pars.c: cleaner compiling innobase/que/que0que.c: cleaner compiling innobase/rem/rem0cmp.c: cleaner compiling innobase/rem/rem0rec.c: cleaner compiling innobase/row/row0ins.c: cleaner compiling innobase/row/row0mysql.c: cleaner compiling innobase/row/row0purge.c: cleaner compiling innobase/row/row0sel.c: cleaner compiling innobase/row/row0uins.c: cleaner compiling innobase/row/row0umod.c: cleaner compiling innobase/row/row0upd.c: cleaner compiling innobase/srv/srv0srv.c: cleaner compiling innobase/srv/srv0start.c: cleaner compiling innobase/sync/sync0arr.c: cleaner compiling innobase/sync/sync0rw.c: cleaner compiling innobase/sync/sync0sync.c: cleaner compiling innobase/trx/trx0purge.c: cleaner compiling. in theory this could also be a bug, although probably not. But the logic needs to be checked, it could be that these variables may be used uninitialized. innobase/trx/trx0rec.c: cleaner compiling innobase/trx/trx0roll.c: cleaner compiling innobase/trx/trx0trx.c: cleaner compiling innobase/trx/trx0undo.c: cleaner compiling
This commit is contained in:
parent
7fe5963c44
commit
adb703943d
51 changed files with 441 additions and 348 deletions
|
|
@ -57,7 +57,7 @@ ulint srv_activity_count = 0;
|
|||
ibool srv_lock_timeout_and_monitor_active = FALSE;
|
||||
ibool srv_error_monitor_active = FALSE;
|
||||
|
||||
char* srv_main_thread_op_info = "";
|
||||
char* srv_main_thread_op_info = (char *) "";
|
||||
|
||||
/* Server parameters which are read from the initfile */
|
||||
|
||||
|
|
@ -929,6 +929,7 @@ srv_communication_init(
|
|||
|
||||
/*************************************************************************
|
||||
Implements the recovery utility. */
|
||||
#ifdef NOT_USED
|
||||
static
|
||||
ulint
|
||||
srv_recovery_thread(
|
||||
|
|
@ -966,7 +967,7 @@ srv_recovery_thread(
|
|||
|
||||
return(0);
|
||||
}
|
||||
|
||||
#endif
|
||||
/*************************************************************************
|
||||
Implements the purge utility. */
|
||||
|
||||
|
|
@ -1018,6 +1019,7 @@ srv_create_utility_threads(void)
|
|||
|
||||
/*************************************************************************
|
||||
Implements the communication threads. */
|
||||
#ifdef NOT_USED
|
||||
static
|
||||
ulint
|
||||
srv_com_thread(
|
||||
|
|
@ -1065,7 +1067,7 @@ srv_com_thread(
|
|||
|
||||
return(0);
|
||||
}
|
||||
|
||||
#endif
|
||||
/*************************************************************************
|
||||
Creates the communication threads. */
|
||||
|
||||
|
|
@ -1087,6 +1089,7 @@ srv_create_com_threads(void)
|
|||
|
||||
/*************************************************************************
|
||||
Implements the worker threads. */
|
||||
#ifdef NOT_USED
|
||||
static
|
||||
ulint
|
||||
srv_worker_thread(
|
||||
|
|
@ -1129,7 +1132,7 @@ srv_worker_thread(
|
|||
|
||||
return(0);
|
||||
}
|
||||
|
||||
#endif
|
||||
/*************************************************************************
|
||||
Creates the worker threads. */
|
||||
|
||||
|
|
@ -2283,7 +2286,7 @@ srv_master_thread(
|
|||
|
||||
os_event_set(srv_sys->operational);
|
||||
loop:
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
n_ios_very_old = log_sys->n_log_ios + buf_pool->n_pages_read
|
||||
+ buf_pool->n_pages_written;
|
||||
|
|
@ -2299,7 +2302,7 @@ loop:
|
|||
for (i = 0; i < 10; i++) {
|
||||
n_ios_old = log_sys->n_log_ios + buf_pool->n_pages_read
|
||||
+ buf_pool->n_pages_written;
|
||||
srv_main_thread_op_info = "sleeping";
|
||||
srv_main_thread_op_info = (char *) "sleeping";
|
||||
os_thread_sleep(1000000);
|
||||
|
||||
if (srv_force_recovery >= SRV_FORCE_NO_BACKGROUND) {
|
||||
|
|
@ -2311,7 +2314,7 @@ loop:
|
|||
is issued or the we have specified in my.cnf no flush
|
||||
at transaction commit */
|
||||
|
||||
srv_main_thread_op_info = "flushing log";
|
||||
srv_main_thread_op_info = (char *) "flushing log";
|
||||
log_flush_up_to(ut_dulint_max, LOG_WAIT_ONE_GROUP);
|
||||
|
||||
/* If there were less than 10 i/os during the
|
||||
|
|
@ -2324,10 +2327,11 @@ loop:
|
|||
n_ios = log_sys->n_log_ios + buf_pool->n_pages_read
|
||||
+ buf_pool->n_pages_written;
|
||||
if (n_pend_ios < 3 && (n_ios - n_ios_old < 10)) {
|
||||
srv_main_thread_op_info = "doing insert buffer merge";
|
||||
srv_main_thread_op_info =
|
||||
(char *) "doing insert buffer merge";
|
||||
ibuf_contract_for_n_pages(TRUE, 5);
|
||||
|
||||
srv_main_thread_op_info = "flushing log";
|
||||
srv_main_thread_op_info = (char *) "flushing log";
|
||||
log_flush_up_to(ut_dulint_max, LOG_WAIT_ONE_GROUP);
|
||||
}
|
||||
|
||||
|
|
@ -2359,20 +2363,20 @@ loop:
|
|||
+ buf_pool->n_pages_written;
|
||||
if (n_pend_ios < 3 && (n_ios - n_ios_very_old < 200)) {
|
||||
|
||||
srv_main_thread_op_info = "flushing buffer pool pages";
|
||||
srv_main_thread_op_info =(char *) "flushing buffer pool pages";
|
||||
buf_flush_batch(BUF_FLUSH_LIST, 50, ut_dulint_max);
|
||||
|
||||
srv_main_thread_op_info = "flushing log";
|
||||
srv_main_thread_op_info = (char *) "flushing log";
|
||||
log_flush_up_to(ut_dulint_max, LOG_WAIT_ONE_GROUP);
|
||||
}
|
||||
|
||||
/* We run a batch of insert buffer merge every 10 seconds,
|
||||
even if the server were active */
|
||||
|
||||
srv_main_thread_op_info = "doing insert buffer merge";
|
||||
srv_main_thread_op_info = (char *) "doing insert buffer merge";
|
||||
ibuf_contract_for_n_pages(TRUE, 5);
|
||||
|
||||
srv_main_thread_op_info = "flushing log";
|
||||
srv_main_thread_op_info = (char *) "flushing log";
|
||||
log_flush_up_to(ut_dulint_max, LOG_WAIT_ONE_GROUP);
|
||||
|
||||
/* We run a full purge every 10 seconds, even if the server
|
||||
|
|
@ -2389,13 +2393,13 @@ loop:
|
|||
goto background_loop;
|
||||
}
|
||||
|
||||
srv_main_thread_op_info = "purging";
|
||||
srv_main_thread_op_info = (char *) "purging";
|
||||
n_pages_purged = trx_purge();
|
||||
|
||||
current_time = time(NULL);
|
||||
|
||||
if (difftime(current_time, last_flush_time) > 1) {
|
||||
srv_main_thread_op_info = "flushing log";
|
||||
srv_main_thread_op_info = (char *) "flushing log";
|
||||
|
||||
log_flush_up_to(ut_dulint_max, LOG_WAIT_ONE_GROUP);
|
||||
last_flush_time = current_time;
|
||||
|
|
@ -2406,7 +2410,7 @@ background_loop:
|
|||
/* In this loop we run background operations when the server
|
||||
is quiet */
|
||||
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
|
|
@ -2419,11 +2423,11 @@ background_loop:
|
|||
/* The server has been quiet for a while: start running background
|
||||
operations */
|
||||
|
||||
srv_main_thread_op_info = "purging";
|
||||
srv_main_thread_op_info = (char *) "purging";
|
||||
|
||||
n_pages_purged = trx_purge();
|
||||
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
|
|
@ -2432,10 +2436,10 @@ background_loop:
|
|||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
srv_main_thread_op_info = "doing insert buffer merge";
|
||||
srv_main_thread_op_info = (char *) "doing insert buffer merge";
|
||||
n_bytes_merged = ibuf_contract_for_n_pages(TRUE, 20);
|
||||
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
|
|
@ -2444,10 +2448,10 @@ background_loop:
|
|||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
srv_main_thread_op_info = "flushing buffer pool pages";
|
||||
srv_main_thread_op_info = (char *) "flushing buffer pool pages";
|
||||
n_pages_flushed = buf_flush_batch(BUF_FLUSH_LIST, 100, ut_dulint_max);
|
||||
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
|
|
@ -2456,14 +2460,15 @@ background_loop:
|
|||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
srv_main_thread_op_info = "waiting for buffer pool flush to end";
|
||||
srv_main_thread_op_info =
|
||||
(char *) "waiting for buffer pool flush to end";
|
||||
buf_flush_wait_batch_end(BUF_FLUSH_LIST);
|
||||
|
||||
srv_main_thread_op_info = "making checkpoint";
|
||||
srv_main_thread_op_info = (char *) "making checkpoint";
|
||||
|
||||
log_checkpoint(TRUE, FALSE);
|
||||
|
||||
srv_main_thread_op_info = "reserving kernel mutex";
|
||||
srv_main_thread_op_info = (char *) "reserving kernel mutex";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
|
|
@ -2472,7 +2477,8 @@ background_loop:
|
|||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
srv_main_thread_op_info = "archiving log (if log archive is on)";
|
||||
srv_main_thread_op_info =
|
||||
(char *) "archiving log (if log archive is on)";
|
||||
|
||||
log_archive_do(FALSE, &n_bytes_archived);
|
||||
|
||||
|
|
@ -2496,7 +2502,7 @@ background_loop:
|
|||
master thread to wait for more server activity */
|
||||
|
||||
suspend_thread:
|
||||
srv_main_thread_op_info = "suspending";
|
||||
srv_main_thread_op_info = (char *) "suspending";
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
|
|
@ -2504,7 +2510,7 @@ suspend_thread:
|
|||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
srv_main_thread_op_info = "waiting for server activity";
|
||||
srv_main_thread_op_info = (char *) "waiting for server activity";
|
||||
|
||||
os_event_wait(event);
|
||||
|
||||
|
|
|
|||
|
|
@ -131,7 +131,8 @@ static
|
|||
void
|
||||
srv_normalize_path_for_win(
|
||||
/*=======================*/
|
||||
char* str) /* in/out: null-terminated character string */
|
||||
char* str __attribute__((unused)))
|
||||
/* in/out: null-terminated character string */
|
||||
{
|
||||
#ifdef __WIN__
|
||||
ulint i;
|
||||
|
|
@ -311,7 +312,8 @@ open_or_create_log_file(
|
|||
if (k == 0 && i == 0) {
|
||||
arch_space_id = 2 * k + 1 + SRV_LOG_SPACE_FIRST_ID;
|
||||
|
||||
fil_space_create("arch_log_space", arch_space_id, FIL_LOG);
|
||||
fil_space_create((char *) "arch_log_space", arch_space_id,
|
||||
FIL_LOG);
|
||||
} else {
|
||||
arch_space_id = ULINT_UNDEFINED;
|
||||
}
|
||||
|
|
@ -509,6 +511,7 @@ open_or_create_data_files(
|
|||
|
||||
/*********************************************************************
|
||||
This thread is used to measure contention of latches. */
|
||||
#ifdef NOT_USED
|
||||
static
|
||||
ulint
|
||||
test_measure_cont(
|
||||
|
|
@ -578,7 +581,7 @@ test_measure_cont(
|
|||
|
||||
return(0);
|
||||
}
|
||||
|
||||
#endif
|
||||
/********************************************************************
|
||||
Starts InnoDB and creates a new database if database files
|
||||
are not found and the user wants. Server parameters are
|
||||
|
|
@ -610,18 +613,21 @@ innobase_start_or_create_for_mysql(void)
|
|||
srv_is_being_started = TRUE;
|
||||
srv_startup_is_before_trx_rollback_phase = TRUE;
|
||||
|
||||
if (0 == ut_strcmp(srv_unix_file_flush_method_str, "fdatasync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_FDATASYNC;
|
||||
|
||||
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str, "O_DSYNC")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_O_DSYNC;
|
||||
if (0 == ut_strcmp(srv_unix_file_flush_method_str,
|
||||
(char *) "fdatasync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_FDATASYNC;
|
||||
|
||||
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str,
|
||||
"littlesync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_LITTLESYNC;
|
||||
(char *) "O_DSYNC")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_O_DSYNC;
|
||||
|
||||
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str, "nosync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_NOSYNC;
|
||||
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str,
|
||||
(char *) "littlesync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_LITTLESYNC;
|
||||
|
||||
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str,
|
||||
(char *) "nosync")) {
|
||||
srv_unix_file_flush_method = SRV_UNIX_NOSYNC;
|
||||
} else {
|
||||
fprintf(stderr,
|
||||
"InnoDB: Unrecognized value %s for innodb_flush_method\n",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue