Commit 65989dac authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com
Browse files

Merge work:/home/bk/mysql-4.0

into mysql.sashanet.com:/reiser-data/mysql-4.0
parents 2c9f1cc4 cef13d5b
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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
+20 −3
Original line number Diff line number Diff line
@@ -27,21 +27,38 @@ sync_with_master;
connection master;
reset master;
connection slave;
slave stop;
reset slave;

connection master;
drop table if exists t1,t2;
create table t1(n int);
let $1=10;
#we want the log to exceed 16K to test deal with the log that is bigger than
#IO_SIZE
let $1=5000;
disable_query_log;
while ($1)
{
 eval insert into t1 values($1);
 eval insert into t1 values($1+get_lock("hold_slave",10)*0);
 dec $1;
}
enable_query_log;

#try to cause a large relay log lag on the slave 
connection slave;
select get_lock("hold_slave",10);
slave start;
#hope this is long enough for I/O thread to fetch over 16K relay log data
sleep 1;
select release_lock("hold_slave");
unlock tables;

connection master;
create table t2(id int);
insert into t2 values(connection_id());
save_master_pos;


connection master1;
#avoid generating result
create temporary table t1_temp(n int);
@@ -60,7 +77,7 @@ reap;
connection slave;
sync_with_master ;
#give the slave a chance to exit
sleep 0.5;
wait_for_slave_to_stop;

# The following test can't be done because the result of Pos will differ
# on different computers
+1 −0
Original line number Diff line number Diff line
@@ -823,6 +823,7 @@ int my_b_append(register IO_CACHE *info, const byte *Buffer, uint Count)
    }
    Count-=length;
    Buffer+=length;
    info->end_of_file+=length;
  }

end:
+8 −2
Original line number Diff line number Diff line
@@ -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);
+3 −0
Original line number Diff line number Diff line
@@ -1433,16 +1433,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