Commit e3ce6c4d authored by unknown's avatar unknown
Browse files

Merge mysql.com:/usr/home/bar/mysql-5.0.b22645

into  mysql.com:/usr/home/bar/mysql-5.1.b22645


mysql-test/t/mysqlbinlog.test:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
mysql-test/t/disabled.def:
  SCCS merged
parents 9ef60daf 76bd00a9
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -214,6 +214,26 @@ select * from t5 /* must be (1),(1) */;
a
1
1
flush logs;
drop table if exists t5;
create table t5 (c1 int, c2 varchar(128) character set latin1 not null);
insert into t5 values (1, date_format('2001-01-01','%W'));
set lc_time_names=de_DE;
insert into t5 values (2, date_format('2001-01-01','%W'));
set lc_time_names=en_US;
insert into t5 values (3, date_format('2001-01-01','%W'));
select * from t5 order by c1;
c1	c2
1	Monday
2	Montag
3	Monday
flush logs;
drop table t5;
select * from t5 order by c1;
c1	c2
1	Monday
2	Montag
3	Monday
drop procedure if exists p1;
flush logs;
create procedure p1()
+4 −0
Original line number Diff line number Diff line
@@ -7,10 +7,14 @@ start slave;
create table t1 (s1 char(10));
set lc_time_names= 'de_DE';
insert into t1 values (date_format('2001-01-01','%W'));
set lc_time_names= 'en_US';
insert into t1 values (date_format('2001-01-01','%W'));
select * from t1;
s1
Montag
Monday
select * from t1;
s1
Montag
Monday
drop table t1;
+20 −2
Original line number Diff line number Diff line
@@ -136,6 +136,24 @@ flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
select * from t5  /* must be (1),(1) */;

#
# Bug#22645 LC_TIME_NAMES: Statement not replicated
# Check that a dump created by mysqlbinlog reproduces
# lc_time_names dependent values correctly
#
flush logs;
drop table if exists t5;
create table t5 (c1 int, c2 varchar(128) character set latin1 not null);
insert into t5 values (1, date_format('2001-01-01','%W'));
set lc_time_names=de_DE;
insert into t5 values (2, date_format('2001-01-01','%W'));
set lc_time_names=en_US;
insert into t5 values (3, date_format('2001-01-01','%W'));
select * from t5 order by c1;
flush logs;
drop table t5;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
select * from t5 order by c1;
#
# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails 
#
@@ -155,8 +173,8 @@ call p1();
drop procedure p1;
--error 1305
call p1();
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009 | $MYSQL
call p1();
drop procedure p1;

+2 −0
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ connection master;
create table t1 (s1 char(10));
set lc_time_names= 'de_DE';
insert into t1 values (date_format('2001-01-01','%W'));
set lc_time_names= 'en_US';
insert into t1 values (date_format('2001-01-01','%W'));
select * from t1;
sync_slave_with_master;
connection slave;
+34 −3
Original line number Diff line number Diff line
@@ -1289,7 +1289,8 @@ bool Query_log_event::write(IO_CACHE* file)
            1+1+FN_REFLEN+ // code of catalog and catalog length and catalog
            1+4+           // code of autoinc and the 2 autoinc variables
            1+6+           // code of charset and charset
            1+1+MAX_TIME_ZONE_NAME_LENGTH // code of tz and tz length and tz name
            1+1+MAX_TIME_ZONE_NAME_LENGTH+ // code of tz and tz length and tz name
            1+2            // code of lc_time_names and lc_time_names_number
            ], *start, *start_of_status;
  ulong event_length;

@@ -1401,6 +1402,13 @@ bool Query_log_event::write(IO_CACHE* file)
    memcpy(start, time_zone_str, time_zone_len);
    start+= time_zone_len;
  }
  if (lc_time_names_number)
  {
    DBUG_ASSERT(lc_time_names_number <= 0xFFFF);
    *start++= Q_LC_TIME_NAMES_CODE;
    int2store(start, lc_time_names_number);
    start+= 2;
  }
  /*
    Here there could be code like
    if (command-line-option-which-says-"log_this_variable" && inited)
@@ -1465,7 +1473,8 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
   flags2_inited(1), sql_mode_inited(1), charset_inited(1),
   sql_mode(thd_arg->variables.sql_mode),
   auto_increment_increment(thd_arg->variables.auto_increment_increment),
   auto_increment_offset(thd_arg->variables.auto_increment_offset)
   auto_increment_offset(thd_arg->variables.auto_increment_offset),
   lc_time_names_number(thd_arg->variables.lc_time_names->number)
{
  time_t end_time;
  time(&end_time);
@@ -1536,7 +1545,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
   db(NullS), catalog_len(0), status_vars_len(0),
   flags2_inited(0), sql_mode_inited(0), charset_inited(0),
   auto_increment_increment(1), auto_increment_offset(1),
   time_zone_len(0)
   time_zone_len(0), lc_time_names_number(0)
{
  ulong data_len;
  uint32 tmp;
@@ -1637,6 +1646,10 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
      pos+= catalog_len+2; // leap over end 0
      catalog_nz= 0; // catalog has end 0 in event
      break;
    case Q_LC_TIME_NAMES_CODE:
      lc_time_names_number= uint2korr(pos);
      pos+= 2;
      break;
    default:
      /* That's why you must write status vars in growing order of code */
      DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\
@@ -1829,6 +1842,11 @@ void Query_log_event::print_query_header(IO_CACHE* file,
      memcpy(print_event_info->time_zone_str, time_zone_str, time_zone_len+1);
    }
  }
  if (lc_time_names_number != print_event_info->lc_time_names_number)
  {
    fprintf(file, "SET @@session.lc_time_names=%d;\n", lc_time_names_number);
    print_event_info->lc_time_names_number= lc_time_names_number;
  }
}


@@ -1971,6 +1989,19 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli,
          goto compare_errors;
        }
      }
      if (lc_time_names_number)
      {
        if (!(thd->variables.lc_time_names=
              my_locale_by_number(lc_time_names_number)))
        {
          my_printf_error(ER_UNKNOWN_ERROR,
                      "Unknown locale: '%d'", MYF(0), lc_time_names_number);
          thd->variables.lc_time_names= &my_locale_en_US;
          goto compare_errors;
        }
      }
      else
        thd->variables.lc_time_names= &my_locale_en_US;

      /* Execute the query (note that we bypass dispatch_command()) */
      mysql_parse(thd, thd->query, thd->query_length);
Loading