List:Commits« Previous MessageNext Message »
From:bar Date:December 14 2006 1:45pm
Subject:bk commit into 5.1 tree (bar:1.2362)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2006-12-14 16:45:48+04:00, bar@stripped +4 -0
  Merge mysql.com:/usr/home/bar/mysql-5.0.b22645
  into  mysql.com:/usr/home/bar/mysql-5.1.b22645
  MERGE: 1.1810.2362.25

  mysql-test/t/disabled.def@stripped, 2006-12-14 16:45:43+04:00,
bar@stripped +0 -0
    SCCS merged
    MERGE: 1.2.4.18

  mysql-test/t/mysqlbinlog.test@stripped, 2006-12-14 16:42:24+04:00,
bar@stripped +0 -0
    Auto merged
    MERGE: 1.21.1.15

  sql/log_event.cc@stripped, 2006-12-14 16:42:24+04:00, bar@stripped +0 -0
    Auto merged
    MERGE: 1.174.1.46

  sql/log_event.h@stripped, 2006-12-14 16:42:25+04:00, bar@stripped +0 -0
    Auto merged
    MERGE: 1.122.1.6

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	bar
# Host:	bar.intranet.mysql.r18.ru
# Root:	/usr/home/bar/mysql-5.1.b22645/RESYNC

--- 1.256/sql/log_event.cc	2006-12-14 16:45:59 +04:00
+++ 1.257/sql/log_event.cc	2006-12-14 16:45:59 +04:00
@@ -1289,7 +1289,8 @@ bool Query_log_event::write(IO_CACHE* fi
             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* fi
     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* th
    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 c
    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 c
       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
       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 s
           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);

--- 1.140/sql/log_event.h	2006-12-14 16:45:59 +04:00
+++ 1.141/sql/log_event.h	2006-12-14 16:45:59 +04:00
@@ -271,6 +271,8 @@ struct sql_ex_info
 */
 #define Q_CATALOG_NZ_CODE       6
 
+#define Q_LC_TIME_NAMES_CODE    7
+
 /* Intvar event post-header */
 
 #define I_TYPE_OFFSET        0
@@ -525,9 +527,11 @@ typedef struct st_print_event_info
   bool charset_inited;
   char charset[6]; // 3 variables, each of them storable in 2 bytes
   char time_zone_str[MAX_TIME_ZONE_NAME_LENGTH];
+  uint lc_time_names_number;
   st_print_event_info()
     :flags2_inited(0), sql_mode_inited(0),
-     auto_increment_increment(1),auto_increment_offset(1), charset_inited(0)
+     auto_increment_increment(1),auto_increment_offset(1), charset_inited(0),
+     lc_time_names_number(0)
     {
       /*
         Currently we only use static PRINT_EVENT_INFO objects, so zeroed at
@@ -829,6 +833,7 @@ public:
   char charset[6];
   uint time_zone_len; /* 0 means uninited */
   const char *time_zone_str;
+  uint lc_time_names_number; /* 0 means en_US */
 
 #ifndef MYSQL_CLIENT
 

--- 1.31/mysql-test/t/mysqlbinlog.test	2006-12-14 16:45:59 +04:00
+++ 1.32/mysql-test/t/mysqlbinlog.test	2006-12-14 16:45:59 +04:00
@@ -137,6 +137,24 @@ flush logs;
 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 
 #
 --disable_warnings
@@ -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;
 
Thread
bk commit into 5.1 tree (bar:1.2362)bar15 Dec