mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01: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:
parent
6987f146cd
commit
1d76e90c1b
3 changed files with 21 additions and 2 deletions
|
@ -51,6 +51,16 @@
|
|||
#endif
|
||||
#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
|
||||
Linux kernel. Use them to indicate the likelyhood of the truthfulness
|
||||
|
|
|
@ -27,7 +27,10 @@
|
|||
|
||||
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()
|
||||
from messing with the variables that we need in order to provide the
|
||||
answer to the question.
|
||||
|
@ -35,8 +38,11 @@ my_off_t my_b_append_tell(IO_CACHE* info)
|
|||
#ifdef THREAD
|
||||
pthread_mutex_lock(&info->append_buffer_lock);
|
||||
#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)
|
||||
== 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);
|
||||
#ifdef THREAD
|
||||
pthread_mutex_unlock(&info->append_buffer_lock);
|
||||
|
|
|
@ -1418,16 +1418,19 @@ void item_user_lock_release(ULL *ull)
|
|||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
THD *thd = current_thd;
|
||||
uint save_query_length;
|
||||
char buf[256];
|
||||
String tmp(buf,sizeof(buf));
|
||||
tmp.length(0);
|
||||
tmp.append("DO RELEASE_LOCK(\"");
|
||||
tmp.append(ull->key,ull->key_length);
|
||||
tmp.append("\")");
|
||||
save_query_length=thd->query_length;
|
||||
thd->query_length=tmp.length();
|
||||
Query_log_event qev(thd,tmp.ptr());
|
||||
qev.error_code=0; // this query is always safe to run on slave
|
||||
mysql_bin_log.write(&qev);
|
||||
thd->query_length=save_query_length;
|
||||
}
|
||||
if (--ull->count)
|
||||
pthread_cond_signal(&ull->cond);
|
||||
|
|
Loading…
Reference in a new issue