Commit 51e3c5de authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com
Browse files

--do-test option in mysql-test-run - will do only tests that match the pattern

updated rotate event to set new position along with the new log
parent 85388703
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ while test $# -gt 0; do
     EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-bdb" ;;
    --skip-rpl) NO_SLAVE=1 ;;
    --skip-test=*) SKIP_TEST=`$ECHO "$1" | $SED -e "s;--skip-test=;;"`;;
    --do-test=*) DO_TEST=`$ECHO "$1" | $SED -e "s;--do-test=;;"`;;
    --record)
      RECORD=1;
      EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
@@ -336,7 +337,7 @@ show_failed_diff ()
  then
    echo "Below are the diffs between actual and expected results:"
    echo "-------------------------------------------------------"
    $DIFF -c $result_file $reject_file
    $DIFF -c -a $result_file $reject_file
    echo "-------------------------------------------------------"
    echo "Please follow the instructions outlined at"
    echo "http://www.mysql.com/doc/R/e/Reporting_mysqltest_bugs.html"
@@ -667,7 +668,7 @@ run_testcase ()
 slave_init_script=$TESTDIR/$tname-slave.sh
 slave_master_info_file=$TESTDIR/$tname-slave-master-info.opt
 SKIP_SLAVE=`$EXPR \( $tname : rpl \) = 0`
 if [ -n $SKIP_TEST ] ; then 
 if [ -n "$SKIP_TEST" ] ; then 
   SKIP_THIS_TEST=`$EXPR \( $tname : "$SKIP_TEST" \) != 0`
   if [ x$SKIP_THIS_TEST = x1 ] ;
   then
@@ -675,6 +676,15 @@ run_testcase ()
   fi
  fi

 if [ -n "$DO_TEST" ] ; then 
   DO_THIS_TEST=`$EXPR \( $tname : "$DO_TEST" \) != 0`
   if [ x$DO_THIS_TEST = x0 ] ;
   then
    return;
   fi
  fi


 if [ x${NO_SLAVE}x$SKIP_SLAVE = x1x0 ] ;
 then
   USERT="    ...."
