List:Internals« Previous MessageNext Message »
From:dlenev Date:June 17 2004 4:33pm
Subject:bk commit into 4.1 tree (dlenev:1.1898)
View as plain text  
Below is the list of changes that have just been committed into a local
4.1 repository of dlenev. When dlenev 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://www.mysql.com/doc/I/n/Installing_source_tree.html

ChangeSet
  1.1898 04/06/17 20:33:43 dlenev@stripped +14 -0
  After-review fixes for WL#1264/#1266 "Time zone support"

  sql/tztime.cc
    1.5 04/06/17 20:33:39 dlenev@stripped +27 -12
    Now we are using sec_since_epoch() version optimized for normalized dates
    + various small cleanups.

  sql/sql_load.cc
    1.76 04/06/17 20:33:38 dlenev@stripped +1 -1
    Field::set_warning() now has one more argument.

  sql/sql_class.h
    1.223 04/06/17 20:33:38 dlenev@stripped +1 -1
    Removed obvious comment.

  sql/slave.cc
    1.248 04/06/17 20:33:37 dlenev@stripped +5 -1
    Extended comment about checking of @@time_zone variable on slave and master.

  sql/set_var.cc
    1.127 04/06/17 20:33:36 dlenev@stripped +2 -2
    More clear text with better layout. 

  sql/log.cc
    1.133 04/06/17 20:33:36 dlenev@stripped +4 -3
    Small optimization in binlogging of @@time_zone variable.

  sql/item_timefunc.h
    1.47 04/06/17 20:33:35 dlenev@stripped +1 -0
    Added current_thd caching to FROM_UNIXTIME() function.

  sql/item_timefunc.cc
    1.61 04/06/17 20:33:34 dlenev@stripped +12 -7
    We should set to 0 TIME::second_part member in CURRENT_DATE() function too.
    Added current_thd caching to FROM_UNIXTIME() function.
    Now using special function for TIME -> longlong representation conversion.
    Fixed typo in comment.

  sql/field_conv.cc
    1.28 04/06/17 20:33:34 dlenev@stripped +7 -5
    Field::set_warning() method with 2 arguments was replaced with more genric set_warning() 
    method with 3 arguments.

  sql/field.h
    1.97 04/06/17 20:33:33 dlenev@stripped +3 -4
    Field::set_warning() method with 2 arguments was replaced with more genric set_warning() 
    method with 3 arguments. Changed third argument of set_warning() to be positive instead of
    negative it also allowed to simplify this method.

  sql/field.cc
    1.143 04/06/17 20:33:33 dlenev@stripped +121 -138
    Field::set_warning() method with 2 arguments was replaced with more genric set_warning() 
    method with 3 arguments. Changed third argument of set_warning() to be positive instead of
    negative it also allowed to simplify this method. Fixed wrong buffer size in
    set_datetime_warning() method for double argument.

  mysql-test/t/select.test
    1.24 04/06/17 20:33:32 dlenev@stripped +3 -1
    Made test less ambiguos

  mysql-test/r/select.result
    1.40 04/06/17 20:33:31 dlenev@stripped +7 -5
    Made test less ambiguos

  mysql-test/r/rpl_timezone.result
    1.2 04/06/17 20:33:28 dlenev@stripped +1 -1
    Updated test result because error message text was changed a bit.

# 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:	dlenev
# Host:	brandersnatch.localdomain
# Root:	/home/dlenev/src/mysql-4.1-tz-review

--- 1.142/sql/field.cc	Thu Jun 10 03:57:14 2004
+++ 1.143/sql/field.cc	Thu Jun 17 20:33:33 2004
@@ -462,7 +462,7 @@
   uint len=field_length;
   char *to=ptr, filler= '9';
 
-  set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+  set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
   if (negative)
   {
     if (!unsigned_flag)
@@ -572,7 +572,7 @@
     from++;
   if (from == end)
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     is_cuted_fields_incr=1;
   }
   else if (*from == '+' || *from == '-')	// Found some sign ?
@@ -648,7 +648,7 @@
     for (;from != end && my_isspace(&my_charset_bin, *from); from++) ;
     if (from != end)                     // If still something left, warn
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED); 
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       is_cuted_fields_incr=1;
     }
   }
@@ -826,7 +826,8 @@
         if (tmp_char != '0')			// Losing a non zero digit ?
         {
           if (!is_cuted_fields_incr)
-            set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+            set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
+                        ER_WARN_DATA_TRUNCATED, 1);
           return 0;
         }
         continue;
@@ -843,7 +844,7 @@
       if (tmp_char != '0')			// Losing a non zero digit ?
       {
         if (!is_cuted_fields_incr)
-	  set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+	  set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
         return 0;
       }
       continue;
