Commit 98026209 authored by unknown's avatar unknown

Merge mysql.sashanet.com:/home/sasha/src/bk/mysql

into mysql.sashanet.com:/home/sasha/src/bk/mysql-4.0


BitKeeper/etc/logging_ok:
  auto-union
sql/slave.cc:
  Auto merged
sql/sql_repl.cc:
  Auto merged
parents a2458dd7 a28d5ad9
heikki@donna.mysql.fi
jani@janikt.pp.saunalahti.fi jani@janikt.pp.saunalahti.fi
monty@hundin.mysql.fi monty@hundin.mysql.fi
monty@work.mysql.com
mwagner@evoq.mwagner.org mwagner@evoq.mwagner.org
sasha@mysql.sashanet.com sasha@mysql.sashanet.com
tonu@hundin.mysql.fi tonu@hundin.mysql.fi
monty@work.mysql.com
...@@ -94,10 +94,12 @@ mutex_test_and_set( ...@@ -94,10 +94,12 @@ mutex_test_and_set(
/* In assembly we use the so-called AT & T syntax where /* In assembly we use the so-called AT & T syntax where
the order of operands is inverted compared to the ordinary Intel the order of operands is inverted compared to the ordinary Intel
syntax. The 'l' after the mnemonics denotes a 32-bit operation. */ syntax. The 'l' after the mnemonics denotes a 32-bit operation.
The line after the code tells which values come out of the asm
code, and the second line tells the input to the asm code. */
asm volatile("movl $1, %%eax; xchgl (%%ecx), %%eax" : asm volatile("movl $1, %%eax; xchgl (%%ecx), %%eax" :
"=eax" (res): "=eax" (res), "=m" (*lw) :
"ecx" (lw)); "ecx" (lw));
return(res); return(res);
#else #else
...@@ -132,12 +134,26 @@ mutex_reset_lock_word( ...@@ -132,12 +134,26 @@ mutex_reset_lock_word(
__asm MOV EDX, 0 __asm MOV EDX, 0
__asm MOV ECX, lw __asm MOV ECX, lw
__asm XCHG EDX, DWORD PTR [ECX] __asm XCHG EDX, DWORD PTR [ECX]
#elif defined(__GNUC__) && defined(UNIV_INTEL_X86)
ulint* lw;
lw = &(mutex->lock_word);
/* In assembly we use the so-called AT & T syntax where
the order of operands is inverted compared to the ordinary Intel
syntax. The 'l' after the mnemonics denotes a 32-bit operation. */
asm volatile("movl $0, %%eax; xchgl (%%ecx), %%eax" :
"=m" (*lw) :
"ecx" (lw) :
"eax"); /* gcc does not seem to understand
that our asm code resets eax: tell it
explicitly that after the third ':' */
#else #else
mutex->lock_word = 0; mutex->lock_word = 0;
#if !(defined(__GNUC__) && defined(UNIV_INTEL_X86))
os_fast_mutex_unlock(&(mutex->os_fast_mutex)); os_fast_mutex_unlock(&(mutex->os_fast_mutex));
#endif #endif
#endif
} }
/********************************************************************** /**********************************************************************
......
...@@ -970,9 +970,10 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len) ...@@ -970,9 +970,10 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
(actual_error = thd->net.last_errno) && expected_error) (actual_error = thd->net.last_errno) && expected_error)
{ {
const char* errmsg = "Slave: did not get the expected error\ const char* errmsg = "Slave: did not get the expected error\
running query from master - expected: '%s', got '%s'"; running query from master - expected: '%s'(%d), got '%s'(%d)";
sql_print_error(errmsg, ER(expected_error), sql_print_error(errmsg, ER(expected_error), expected_error,
actual_error ? thd->net.last_error:"no error" actual_error ? thd->net.last_error:"no error",
actual_error
); );
thd->query_error = 1; thd->query_error = 1;
} }
......
...@@ -764,13 +764,17 @@ int change_master(THD* thd) ...@@ -764,13 +764,17 @@ int change_master(THD* thd)
// if we change host or port, we must reset the postion // if we change host or port, we must reset the postion
glob_mi.log_file_name[0] = 0; glob_mi.log_file_name[0] = 0;
glob_mi.pos = 4; // skip magic number glob_mi.pos = 4; // skip magic number
glob_mi.pending = 0;
} }
if(lex_mi->log_file_name) if(lex_mi->log_file_name)
strmake(glob_mi.log_file_name, lex_mi->log_file_name, strmake(glob_mi.log_file_name, lex_mi->log_file_name,
sizeof(glob_mi.log_file_name)); sizeof(glob_mi.log_file_name));
if(lex_mi->pos) if(lex_mi->pos)
{
glob_mi.pos = lex_mi->pos; glob_mi.pos = lex_mi->pos;
glob_mi.pending = 0;
}
if(lex_mi->host) if(lex_mi->host)
{ {
......
...@@ -37,7 +37,8 @@ ...@@ -37,7 +37,8 @@
#define SHAREDIR "share/" #define SHAREDIR "share/"
#endif #endif
#define ER(X) errmesg[(X)-1000] #define ER(X) ((X) >= 1000 && (X) < ER_ERROR_MESSAGES + 1000) ? \
errmesg[(X)-1000] : "Invalid error code"
#define ERRMAPP 1 /* Errormap f|r my_error */ #define ERRMAPP 1 /* Errormap f|r my_error */
#define LIBLEN FN_REFLEN-FN_LEN /* Max l{ngd p} dev */ #define LIBLEN FN_REFLEN-FN_LEN /* Max l{ngd p} dev */
......
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