1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

temporary commit to pull Monty's changes

include/my_global.h:
  added dbug_volatile
mysys/mf_iocache2.c:
  some debugging code to investigate failed assert in my_b_append_tell()
sql/item_func.cc:
  fixed logging bug in DO RELEASE_LOCK()
This commit is contained in:
unknown
2002-01-31 11:02:11 -07:00
parent 6987f146cd
commit 1d76e90c1b
3 changed files with 21 additions and 2 deletions

View File

@ -51,6 +51,16 @@
#endif #endif
#endif /* _WIN32... */ #endif /* _WIN32... */
/* sometimes we want to make sure that the variable is not put into
a register in debugging mode so we can see its value in the core
*/
#ifndef DBUG_OFF
#define dbug_volatile volatile
#else
#define dbug_volatile
#endif
/* /*
The macros below are borrowed from include/linux/compiler.h in the The macros below are borrowed from include/linux/compiler.h in the
Linux kernel. Use them to indicate the likelyhood of the truthfulness Linux kernel. Use them to indicate the likelyhood of the truthfulness

View File

@ -27,7 +27,10 @@
my_off_t my_b_append_tell(IO_CACHE* info) my_off_t my_b_append_tell(IO_CACHE* info)
{ {
my_off_t res; /* prevent optimizer from putting res in a register when debugging
we need this to be able to see the value of res when the assert fails
*/
dbug_volatile my_off_t res;
/* we need to lock the append buffer mutex to keep flush_io_cache() /* we need to lock the append buffer mutex to keep flush_io_cache()
from messing with the variables that we need in order to provide the from messing with the variables that we need in order to provide the
answer to the question. answer to the question.
@ -35,8 +38,11 @@ my_off_t my_b_append_tell(IO_CACHE* info)
#ifdef THREAD #ifdef THREAD
pthread_mutex_lock(&info->append_buffer_lock); pthread_mutex_lock(&info->append_buffer_lock);
#endif #endif
/* save the value of my_tell in res so we can see it when studying
coredump
*/
DBUG_ASSERT(info->end_of_file - (info->append_read_pos-info->write_buffer) DBUG_ASSERT(info->end_of_file - (info->append_read_pos-info->write_buffer)
== my_tell(info->file,MYF(0))); == (res=my_tell(info->file,MYF(0))));
res = info->end_of_file + (info->write_pos-info->append_read_pos); res = info->end_of_file + (info->write_pos-info->append_read_pos);
#ifdef THREAD #ifdef THREAD
pthread_mutex_unlock(&info->append_buffer_lock); pthread_mutex_unlock(&info->append_buffer_lock);

View File

@ -1418,16 +1418,19 @@ void item_user_lock_release(ULL *ull)
if (mysql_bin_log.is_open()) if (mysql_bin_log.is_open())
{ {
THD *thd = current_thd; THD *thd = current_thd;
uint save_query_length;
char buf[256]; char buf[256];
String tmp(buf,sizeof(buf)); String tmp(buf,sizeof(buf));
tmp.length(0); tmp.length(0);
tmp.append("DO RELEASE_LOCK(\""); tmp.append("DO RELEASE_LOCK(\"");
tmp.append(ull->key,ull->key_length); tmp.append(ull->key,ull->key_length);
tmp.append("\")"); tmp.append("\")");
save_query_length=thd->query_length;
thd->query_length=tmp.length(); thd->query_length=tmp.length();
Query_log_event qev(thd,tmp.ptr()); Query_log_event qev(thd,tmp.ptr());
qev.error_code=0; // this query is always safe to run on slave qev.error_code=0; // this query is always safe to run on slave
mysql_bin_log.write(&qev); mysql_bin_log.write(&qev);
thd->query_length=save_query_length;
} }
if (--ull->count) if (--ull->count)
pthread_cond_signal(&ull->cond); pthread_cond_signal(&ull->cond);