@@ -1061,18 +1062,18 @@
     if (tmp < 0)
     {
       tmp=0; /* purecov: inspected */
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);      
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp > 255)
     {
       tmp= 255;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1081,18 +1082,18 @@
     if (tmp < -128)
     {
       tmp= -128;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp >= 128)
     {
       tmp= 127;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1110,13 +1111,13 @@
     if (nr < 0.0)
     {
       *ptr=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > 255.0)
     {
       *ptr=(char) 255;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1127,13 +1128,13 @@
     if (nr < -128.0)
     {
       *ptr= (char) -128;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > 127.0)
     {
       *ptr=127;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1150,13 +1151,13 @@
     if (nr < 0L)
     {
       *ptr=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > 255L)
     {
       *ptr= (char) 255;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1167,13 +1168,13 @@
     if (nr < -128L)
     {
       *ptr= (char) -128;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > 127L)
     {
       *ptr=127;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1265,18 +1266,18 @@
     if (tmp < 0)
     {
       tmp=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp > (uint16) ~0)
     {
       tmp=(uint16) ~0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1285,18 +1286,18 @@
     if (tmp < INT_MIN16)
     {
       tmp= INT_MIN16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp > INT_MAX16)
     {
       tmp=INT_MAX16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1322,13 +1323,13 @@
     if (nr < 0)
     {
       res=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (double) (uint16) ~0)
     {
       res=(int16) (uint16) ~0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1339,13 +1340,13 @@
     if (nr < (double) INT_MIN16)
     {
       res=INT_MIN16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (double) INT_MAX16)
     {
       res=INT_MAX16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1371,13 +1372,13 @@
     if (nr < 0L)
     {
       res=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (longlong) (uint16) ~0)
     {
       res=(int16) (uint16) ~0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1388,13 +1389,13 @@
     if (nr < INT_MIN16)
     {
       res=INT_MIN16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > INT_MAX16)
     {
       res=INT_MAX16;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1540,18 +1541,18 @@
     if (tmp < 0)
     {
       tmp=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp >= (long) (1L << 24))
     {
       tmp=(long) (1L << 24)-1L;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1560,18 +1561,18 @@
     if (tmp < INT_MIN24)
     {
       tmp= INT_MIN24;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (tmp > INT_MAX24)
     {
       tmp=INT_MAX24;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error= 1;
     }
   }
@@ -1590,14 +1591,14 @@
     if (nr < 0)
     {
       int3store(ptr,0);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr >= (double) (long) (1L << 24))
     {
       uint32 tmp=(uint32) (1L << 24)-1L;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1609,14 +1610,14 @@
     {
       long tmp=(long) INT_MIN24;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (double) INT_MAX24)
     {
       long tmp=(long) INT_MAX24;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1633,14 +1634,14 @@
     if (nr < 0L)
     {
       int3store(ptr,0);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr >= (longlong) (long) (1L << 24))
     {
       long tmp=(long) (1L << 24)-1L;;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1652,14 +1653,14 @@
     {
       long tmp=(long) INT_MIN24;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (longlong) INT_MAX24)
     {
       long tmp=(long) INT_MAX24;
       int3store(ptr,tmp);
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1774,7 +1775,7 @@
       (from+len != end && table->in_use->count_cuted_fields &&
        !test_if_int(from,len,end,cs)))
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     error= 1;
   }
 #ifdef WORDS_BIGENDIAN
@@ -1799,13 +1800,13 @@
     if (nr < 0)
     {
       res=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (double) (ulong) ~0L)
     {
       res=(int32) (uint32) ~0L;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1816,13 +1817,13 @@
     if (nr < (double) INT_MIN32)
     {
       res=(int32) INT_MIN32;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (double) INT_MAX32)
     {
       res=(int32) INT_MAX32;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1857,13 +1858,13 @@
     if (nr < 0)
     {
       res=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr >= (LL(1) << 32))
     {
       res=(int32) (uint32) ~0L;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -1874,13 +1875,13 @@
     if (nr < (longlong) INT_MIN32)
     {
       res=(int32) INT_MIN32;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > (longlong) INT_MAX32)
     {
       res=(int32) INT_MAX32;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -2042,7 +2043,7 @@
       (from+len != end && table->in_use->count_cuted_fields &&
        !test_if_int(from,len,end,cs)))
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     error= 1;
   }
 #ifdef WORDS_BIGENDIAN
@@ -2067,13 +2068,13 @@
     if (nr < 0)
     {
       res=0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr >= (double) ~ (ulonglong) 0)
     {
       res= ~(longlong) 0;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -2084,13 +2085,13 @@
     if (nr <= (double) LONGLONG_MIN)
     {
       res=(longlong) LONGLONG_MIN;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr >= (double) LONGLONG_MAX)
     {
       res=(longlong) LONGLONG_MAX;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -2264,7 +2265,7 @@
   if (error || ((uint) (end-from) != len && table->in_use->count_cuted_fields))
   {
     error= 1;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   }
   Field_float::store(nr);
   return error;
@@ -2280,13 +2281,13 @@
   {
     j= 0;
     set_null();
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     error= 1;
   }
   else if (unsigned_flag && nr < 0)
   {
     j= 0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     error= 1;
   }
   else
@@ -2310,13 +2311,13 @@
     if (nr < -max_value)
     {
       j= (float)-max_value;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > max_value)
     {
       j= (float)max_value;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else
@@ -2341,7 +2342,7 @@
   float j= (float) nr;
   if (unsigned_flag && j < 0)
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     j=0;
     error= 1;
   }
@@ -2566,7 +2567,7 @@
   if (error || ((uint) (end-from) != len && table->in_use->count_cuted_fields))
   {
     error= 1;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   }
   Field_double::store(nr);
   return error;
@@ -2581,13 +2582,13 @@
   {
     nr= 0;
     set_null();
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     error= 1;
   }
   else if (unsigned_flag && nr < 0)
   {
     nr= 0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     error= 1;
   }
   else 
@@ -2607,13 +2608,13 @@
     if (nr < -max_value)
     {
       nr= -max_value;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
     else if (nr > max_value)
     {
       nr= max_value;
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
       error= 1;
     }
   }
@@ -2636,7 +2637,7 @@
   int error= 0;
   if (unsigned_flag && j < 0)
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     error= 1;
     j=0;
   }
@@ -2922,7 +2923,7 @@
   
   if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
-                         from, len, TIMESTAMP_DATETIME, 0);
+                         from, len, TIMESTAMP_DATETIME, 1);
 
   if (have_smth_to_conv)
   {
@@ -2930,7 +2931,7 @@
     {
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                            ER_WARN_DATA_OUT_OF_RANGE,
-                           from, len, TIMESTAMP_DATETIME, error);
+                           from, len, TIMESTAMP_DATETIME, !error);
       
       error= 1;
     }
@@ -2938,7 +2939,7 @@
     {
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
                            ER_WARN_INVALID_TIMESTAMP, 
-                           from, len, TIMESTAMP_DATETIME, error);
+                           from, len, TIMESTAMP_DATETIME, !error);
       error= 1;
     }
   }
@@ -2984,7 +2985,7 @@
     {
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                           ER_WARN_DATA_OUT_OF_RANGE,
-                          nr, TIMESTAMP_DATETIME, 0);
+                          nr, TIMESTAMP_DATETIME, 1);
       error= 1;
     }
   
@@ -2992,14 +2993,14 @@
     {
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
                            ER_WARN_INVALID_TIMESTAMP, 
-                           nr, TIMESTAMP_DATETIME, error);
+                           nr, TIMESTAMP_DATETIME, !error);
       error= 1;
     }
   }
-  else if(error)
+  else if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                          ER_WARN_DATA_TRUNCATED,
-                         nr, TIMESTAMP_DATETIME, 0);
+                         nr, TIMESTAMP_DATETIME, 1);
 
 #ifdef WORDS_BIGENDIAN
   if (table->db_low_byte_first)
@@ -3231,14 +3232,14 @@
     tmp=0L;
     error= 1;
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
-                         from, len, TIMESTAMP_TIME, 0);
+                         from, len, TIMESTAMP_TIME, 1);
   }
   else
   {
     if (error)
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                            ER_WARN_DATA_TRUNCATED,
-                           from, len, TIMESTAMP_TIME, 0);
+                           from, len, TIMESTAMP_TIME, 1);
 
     if (ltime.month)
       ltime.day=0;
@@ -3248,7 +3249,7 @@
       tmp=8385959;
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                            ER_WARN_DATA_OUT_OF_RANGE,
-                           from, len, TIMESTAMP_TIME, error);
+                           from, len, TIMESTAMP_TIME, !error);
       error= 1;
     }
   }