+4 −4
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ master-bin.001 263 Query 1 5 use test; drop table t1
master-bin.001	311	Query	1	6	use test; create table t1 (word char(20) not null)
master-bin.001	386	Load	1	7	use test; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1 FIELDS TERMINATED BY '\t' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
master-bin.001	468	Query	1	8	use test; drop table t1
master-bin.001	516	Rotate	1	9	master-bin.002
master-bin.001	549	Stop	1	10	
master-bin.001	516	Rotate	1	9	master-bin.002;pos=4
master-bin.001	557	Stop	1	10	
Log_name	Pos	Event_type	Server_id	Log_seq	Info
master-bin.002	4	Start	1	1	Server ver: 4.0.0-debug-log, Binlog ver: 2
master-bin.002	79	Query	1	2	use test; create table t1 (n int)
@@ -45,8 +45,8 @@ slave-bin.001 253 Query 1 4 use test; insert into t1 values (NULL)
slave-bin.001	316	Query	1	5	use test; drop table t1
slave-bin.001	364	Query	1	6	use test; create table t1 (word char(20) not null)
slave-bin.001	439	Query	1	8	use test; drop table t1
slave-bin.001	487	Rotate	2	3	slave-bin.002; forced by master
slave-bin.001	519	Stop	2	4	
slave-bin.001	487	Rotate	2	3	slave-bin.002;pos=4; forced by master
slave-bin.001	527	Stop	2	4	
Log_name	Pos	Event_type	Server_id	Log_seq	Info
slave-bin.002	4	Start	2	1	Server ver: 4.0.0-debug-log, Binlog ver: 2
slave-bin.002	79	Slave	2	2	host=127.0.0.1,port=9306,log=master-bin.002,pos=4
+12 −3
Original line number Diff line number Diff line
@@ -190,7 +190,10 @@ void Load_log_event::pack_info(String* packet)
void Rotate_log_event::pack_info(String* packet)
{
  String tmp;
  char buf[22];
  tmp.append(new_log_ident, ident_len);
  tmp.append(";pos=");
  tmp.append(llstr(pos,buf));
  if(flags & LOG_EVENT_FORCED_ROTATE_F)
    tmp.append("; forced by master");
  net_store_data(packet, tmp.ptr(), tmp.length());
@@ -492,6 +495,7 @@ void Stop_log_event::print(FILE* file, bool short_form, char* last_db)

void Rotate_log_event::print(FILE* file, bool short_form, char* last_db)
{
  char buf[22];
  if (short_form)
    return;

@@ -500,7 +504,7 @@ void Rotate_log_event::print(FILE* file, bool short_form, char* last_db)
  if (new_log_ident)
    my_fwrite(file, (byte*) new_log_ident, (uint)ident_len, 
	      MYF(MY_NABP | MY_WME));
  fprintf(file, "\n");
  fprintf(file, "pos=%s\n", llstr(pos, buf));
  fflush(file);
}

@@ -530,8 +534,10 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len):
  if(event_len < ROTATE_EVENT_OVERHEAD)
    return;

  pos = uint8korr(buf + R_POS_OFFSET + LOG_EVENT_HEADER_LEN);
  ident_len = (uchar)(event_len - ROTATE_EVENT_OVERHEAD);
  if (!(new_log_ident = (char*) my_memdup((byte*) buf + LOG_EVENT_HEADER_LEN,
  if (!(new_log_ident = (char*) my_memdup((byte*) buf + R_IDENT_OFFSET
					  + LOG_EVENT_HEADER_LEN,
					  (uint) ident_len, MYF(MY_WME))))
    return;

@@ -540,7 +546,10 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len):

int Rotate_log_event::write_data(IO_CACHE* file)
{
  return my_b_write(file, (byte*) new_log_ident, (uint) ident_len) ? -1 :0;
  char buf[ROTATE_HEADER_LEN];
  int8store(buf, pos + R_POS_OFFSET);
  return my_b_write(file, (byte*)buf, ROTATE_HEADER_LEN) ||
    my_b_write(file, (byte*)new_log_ident, (uint) ident_len);
}

Query_log_event::Query_log_event(const char* buf, int event_len):
+13 −5
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@
#define QUERY_HEADER_LEN     (4 + 4 + 1 + 2)
#define LOAD_HEADER_LEN      (4 + 4 + 4 + 1 +1 + 4)
#define START_HEADER_LEN     (2 + ST_SERVER_VER_LEN + 4)
#define ROTATE_HEADER_LEN    8

/* event header offsets */

@@ -98,10 +99,14 @@
#define L_NUM_FIELDS_OFFSET  14
#define L_DATA_OFFSET    LOAD_HEADER_LEN

/* Rotate event post-header */

#define R_POS_OFFSET       0
#define R_IDENT_OFFSET     8

#define QUERY_EVENT_OVERHEAD  (LOG_EVENT_HEADER_LEN+QUERY_HEADER_LEN)
#define QUERY_DATA_OFFSET (LOG_EVENT_HEADER_LEN+QUERY_HEADER_LEN)
#define ROTATE_EVENT_OVERHEAD LOG_EVENT_HEADER_LEN
#define ROTATE_EVENT_OVERHEAD (LOG_EVENT_HEADER_LEN+ROTATE_HEADER_LEN)
#define LOAD_EVENT_OVERHEAD   (LOG_EVENT_HEADER_LEN+LOAD_HEADER_LEN+sizeof(sql_ex_info))

#define BINLOG_MAGIC        "\xfe\x62\x69\x6e"
@@ -111,7 +116,7 @@

enum Log_event_type { START_EVENT = 1, QUERY_EVENT =2,
		      STOP_EVENT=3, ROTATE_EVENT = 4, INTVAR_EVENT=5,
                      LOAD_EVENT=6, SLAVE_EVENT=7};
                      LOAD_EVENT=6, SLAVE_EVENT=7, FILE_EVENT=8};
enum Int_event_type { INVALID_INT_EVENT = 0, LAST_INSERT_ID_EVENT = 1, INSERT_ID_EVENT = 2
 };

@@ -487,12 +492,15 @@ class Rotate_log_event: public Log_event
public:
  const char* new_log_ident;
  uchar ident_len;
  ulonglong pos;
  bool alloced;
  
  Rotate_log_event(const char* new_log_ident_arg, uint ident_len_arg = 0) :
  Rotate_log_event(const char* new_log_ident_arg, uint ident_len_arg = 0,
		   ulonglong pos_arg = 4) :
    Log_event(time(NULL)),
    new_log_ident(new_log_ident_arg),
    ident_len(ident_len_arg ? ident_len_arg : (uint) strlen(new_log_ident_arg)),
    ident_len(ident_len_arg ? ident_len_arg :
	      (uint) strlen(new_log_ident_arg)), pos(pos_arg),
    alloced(0)
  {}
  
@@ -503,7 +511,7 @@ class Rotate_log_event: public Log_event
      my_free((gptr) new_log_ident, MYF(0));
  }
  Log_event_type get_type_code() { return ROTATE_EVENT;}
  int get_data_size() { return  ident_len;}
  int get_data_size() { return  ident_len + ROTATE_HEADER_LEN;}
  int write_data(IO_CACHE* file);
  
  void print(FILE* file, bool short_form = 0, char* last_db = 0);
+1 −1
Original line number Diff line number Diff line
@@ -1205,7 +1205,7 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
        memcpy(log_name, rev->new_log_ident,ident_len );
        log_name[ident_len] = 0;
      }
      mi->pos = 4; // skip magic number
      mi->pos = rev->pos; 
      mi->last_log_seq = ev->log_seq;
      pthread_cond_broadcast(&mi->cond);
      pthread_mutex_unlock(&mi->lock);
Loading