List:Commits« Previous MessageNext Message »
From:eugene Date:June 14 2006 9:48pm
Subject:bk commit into 5.0 tree (evgen:1.2171)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of evgen. When evgen 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
  1.2171 06/06/15 01:48:41 evgen@stripped +6 -0
  Many files:
    After merge fix

  sql/field.cc
    1.309 06/06/15 01:48:01 evgen@stripped +32 -50
    After merge fix

  sql/item_cmpfunc.cc
    1.206 06/06/15 01:47:16 evgen@stripped +4 -4
    After merge fix

  sql/item_cmpfunc.h
    1.126 06/06/15 01:46:59 evgen@stripped +5 -10
    After merge fix

  mysql-test/r/cast.result
    1.44 06/06/15 01:46:41 evgen@stripped +1 -1
    After merge fix

  mysql-test/r/func_concat.result
    1.11 06/06/15 01:46:27 evgen@stripped +7 -7
    After merge fix

  mysql-test/r/func_time.result
    1.52 06/06/15 01:46:09 evgen@stripped +3 -1
    After merge fix

# 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:	evgen
# Host:	moonbone.local
# Root:	/work/tmp_merge-opt

--- 1.308/sql/field.cc	2006-06-14 23:54:05 +04:00
+++ 1.309/sql/field.cc	2006-06-15 01:48:01 +04:00
@@ -4530,11 +4530,11 @@
   int error;
   bool have_smth_to_conv;
   my_bool in_dst_time_gap;