@@ -3304,14 +3305,14 @@
   {
     tmp=8385959L;
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
-                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 0);
+                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 1);
     error= 1;
   }
   else if (nr < (longlong) -8385959L)
   {
     tmp= -8385959L;
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
-                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 0);
+                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 1);
     error= 1;
   }
   else
@@ -3321,7 +3322,7 @@
     {
       tmp=0;
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
-                           ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 0);
+                           ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_TIME, 1);
       error= 1;
     }
   }
@@ -3433,11 +3434,11 @@
   if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
   {
     *ptr=0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     return 1;
   }
   if (table->in_use->count_cuted_fields && !test_if_int(from,len,end,cs))
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   if (nr != 0 || len != 4)
   {
     if (nr < YY_PART_YEAR)
@@ -3466,7 +3467,7 @@
   if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
   {
     *ptr=0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
     return 1;
   }
   if (nr != 0 || field_length != 4)		// 0000 -> 0; 00 -> 2000
@@ -3543,7 +3544,7 @@
 
   if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
-                         from, len, TIMESTAMP_DATE, 0);
+                         from, len, TIMESTAMP_DATE, 1);
 
 #ifdef WORDS_BIGENDIAN
   if (table->db_low_byte_first)
@@ -3735,7 +3736,7 @@
 
   if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
-                         from, len, TIMESTAMP_DATE, 0);
+                         from, len, TIMESTAMP_DATE, 1);
     
   int3store(ptr,tmp);
   return error;
@@ -3765,7 +3766,7 @@
   {
     tmp=0;
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
-                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_DATE, 0);
+                         ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_DATE, 1);
     error= 1;
   }
   else
@@ -3784,7 +3785,7 @@
     {
       tmp=0L;					// Don't allow date to change
       set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
-                           ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_DATE, 0);
+                           ER_WARN_DATA_OUT_OF_RANGE, nr, TIMESTAMP_DATE, 1);
       error= 1;
     }
     else
