Commit 2aa44dd9 authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi

Merge hundin.mysql.fi:/home/heikki/mysql-4.1

into hundin.mysql.fi:/home/heikki/mysql-5.0
parents 50a823df 8a906d79
...@@ -80,6 +80,9 @@ extern "C" { ...@@ -80,6 +80,9 @@ extern "C" {
/* On NetWare, stack grows towards lower address*/ /* On NetWare, stack grows towards lower address*/
#define STACK_DIRECTION -1 #define STACK_DIRECTION -1
/* On NetWare, to fix the problem with the deletion of open files */
#define CANT_DELETE_OPEN_FILES 1
/* default directory information */ /* default directory information */
#define DEFAULT_MYSQL_HOME "sys:/mysql" #define DEFAULT_MYSQL_HOME "sys:/mysql"
#define PACKAGE "mysql" #define PACKAGE "mysql"
......
...@@ -381,6 +381,12 @@ struct trx_struct{ ...@@ -381,6 +381,12 @@ struct trx_struct{
in MySQL's binlog write, we will in MySQL's binlog write, we will
flush the log to disk later in flush the log to disk later in
a separate call */ a separate call */
ibool must_flush_log_later;/* this flag is set to TRUE in
trx_commit_off_kernel() if
flush_log_later was TRUE, and there
were modifications by the transaction;
in that case we must flush the log
in trx_commit_complete_for_mysql() */
dulint commit_lsn; /* lsn at the time of the commit */ dulint commit_lsn; /* lsn at the time of the commit */
ibool dict_operation; /* TRUE if the trx is used to create ibool dict_operation; /* TRUE if the trx is used to create
a table, create an index, or drop a a table, create an index, or drop a
......
...@@ -99,6 +99,7 @@ trx_create( ...@@ -99,6 +99,7 @@ trx_create(
trx->check_unique_secondary = TRUE; trx->check_unique_secondary = TRUE;
trx->flush_log_later = FALSE; trx->flush_log_later = FALSE;
trx->must_flush_log_later = FALSE;
trx->dict_operation = FALSE; trx->dict_operation = FALSE;
...@@ -710,6 +711,8 @@ trx_commit_off_kernel( ...@@ -710,6 +711,8 @@ trx_commit_off_kernel(
ut_ad(mutex_own(&kernel_mutex)); ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
trx->must_flush_log_later = FALSE;
rseg = trx->rseg; rseg = trx->rseg;
if (trx->insert_undo != NULL || trx->update_undo != NULL) { if (trx->insert_undo != NULL || trx->update_undo != NULL) {
...@@ -875,6 +878,7 @@ trx_commit_off_kernel( ...@@ -875,6 +878,7 @@ trx_commit_off_kernel(
if (trx->flush_log_later) { if (trx->flush_log_later) {
/* Do nothing yet */ /* Do nothing yet */
trx->must_flush_log_later = TRUE;
} else if (srv_flush_log_at_trx_commit == 0) { } else if (srv_flush_log_at_trx_commit == 0) {
/* Do nothing */ /* Do nothing */
} else if (srv_flush_log_at_trx_commit == 1) { } else if (srv_flush_log_at_trx_commit == 1) {
...@@ -1594,7 +1598,9 @@ trx_commit_complete_for_mysql( ...@@ -1594,7 +1598,9 @@ trx_commit_complete_for_mysql(
trx->op_info = "flushing log"; trx->op_info = "flushing log";
if (srv_flush_log_at_trx_commit == 0) { if (!trx->must_flush_log_later) {
/* Do nothing */
} else if (srv_flush_log_at_trx_commit == 0) {
/* Do nothing */ /* Do nothing */
} else if (srv_flush_log_at_trx_commit == 1) { } else if (srv_flush_log_at_trx_commit == 1) {
if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) { if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) {
...@@ -1616,6 +1622,8 @@ trx_commit_complete_for_mysql( ...@@ -1616,6 +1622,8 @@ trx_commit_complete_for_mysql(
ut_error; ut_error;
} }
trx->must_flush_log_later = FALSE;
trx->op_info = ""; trx->op_info = "";
return(0); return(0);
......
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