-  THD *thd= table->in_use;
+  THD *thd= table ? table->in_use : current_thd;
 
   /* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */
   have_smth_to_conv= (str_to_datetime(from, len, &l_time,
-                                      (table->in_use->variables.sql_mode &
+                                      (thd->variables.sql_mode &
                                        MODE_NO_ZERO_DATE) |
                                       MODE_NO_ZERO_IN_DATE, &error) >
                       MYSQL_TIMESTAMP_ERROR);
@@ -4599,7 +4599,7 @@
   my_time_t timestamp= 0;
   int error;
   my_bool in_dst_time_gap;
-  THD *thd= table->in_use;
+  THD *thd= table ? table->in_use : current_thd;
 
   /* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */
   longlong tmp= number_to_datetime(nr, &l_time, (thd->variables.sql_mode &
@@ -4653,7 +4653,7 @@
 {
   uint32 temp;
   TIME time_tmp;
-  THD  *thd= table->in_use;
+  THD  *thd= table ? table->in_use : current_thd;
 
 #ifdef WORDS_BIGENDIAN
   if (table->s->db_low_byte_first)
@@ -4678,7 +4678,7 @@
 {
   uint32 temp, temp2;
   TIME time_tmp;
-  THD *thd= table->in_use;
+  THD *thd= table ? table->in_use : current_thd;
   char *to;
 
   val_buffer->alloc(field_length+1);
@@ -4749,7 +4749,7 @@
 bool Field_timestamp::get_date(TIME *ltime, uint fuzzydate)
 {
   long temp;
-  THD *thd= table->in_use;
+  THD *thd= table ? table->in_use : current_thd;
 #ifdef WORDS_BIGENDIAN
   if (table->s->db_low_byte_first)
     temp=uint4korr(ptr);
@@ -4832,7 +4832,8 @@
 
 void Field_timestamp::set_time()
 {
-  long tmp= (long) table->in_use->query_start();
+  THD *thd= table ? table->in_use : current_thd;
+  long tmp= (long) thd->query_start();
   set_notnull();
 #ifdef WORDS_BIGENDIAN
   if (table->s->db_low_byte_first)
@@ -5024,12 +5025,13 @@
 bool Field_time::get_date(TIME *ltime, uint fuzzydate)
 {
   long tmp;
+  THD *thd= table ? table->in_use : current_thd;
   if (!(fuzzydate & TIME_FUZZY_DATE))
   {
-    push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN,
+    push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
                         ER_WARN_DATA_OUT_OF_RANGE,
                         ER(ER_WARN_DATA_OUT_OF_RANGE), field_name,
-                        table->in_use->row_count);
+                        thd->row_count);
     return 1;
   }
   tmp=(long) sint3korr(ptr);
@@ -5217,9 +5219,10 @@
   TIME l_time;
   uint32 tmp;
   int error;
+  THD *thd= table ? table->in_use : current_thd;
 
   if (str_to_datetime(from, len, &l_time, TIME_FUZZY_DATE |
-                      (table->in_use->variables.sql_mode &
+                      (thd->variables.sql_mode &
                        (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
                         MODE_INVALID_DATES)),
                       &error) <= MYSQL_TIMESTAMP_ERROR)
@@ -5272,9 +5275,10 @@
   TIME not_used;
   int error;
   longlong initial_nr= nr;
+  THD *thd= table ? table->in_use : current_thd;
 
   nr= number_to_datetime(nr, &not_used, (TIME_FUZZY_DATE |
-                                         (table->in_use->variables.sql_mode &
+                                         (thd->variables.sql_mode &
                                           (MODE_NO_ZERO_IN_DATE |
                                            MODE_NO_ZERO_DATE |
                                            MODE_INVALID_DATES))), &error);
@@ -5420,9 +5424,10 @@
   TIME l_time;
   long tmp;
   int error;
+  THD *thd= table ? table->in_use : current_thd;
   if (str_to_datetime(from, len, &l_time,
                       (TIME_FUZZY_DATE |
-                       (table->in_use->variables.sql_mode &
+                       (thd->variables.sql_mode &
                         (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
                          MODE_INVALID_DATES))),
                       &error) <= MYSQL_TIMESTAMP_ERROR)
@@ -5460,9 +5465,10 @@
   TIME l_time;
   longlong tmp;
   int error;
+  THD *thd= table ? table->in_use : current_thd;
   if (number_to_datetime(nr, &l_time,
                          (TIME_FUZZY_DATE |
-                          (table->in_use->variables.sql_mode &
+                          (thd->variables.sql_mode &
                            (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
                             MODE_INVALID_DATES))),
                          &error) == LL(-1))
@@ -5605,10 +5611,11 @@
   int error;
   ulonglong tmp= 0;
   enum enum_mysql_timestamp_type func_res;
+  THD *thd= table ? table->in_use : current_thd;
 
   func_res= str_to_datetime(from, len, &time_tmp,
                             (TIME_FUZZY_DATE |
-                             (table->in_use->variables.sql_mode &
+                             (thd->variables.sql_mode &
                               (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
                                MODE_INVALID_DATES))),
                             &error);
@@ -5655,9 +5662,10 @@
   TIME not_used;
   int error;
   longlong initial_nr= nr;
+  THD *thd= table ? table->in_use : current_thd;
 
   nr= number_to_datetime(nr, &not_used, (TIME_FUZZY_DATE |
-                                         (table->in_use->variables.sql_mode &
+                                         (thd->variables.sql_mode &
                                           (MODE_NO_ZERO_IN_DATE |
                                            MODE_NO_ZERO_DATE |
                                            MODE_INVALID_DATES))), &error);
@@ -9076,10 +9084,10 @@
                             const char *str, uint str_length, 
                             timestamp_type ts_type, int cuted_increment)
 {
-  if (table->in_use->really_abort_on_warning() ||
+  THD *thd= table ? table->in_use : current_thd;
+  if (thd->really_abort_on_warning() ||
       set_warning(level, code, cuted_increment))
-    make_truncated_value_warning(table ? table->in_use : current_thd,
-                                 str, str_length, ts_type,
+    make_truncated_value_warning(thd, str, str_length, ts_type,
                                  field_name);
 }
 
@@ -9106,13 +9114,13 @@
                             longlong nr, timestamp_type ts_type,
                             int cuted_increment)
 {
-  if (table->in_use->really_abort_on_warning() ||
+  THD *thd= table ? table->in_use : current_thd;
+  if (thd->really_abort_on_warning() ||
       set_warning(level, code, cuted_increment))
   {
     char str_nr[22];
     char *str_end= longlong10_to_str(nr, str_nr, -10);
-    make_truncated_value_warning(table ? table->in_use : current_thd,
-                                 str_nr, (uint) (str_end - str_nr), 
+    make_truncated_value_warning(thd, str_nr, (uint) (str_end - str_nr), 
                                  ts_type, field_name);
   }
 }
@@ -9138,41 +9146,15 @@
 Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, 
                             double nr, timestamp_type ts_type)
 {
-  if (table->in_use->really_abort_on_warning() ||
+  THD *thd= table ? table->in_use : current_thd;
+  if (thd->really_abort_on_warning() ||
       set_warning(level, code, 1))
   {
     /* 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 ? table->in_use : current_thd,
-                                 str_nr, str_len, ts_type,
+    make_truncated_value_warning(thd, str_nr, str_len, ts_type,
                                  field_name);
   }
 }
 
-/*
-  maximum possible display length for blob
-
-  SYNOPSIS
-    Field_blob::max_length()
-
-  RETURN
-    length
-*/
-uint32 Field_blob::max_length()
-{
-  switch (packlength)
-  {
-  case 1:
-    return 255 * field_charset->mbmaxlen;
-  case 2:
-    return 65535 * field_charset->mbmaxlen;
-  case 3:
-    return 16777215 * field_charset->mbmaxlen;
-  case 4:
-    return (uint32) 4294967295U;
-  default:
-    DBUG_ASSERT(0); // we should never go here
-    return 0;
-  }
-}

--- 1.205/sql/item_cmpfunc.cc	2006-06-14 23:54:05 +04:00
+++ 1.206/sql/item_cmpfunc.cc	2006-06-15 01:47:16 +04:00
@@ -366,18 +366,18 @@
   if (!(*item)->with_subselect && (*item)->const_item())
   {
     /* For comparison purposes allow invalid dates like 2000-01-32 */
-    ulong orig_sql_mode= field->table->in_use->variables.sql_mode;
-    field->table->in_use->variables.sql_mode|= MODE_INVALID_DATES;
+    ulong orig_sql_mode= thd->variables.sql_mode;
+    thd->variables.sql_mode|= MODE_INVALID_DATES;
     if (!(*item)->save_in_field(field, 1) && !((*item)->null_value))
     {
       Item *tmp=new Item_int_with_ref(field->val_int(), *item,
                                       test(field->flags & UNSIGNED_FLAG));
-      field->table->in_use->variables.sql_mode= orig_sql_mode;
+      thd->variables.sql_mode= orig_sql_mode;
       if (tmp)
         thd->change_item_tree(item, tmp);
       return 1;					// Item was replaced
     }
-    field->table->in_use->variables.sql_mode= orig_sql_mode;
+    thd->variables.sql_mode= orig_sql_mode;
   }
   return 0;
 }

--- 1.125/sql/item_cmpfunc.h	2006-06-14 23:01:15 +04:00
+++ 1.126/sql/item_cmpfunc.h	2006-06-15 01:46:59 +04:00
@@ -45,11 +45,8 @@
   int set_compare_func(Item_bool_func2 *owner, Item_result type);
   inline int set_compare_func(Item_bool_func2 *owner_arg)
   {
-    Item_result ar= (*a)->result_as_longlong() && (*b)->const_item() ?
-                      INT_RESULT : (*a)->result_type();
-    Item_result br= (*b)->result_as_longlong() && (*a)->const_item() ?
-                      INT_RESULT : (*b)->result_type();
-    return set_compare_func(owner_arg, item_cmp_type(ar, br));
+    return set_compare_func(owner_arg, item_cmp_type((*a)->result_type(),
+                                                     (*b)->result_type()));
   }
   inline int set_cmp_func(Item_bool_func2 *owner_arg,
 			  Item **a1, Item **a2,
@@ -62,11 +59,9 @@
   inline int set_cmp_func(Item_bool_func2 *owner_arg,
 			  Item **a1, Item **a2)
   {
-    Item_result ar= (*a1)->result_as_longlong() && (*a2)->const_item() ?
-                      INT_RESULT : (*a1)->result_type();
-    Item_result br= (*a2)->result_as_longlong() && (*a1)->const_item() ?
-                      INT_RESULT : (*a2)->result_type();
-    return set_cmp_func(owner_arg, a1, a2, item_cmp_type(ar, br));
+    return set_cmp_func(owner_arg, a1, a2,
+                        item_cmp_type((*a1)->result_type(),
+                                      (*a2)->result_type()));
   }
   inline int compare() { return (this->*func)(); }
 

--- 1.51/mysql-test/r/func_time.result	2006-06-14 23:54:05 +04:00
+++ 1.52/mysql-test/r/func_time.result	2006-06-15 01:46:09 +04:00
@@ -784,7 +784,9 @@
 select f1 from t1 where "2006-1-1" between f1 and 'zzz';
 f1
 Warnings:
-Warning	1292	Truncated incorrect date value: 'zzz'
+Warning	1292	Incorrect date value: 'zzz' for column 'f1' at row 1
+Warning	1292	Truncated incorrect INTEGER value: 'zzz'
+Warning	1292	Truncated incorrect INTEGER value: 'zzz'
 select f1 from t1 where makedate(2006,1) between date(f1) and date(f3);
 f1
 2006-01-01

--- 1.10/mysql-test/r/func_concat.result	2006-06-14 23:54:05 +04:00
+++ 1.11/mysql-test/r/func_concat.result	2006-06-15 01:46:27 +04:00
@@ -68,13 +68,6 @@
 a
 a
 a0.0000
-create table t1(f1 varchar(6)) charset=utf8;
-insert into t1 values ("123456");
-select concat(f1, 2) a from t1 union select 'x' a from t1;
-a
-1234562
-x
-drop table t1;
 select concat((select x from (select 'a' as x) as t1 ),
 (select y from (select 'b' as y) as t2 )) from (select 1 union select 2 )
 as t3;
@@ -82,3 +75,10 @@
 (select y from (select 'b' as y) as t2 ))
 ab
 ab
+create table t1(f1 varchar(6)) charset=utf8;
+insert into t1 values ("123456");
+select concat(f1, 2) a from t1 union select 'x' a from t1;
+a
+1234562
+x
+drop table t1;

--- 1.43/mysql-test/r/cast.result	2006-06-14 23:01:15 +04:00
+++ 1.44/mysql-test/r/cast.result	2006-06-15 01:46:41 +04:00
@@ -254,7 +254,7 @@
 1
 select cast("1:2:3" as TIME) = "1:02:03";
 cast("1:2:3" as TIME) = "1:02:03"
-1
+0
 select cast(NULL as DATE);
 cast(NULL as DATE)
 NULL
Thread
bk commit into 5.0 tree (evgen:1.2171)eugene14 Jun