@@ -3802,7 +3803,7 @@
   else
   {
     tmp=0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   }
   int3store(ptr,tmp);
 }
@@ -3903,7 +3904,7 @@
 {
   TIME time_tmp;
   int error;
-  longlong tmp= 0;
+  ulonglong tmp= 0;
   
   if (str_to_TIME(from, len, &time_tmp, 1, &error) > 
       TIMESTAMP_DATETIME_ERROR)
@@ -3912,7 +3913,7 @@
   if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                          ER_WARN_DATA_OUT_OF_RANGE,
-                         from, len, TIMESTAMP_DATETIME, 0);
+                         from, len, TIMESTAMP_DATETIME, 1);
 
 #ifdef WORDS_BIGENDIAN
   if (table->db_low_byte_first)
@@ -3953,7 +3954,7 @@
   if (error)
     set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, 
                          ER_WARN_DATA_TRUNCATED, initial_nr, 
-                         TIMESTAMP_DATETIME, 0);
+                         TIMESTAMP_DATETIME, 1);
 
 #ifdef WORDS_BIGENDIAN
   if (table->db_low_byte_first)
@@ -3976,7 +3977,7 @@
   else
   {
     tmp=0;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   }
 #ifdef WORDS_BIGENDIAN
   if (table->db_low_byte_first)
@@ -4186,7 +4187,7 @@
 				     MY_SEQ_SPACES);
     if (from != end)
     {
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       error=1;
     }
   }
@@ -4364,7 +4365,7 @@
   if (length > field_length)
   {
     length=field_length;
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     error= 1;
   }
   memcpy(ptr+HA_KEY_BLOB_LENGTH,from,length);
@@ -4682,7 +4683,7 @@
 						      min(length, copy_length),
 						      copy_length);
     if (copy_length < length)
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     
     Field_blob::store_length(copy_length);
     if (was_conversion || table->copy_blobs || copy_length <= MAX_FIELD_WIDTH)
@@ -5241,11 +5242,11 @@
       if (err || end != from+length || tmp > typelib->count)
       {
 	tmp=0;
-	set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+	set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
       }
     }
     else
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   }
   store_type((ulonglong) tmp);
   return err;
@@ -5263,7 +5264,7 @@
   int error= 0;
   if ((uint) nr > typelib->count || nr == 0)
   {
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     nr=0;
     error=1;
   }
@@ -5419,11 +5420,11 @@
 	tmp > (ulonglong) (((longlong) 1 << typelib->count) - (longlong) 1))
     {
       tmp=0;      
-      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+      set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     }
   }
   else if (got_warning)
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
   store_type(tmp);
   return err;
 }
@@ -5436,7 +5437,7 @@
 				    (longlong) 1))
   {
     nr&= (longlong) (((longlong) 1 << typelib->count) - (longlong) 1);    
-    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED);
+    set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
     error=1;
   }
   store_type((ulonglong) nr);
@@ -5823,7 +5824,7 @@
     set_warning()
       level            - level of message (Note/Warning/Error)
       code             - error code of message to be produced
-      dont_count_cuted - whenever we should increase cut fields count or not
+      cuted_increment  - whenever we should increase cut fields count or not
 
   NOTE
     This function won't produce warning and increase cut fields counter
@@ -5834,13 +5835,12 @@
     false - otherwise
 */
 bool 
-Field::set_warning(const uint level, const uint code, bool dont_count_cuted)
+Field::set_warning(const uint level, const uint code, int cuted_increment)
 {
   THD *thd= table->in_use;
   if (thd->count_cuted_fields)
   {
-    if (!dont_count_cuted)
-      thd->cuted_fields++;
+    thd->cuted_fields+= cuted_increment;
     push_warning_printf(thd, (MYSQL_ERROR::enum_warning_level) level,
                         code, ER(code), field_name, thd->row_count);
     return 0;
@@ -5850,24 +5850,6 @@
 
 
 /*
-  Produce warning or note about data saved into field
-
-  SYNOPSYS
-    set_warning()
-      level            - level of message (Note/Warning/Error)
-      code             - error code of message to be produced
-  
-  NOTE
-    This function won't produce warning and increase cut fields counter
-    if count_cuted_fields == FIELD_CHECK_IGNORE for current thread.
-*/
-void Field::set_warning(const uint level, const uint code)
-{
-  (void) set_warning(level, code, 0);
-}
-
-
-/*
   Produce warning or note about datetime string data saved into field
 
   SYNOPSYS
@@ -5877,7 +5859,7 @@
       str              - string value which we tried to save
       str_len          - length of string which we tried to save
       ts_type          - type of datetime value (datetime/date/time)
-      dont_count_cuted - whenever we should increase cut fields count or not
+      cuted_increment  - whenever we should increase cut fields count or not
   
   NOTE
     This function will always produce some warning but won't increase cut 
@@ -5887,9 +5869,9 @@
 void 
 Field::set_datetime_warning(const uint level, const uint code, 
                             const char *str, uint str_length, 
-                            timestamp_type ts_type, bool dont_count_cuted)
+                            timestamp_type ts_type, int cuted_increment)
 {
-  if (set_warning(level, code, dont_count_cuted))
+  if (set_warning(level, code, cuted_increment))
     make_truncated_value_warning(table->in_use, str, str_length, ts_type);
 }
 
@@ -5903,7 +5885,7 @@
       code             - error code of message to be produced
       nr               - numeric value which we tried to save
       ts_type          - type of datetime value (datetime/date/time)
-      dont_count_cuted - whenever we should increase cut fields count or not
+      cuted_increment  - whenever we should increase cut fields count or not
   
   NOTE
     This function will always produce some warning but won't increase cut 
@@ -5913,9 +5895,9 @@
 void 
 Field::set_datetime_warning(const uint level, const uint code, 
                             longlong nr, timestamp_type ts_type,
-                            bool dont_count_cuted)
+                            int cuted_increment)
 {
-  if (set_warning(level, code, dont_count_cuted))
+  if (set_warning(level, code, cuted_increment))
   {
     char str_nr[22];
     char *str_end= longlong10_to_str(nr, str_nr, -10);
@@ -5944,10 +5926,11 @@
 Field::set_datetime_warning(const uint level, const uint code, 
                             double nr, timestamp_type ts_type)
 {
-  if (set_warning(level, code, 0))
+  if (set_warning(level, code, 1))
   {
-    char str_nr[DBL_DIG + 1];
-    uint str_len= snprintf(str_nr, sizeof(str_nr), "%g", nr);
+    /* DBL_DIG is enough to print '-[digits].E+###' */
+    char str_nr[DBL_DIG + 8];
+    uint str_len= my_sprintf(str_nr, (str_nr, "%g", nr));
     make_truncated_value_warning(table->in_use, str_nr, str_len, ts_type);
   }
 }

--- 1.96/sql/field.h	Thu Jun 10 03:57:15 2004
+++ 1.97/sql/field.h	Thu Jun 17 20:33:33 2004
@@ -268,15 +268,14 @@
   virtual CHARSET_INFO *charset(void) const { return &my_charset_bin; }
   virtual bool has_charset(void) const { return FALSE; }
   virtual void set_charset(CHARSET_INFO *charset) { }
-  void set_warning(const unsigned int level, const unsigned int code);
   bool set_warning(const unsigned int level, const unsigned int code, 
-                   bool dont_count_cuted);
+                   int cuted_increment);
   void set_datetime_warning(const uint level, const uint code, 
                             const char *str, uint str_len,
-                            timestamp_type ts_type, bool dont_count_cuted);
+                            timestamp_type ts_type, int cuted_increment);
   void set_datetime_warning(const uint level, const uint code, 
                             longlong nr, timestamp_type ts_type,
-                            bool dont_count_cuted);
+                            int cuted_increment);
   void set_datetime_warning(const uint level, const uint code, 
                             double nr, timestamp_type ts_type);
   virtual field_cast_enum field_cast_type()= 0;

--- 1.27/sql/field_conv.cc	Tue Apr  6 23:35:20 2004
+++ 1.28/sql/field_conv.cc	Thu Jun 17 20:33:34 2004
@@ -121,7 +121,8 @@
   field->reset();
   if (current_thd->count_cuted_fields == CHECK_FIELD_WARN)
   {
-    field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,ER_WARN_DATA_TRUNCATED);
+    field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
+                       ER_WARN_DATA_TRUNCATED, 1);
     return 0;
   }
   if (!current_thd->no_errors)
@@ -178,7 +179,8 @@
   }
   if (current_thd->count_cuted_fields == CHECK_FIELD_WARN)
   {
-    field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,ER_WARN_NULL_TO_NOTNULL);
+    field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
+                       ER_WARN_NULL_TO_NOTNULL, 1);
     return 0;
   }
   if (!current_thd->no_errors)
@@ -229,7 +231,7 @@
   if (*copy->from_null_ptr & copy->from_bit)
   {
     copy->to_field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
-      ER_WARN_DATA_TRUNCATED);
+                                ER_WARN_DATA_TRUNCATED, 1);
     copy->to_field->reset();
   }
   else
@@ -329,7 +331,7 @@
     if (!my_isspace(system_charset_info, *ptr))	// QQ: ucs incompatible
     {
       copy->to_field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
-        ER_WARN_DATA_TRUNCATED);
+                                  ER_WARN_DATA_TRUNCATED, 1);
       break;
     }
   }
@@ -350,7 +352,7 @@
     length=copy->to_length-2;
     if (current_thd->count_cuted_fields)
       copy->to_field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
-      ER_WARN_DATA_TRUNCATED);
+                                  ER_WARN_DATA_TRUNCATED, 1);
   }
   int2store(copy->to_ptr,length);
   memcpy(copy->to_ptr+2, copy->from_ptr,length);

--- 1.60/sql/item_timefunc.cc	Fri Jun 11 18:36:40 2004
+++ 1.61/sql/item_timefunc.cc	Thu Jun 17 20:33:34 2004
@@ -909,6 +909,11 @@
   
   if (get_arg0_date(&ltime, 0))
   {
+    /*
+      We have to set null_value again because get_arg0_date will also set it
+      to true if we have wrong datetime parameter (and we should return 0 in 
+      this case).
+    */
     null_value= args[0]->null_value;
     return 0;
   }
@@ -1138,7 +1143,7 @@
   store_now_in_TIME(&ltime);
   
   /* For getdate */
-  ltime.hour= ltime.minute= ltime.second= 0;
+  ltime.hour= ltime.minute= ltime.second= ltime.second_part= 0;
   ltime.time_type=TIMESTAMP_DATE;
   value= (longlong) TIME_to_ulonglong_date(&ltime);
 }
@@ -1205,7 +1210,7 @@
   String tmp((char*) buff,sizeof(buff), &my_charset_bin);
 
   decimals=0;
-  /* QQ:??? collation.set(&my_charset_bin); */ 
+  collation.set(&my_charset_bin);
   store_now_in_TIME(&ltime);
   value= TIME_to_ulonglong_time(&ltime);
   make_time((DATE_TIME_FORMAT *) 0, &ltime, &tmp);
@@ -1500,10 +1505,11 @@
 
 void Item_func_from_unixtime::fix_length_and_dec()
 { 
+  thd= current_thd;
   collation.set(&my_charset_bin);
   decimals=0;
   max_length=MAX_DATETIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
-  current_thd->time_zone_used= 1;
+  thd->time_zone_used= 1;
 }
 
 
@@ -1517,7 +1523,7 @@
   if ((null_value=args[0]->null_value))
     goto null_date;
   
-  current_thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, tmp);
+  thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, tmp);
   
   if (str->alloc(20*MY_CHARSET_BIN_MB_MAXLEN))
     goto null_date;
@@ -1601,8 +1607,7 @@
   if (get_date(&time_tmp, 0))
     return 0;
   
-  return (time_tmp.year*10000L+time_tmp.month*100+time_tmp.day)*LL(1000000)+
-	 (time_tmp.hour*10000L+time_tmp.minute*100L+time_tmp.second);
+  return (longlong)TIME_to_ulonglong_datetime(&time_tmp);
 }
 
 
@@ -1625,7 +1630,7 @@
     return 1;
   }
 
-  /* Check if we in range there we treat datetime values as non-UTC */
+  /* Check if we in range where we treat datetime values as non-UTC */
   if (ltime->year < TIMESTAMP_MAX_YEAR && ltime->year > TIMESTAMP_MIN_YEAR ||
       ltime->year==TIMESTAMP_MAX_YEAR && ltime->month==1 && ltime->day==1 ||
       ltime->year==TIMESTAMP_MIN_YEAR && ltime->month==12 && ltime->day==31)

--- 1.46/sql/item_timefunc.h	Fri Jun 11 18:36:44 2004
+++ 1.47/sql/item_timefunc.h	Thu Jun 17 20:33:35 2004
@@ -509,6 +509,7 @@
 
 class Item_func_from_unixtime :public Item_date_func
 {
+  THD *thd;
  public:
   Item_func_from_unixtime(Item *a) :Item_date_func(a) {}
   double val()

--- 1.132/sql/log.cc	Fri Jun 11 11:21:31 2004
+++ 1.133/sql/log.cc	Thu Jun 17 20:33:36 2004
@@ -1269,9 +1269,10 @@
           thd->variables.time_zone != global_system_variables.time_zone)
       {
         char buf[MAX_TIME_ZONE_NAME_LENGTH + 26];
-        int len= my_snprintf(buf, sizeof(buf), "SET ONE_SHOT TIME_ZONE='%s'",
-                             thd->variables.time_zone->get_name()->ptr());
-        Query_log_event e(thd, buf, len, 0);
+        char *buf_end= strxmov(buf, "SET ONE_SHOT TIME_ZONE='", 
+                               thd->variables.time_zone->get_name()->ptr(),
+                               "'", NullS);
+        Query_log_event e(thd, buf, buf_end - buf, 0);
         e.set_log_pos(this);
         if (e.write(file))
           goto err;

--- 1.247/sql/slave.cc	Fri Jun 11 11:21:36 2004
+++ 1.248/sql/slave.cc	Thu Jun 17 20:33:37 2004
@@ -1255,7 +1255,11 @@
     variable (it is time zone abbreviation) since it determined at start
     time and so could differ for slave and master even if they are really
     in the same system time zone. So we are omiting this check and just
-    relying on documentation.
+    relying on documentation. Also according to Monty there are many users
+    who are using replication between servers in various time zones. Hence 
+    such check will broke everything for them. (And now everything will 
+    work for them because by default both their master and slave will have 
+    'SYSTEM' time zone).
   */
   if (!mysql_real_query(mysql, "SELECT @@GLOBAL.TIME_ZONE", 25) &&
       (master_res= mysql_store_result(mysql)))

--- 1.222/sql/sql_class.h	Fri Jun  4 17:15:16 2004
+++ 1.223/sql/sql_class.h	Thu Jun 17 20:33:38 2004
@@ -405,7 +405,7 @@
   CHARSET_INFO	*collation_database;
   CHARSET_INFO  *collation_connection;
 
-  Time_zone *time_zone; /* Timezone */
+  Time_zone *time_zone;
 
   /* DATE, DATETIME and TIME formats */
   DATE_TIME_FORMAT *date_format;

--- 1.75/sql/sql_load.cc	Wed May  5 13:31:15 2004
+++ 1.76/sql/sql_load.cc	Thu Jun 17 20:33:38 2004
@@ -530,7 +530,7 @@
 	    ((Field_timestamp*) field)->set_time();
 	  else if (field != table->next_number_field)      
 	    field->set_warning((uint) MYSQL_ERROR::WARN_LEVEL_WARN, 
-			       ER_WARN_NULL_TO_NOTNULL);
+			       ER_WARN_NULL_TO_NOTNULL, 1);
 	}
 	continue;
       }

--- 1.1/mysql-test/r/rpl_timezone.result	Fri Jun 11 11:21:38 2004
+++ 1.2/mysql-test/r/rpl_timezone.result	Thu Jun 17 20:33:28 2004
@@ -73,5 +73,5 @@
 2001-09-09 03:46:40
 1000000000
 set global time_zone='MET';
-ERROR HY000: Binary logging and replication forbid changing the global server time zone
+ERROR HY000: Binary logging and replication forbid changing of the global server time zone
 drop table t1, t2;

--- 1.4/sql/tztime.cc	Fri Jun 11 18:36:45 2004
+++ 1.5/sql/tztime.cc	Thu Jun 17 20:33:39 2004
@@ -486,19 +486,19 @@
 }
 
 
-static const int mon_lengths[2][MONS_PER_YEAR]=
+static const uint mon_lengths[2][MONS_PER_YEAR]=
 {
   { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
   { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
 };
 
-static const int mon_starts[2][MONS_PER_YEAR]=
+static const uint mon_starts[2][MONS_PER_YEAR]=
 {
   { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 },
   { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }
 };
 
-static const int year_lengths[2]=
+static const uint year_lengths[2]=
 {
   DAYS_PER_NYEAR, DAYS_PER_LYEAR
 };
@@ -530,7 +530,7 @@
   long rem;
   int y;
   int yleap;
-  const int *ip;
+  const uint *ip;
 
   days= t / SECS_PER_DAY;
   rem= t % SECS_PER_DAY;
@@ -652,7 +652,7 @@
 const TRAN_TYPE_INFO * 
 find_transition_type(my_time_t t, const TIME_ZONE_INFO *sp)
 {
-  if (sp->timecnt == 0 || t < sp->ats[0])
+  if (unlikely(sp->timecnt == 0 || t < sp->ats[0]))
   {
     /* 
       If we have not any transitions or t is before first transition let
@@ -715,9 +715,9 @@
     leap seconds, and even in case when we have such time zone there won't 
     be many iterations (we have about 22 corrections at this moment (2004)).
   */
-  for ( i= sp->leapcnt; i > 0; )
+  for ( i= sp->leapcnt; i-- > 0; )
   {
-    lp= &sp->lsis[--i];
+    lp= &sp->lsis[i];
     if (sec_in_utc >= lp->ls_trans)
     {
       if (sec_in_utc == lp->ls_trans)
@@ -730,8 +730,8 @@
                  sp->lsis[i].ls_trans == sp->lsis[i - 1].ls_trans + 1 &&
                  sp->lsis[i].ls_corr == sp->lsis[i - 1].ls_corr + 1)
           {
-            ++hit;
-            --i;
+            hit++;
+            i--;
           }
         }
       }
@@ -766,6 +766,17 @@
 static my_time_t 
 sec_since_epoch(int year, int mon, int mday, int hour, int min ,int sec)
 {
+#ifndef WE_WANT_TO_HANDLE_UNORMALIZED_DATES
+  /* 
+    It turns out that only whenever month is normalized or unnormalized
+    plays role.
+  */
+  DBUG_ASSERT(mon > 0 && mon < 13);
+  long days= year * DAYS_PER_NYEAR - EPOCH_YEAR * DAYS_PER_NYEAR +
+             LEAPS_THRU_END_OF(year - 1) -
+             LEAPS_THRU_END_OF(EPOCH_YEAR - 1);
+  days+= mon_starts[isleap(year)][mon - 1];
+#else
   long norm_month= (mon - 1) % MONS_PER_YEAR;
   long a_year= year + (mon - 1)/MONS_PER_YEAR - (int)(norm_month < 0);
   long days= a_year * DAYS_PER_NYEAR - EPOCH_YEAR * DAYS_PER_NYEAR +
@@ -773,6 +784,7 @@
              LEAPS_THRU_END_OF(EPOCH_YEAR - 1);
   days+= mon_starts[isleap(a_year)]
                     [norm_month + (norm_month < 0 ? MONS_PER_YEAR : 0)];
+#endif
   days+= mday - 1;
 
   return ((days * HOURS_PER_DAY + hour) * MINS_PER_HOUR + min) * 
@@ -799,12 +811,14 @@
       has two answers it will give the smaller one
     - If we are in spring time gap then it will return 
       beginning of the gap
-    - It doesn't normalize structure TIME still it should handle 
-      un-normalized input right.
     - It can give wrong results near the ends of my_time_t due to 
       overflows, but we are safe since in MySQL we will never 
       call this function for such dates (its restriction for year
       between 1970 and 2038 gives us several days of reserve).
+    - By default it doesn't support un-normalized input. But if 
+      sec_since_epoch() function supports un-normalized dates
+      then this function should handle un-normalized input right, 
+      altough it won't normalize structure TIME.
     
     Traditional approach to problem of conversion from broken down 
     representation to time_t is iterative. Both elsie's and glibc 
@@ -2052,7 +2066,8 @@
     it will be reported during first call).
 
     If name pointer is 0 then this function returns 0 (this allows to pass 0
-    values as parameter without additional external check).
+    values as parameter without additional external check and this property 
+    is used by @@time_zone variable handling code).
 
     It will perform lookup in system tables (mysql.time_zone*) if needed.
  

--- 1.39/mysql-test/r/select.result	Thu Jun 10 03:57:07 2004
+++ 1.40/mysql-test/r/select.result	Thu Jun 17 20:33:31 2004
@@ -2071,13 +2071,15 @@
 INSERT INTO t1 VALUES (200001,2,1,1,100,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\E$',''),(200002,2,2,1,101,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\C$',''),(200003,1,3,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,20020425060427,'c:',NULL);
 CREATE TABLE t2 (  hmid int(10) unsigned default NULL,  volid int(10) unsigned default NULL,  sampletid smallint(5) unsigned default NULL,  sampletime datetime default NULL,  samplevalue bigint(20) unsigned default NULL,  KEY idx1 (hmid,volid,sampletid,sampletime)) ENGINE=MyISAM;
 INSERT INTO t2 VALUES (1,3,10,'2002-06-01 08:00:00',35),(1,3,1010,'2002-06-01 12:00:01',35);
-SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= 'NULL' AND b.sampletime < 'NULL' AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
+SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= 'wrong-date-value' AND b.sampletime < 'wrong-date-value' AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
 gvid	the_success	the_fail	the_size	the_time
 Warnings:
-Warning	1292	Truncated wrong datetime value: 'NULL'
-Warning	1292	Truncated wrong datetime value: 'NULL'
-Warning	1292	Truncated wrong datetime value: 'NULL'
-Warning	1292	Truncated wrong datetime value: 'NULL'
+Warning	1292	Truncated wrong datetime value: 'wrong-date-value'
+Warning	1292	Truncated wrong datetime value: 'wrong-date-value'
+Warning	1292	Truncated wrong datetime value: 'wrong-date-value'
+Warning	1292	Truncated wrong datetime value: 'wrong-date-value'
+SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= NULL AND b.sampletime < NULL AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
+gvid	the_success	the_fail	the_size	the_time
 DROP TABLE t1,t2;
 create table  t1 (  A_Id bigint(20) NOT NULL default '0',  A_UpdateBy char(10) NOT NULL default '',  A_UpdateDate bigint(20) NOT NULL default '0',  A_UpdateSerial int(11) NOT NULL default '0',  other_types bigint(20) NOT NULL default '0',  wss_type bigint(20) NOT NULL default '0');
 INSERT INTO t1 VALUES (102935998719055004,'brade',1029359987,2,102935229116544068,102935229216544093);

--- 1.23/mysql-test/t/select.test	Wed Feb 11 02:06:42 2004
+++ 1.24/mysql-test/t/select.test	Thu Jun 17 20:33:32 2004
@@ -1771,7 +1771,9 @@
 INSERT INTO t1 VALUES (200001,2,1,1,100,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\E$',''),(200002,2,2,1,101,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\C$',''),(200003,1,3,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,20020425060427,'c:',NULL);
 CREATE TABLE t2 (  hmid int(10) unsigned default NULL,  volid int(10) unsigned default NULL,  sampletid smallint(5) unsigned default NULL,  sampletime datetime default NULL,  samplevalue bigint(20) unsigned default NULL,  KEY idx1 (hmid,volid,sampletid,sampletime)) ENGINE=MyISAM;
 INSERT INTO t2 VALUES (1,3,10,'2002-06-01 08:00:00',35),(1,3,1010,'2002-06-01 12:00:01',35);
-SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= 'NULL' AND b.sampletime < 'NULL' AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
+SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= 'wrong-date-value' AND b.sampletime < 'wrong-date-value' AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
+# Testing the same select with NULL's instead of invalid datetime values
+SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= NULL AND b.sampletime < NULL AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
 DROP TABLE t1,t2;
 
 #

--- 1.126/sql/set_var.cc	Fri Jun 11 18:36:45 2004
+++ 1.127/sql/set_var.cc	Thu Jun 17 20:33:36 2004
@@ -2337,8 +2337,8 @@
       (mysql_bin_log.is_open() ||
        active_mi->slave_running || active_mi->rli.slave_running))
   {
-    my_printf_error(0, "Binary logging and replication forbid changing \
-the global server time zone", MYF(0));
+    my_printf_error(0, "Binary logging and replication forbid changing "
+                       "of the global server time zone", MYF(0));
     return 1;
   }
 #endif
Thread
bk commit into 4.1 tree (dlenev:1.1898)dlenev17 Jun