List:Internals« Previous MessageNext Message »
From:monty Date:June 1 2005 1:35pm
Subject:bk commit into 5.0 tree (monty:1.1940)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of monty. When monty 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.1940 05/06/01 16:35:09 monty@stripped +19 -0
  Code cleanups during code reviews
  Ensure we get error if INSERT IGNORE ... SELECT fails
  Fixed wrong key_part->key_length usage in index_merge

  strings/decimal.c
    1.51 05/06/01 16:35:05 monty@stripped +26 -10
    Simple optimization
    Code cleanups

  sql/uniques.cc
    1.23 05/06/01 16:35:05 monty@stripped +1 -1
    Code cleanups

  sql/table.h
    1.100 05/06/01 16:35:04 monty@stripped +0 -3
    Code cleanups

  sql/table.cc
    1.168 05/06/01 16:35:04 monty@stripped +4 -8
    Code cleanups

  sql/sql_update.cc
    1.160 05/06/01 16:35:04 monty@stripped +1 -1
    Code cleanups

  sql/sql_show.cc
    1.249 05/06/01 16:35:04 monty@stripped +10 -4
    Safety fix if a LOT of errors are ignored

  sql/sql_select.cc
    1.330 05/06/01 16:35:04 monty@stripped +1 -1
    Code cleanups

  sql/sql_insert.cc
    1.155 05/06/01 16:35:04 monty@stripped +2 -1
    Ensure we get error if INSERT IGNORE ... SELECT fails

  sql/sql_bitmap.h
    1.8 05/06/01 16:35:04 monty@stripped +1 -1
    Added missing return

  sql/sql_base.cc
    1.248 05/06/01 16:35:04 monty@stripped +1 -1
    Code cleanups

  sql/parse_file.cc
    1.12 05/06/01 16:35:03 monty@stripped +2 -2
    Code cleanups

  sql/opt_range.cc
    1.166 05/06/01 16:35:03 monty@stripped +58 -52
    Made get_index_only_read_time() static (instad of inline) to increase portability (function was not declared before use)
    Simple optimization
    Fixed wrong key_part->key_length usage in index_merge
    Removed not used variable n_used_covered
    Indentation fixes & comment cleanups

  sql/item_sum.cc
    1.145 05/06/01 16:35:03 monty@stripped +6 -2
    Code cleanups

  sql/item_subselect.cc
    1.105 05/06/01 16:35:02 monty@stripped +1 -1
    Code cleanups

  sql/item.cc
    1.128 05/06/01 16:35:02 monty@stripped +4 -6
    Code cleanups

  sql/ha_ndbcluster.cc
    1.180 05/06/01 16:35:01 monty@stripped +3 -3
    Code cleanups

  mysql-test/t/information_schema.test
    1.37 05/06/01 16:35:01 monty@stripped +5 -0
    Safety

  mysql-test/r/information_schema.result
    1.54 05/06/01 16:35:01 monty@stripped +1 -0
    Safety

  client/mysql.cc
    1.171 05/06/01 16:35:01 monty@stripped +16 -15
    Code cleanups & simply optimizations

# 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:	monty
# Host:	narttu.mysql.com
# Root:	/home/my/mysql-5.0

--- 1.170/client/mysql.cc	2005-05-18 13:11:46 +03:00
+++ 1.171/client/mysql.cc	2005-06-01 16:35:01 +03:00
@@ -1657,11 +1657,12 @@
 {
   for (uint retry=0;; retry++)
   {
+    int error;
     if (!mysql_real_query(&mysql,buf,length))
       return 0;
-    int error= put_error(&mysql);
+    error= put_error(&mysql);
     if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR || retry > 1 ||
-      !opt_reconnect)
+        !opt_reconnect)
       return error;
     if (reconnect())
       return error;
@@ -2237,22 +2238,23 @@
   }
 }
 
+
 /* print_warnings should be called right after executing a statement */
-static void
-print_warnings()
+
+static void print_warnings()
 {
-  char query[30];
+  const char   *query;
   MYSQL_RES    *result;
   MYSQL_ROW    cur;
+  my_ulonglong num_rows;
 
   /* Get the warnings */
-  strmov(query,"show warnings");
-  mysql_real_query_for_lazy(query,strlen(query));
+  query= "show warnings";
+  mysql_real_query_for_lazy(query, strlen(query));
   mysql_store_result_for_lazy(&result);
 
   /* Bail out when no warnings */
-  my_ulonglong num_rows = mysql_num_rows(result);
-  if (num_rows == 0) 
+  if (!(num_rows= mysql_num_rows(result)))
   {
     mysql_free_result(result);
     return;
@@ -2266,13 +2268,12 @@
   mysql_free_result(result);
 }
 
-static const char
-*array_value(const char **array, char key)
+
+static const char *array_value(const char **array, char key)
 {
-  int x;
-  for (x= 0; array[x]; x+= 2)
-    if (*array[x] == key)
-      return array[x + 1];
+  for (; *array; array+= 2)
+    if (**array == key)
+      return array[1];
   return 0;
 }
 

--- 1.127/sql/item.cc	2005-05-31 14:12:18 +03:00
+++ 1.128/sql/item.cc	2005-06-01 16:35:02 +03:00
@@ -2246,9 +2246,8 @@
       SELECT_LEX_UNIT::item set only for subqueries, so test of it presence
       can be barrier to stop before derived table SELECT or very outer SELECT
     */
-    for(;
-        cursel->master_unit()->item;
-        cursel= cursel->outer_select())
+    for (; cursel->master_unit()->item;
+         cursel= cursel->outer_select())
     {
       Item_subselect *subselect_item= cursel->master_unit()->item;
       subselect_item->used_tables_cache|= OUTER_REF_TABLE_BIT;
@@ -2528,9 +2527,8 @@
     resolving)
   */
   SELECT_LEX *previous_select= current_sel;
-  for(;
-      previous_select->outer_select() != last_select;
-      previous_select= previous_select->outer_select())
+  for (; previous_select->outer_select() != last_select;
+       previous_select= previous_select->outer_select())
   {
     Item_subselect *prev_subselect_item=
       previous_select->master_unit()->item;

--- 1.144/sql/item_sum.cc	2005-05-26 20:54:25 +03:00
+++ 1.145/sql/item_sum.cc	2005-06-01 16:35:03 +03:00
@@ -240,8 +240,12 @@
   case REAL_RESULT:
     sum= item->sum;
     break;
-  case STRING_RESULT: // This can happen with ROLLUP. Note that the value is already
-    break;            // copied at function call.
+  case STRING_RESULT:
+    /*
+      This can happen with ROLLUP. Note that the value is already
+      copied at function call.
+    */
+    break;
   case ROW_RESULT:
   default:
     DBUG_ASSERT(0);

--- 1.165/sql/opt_range.cc	2005-05-31 12:29:22 +03:00
+++ 1.166/sql/opt_range.cc	2005-06-01 16:35:03 +03:00
@@ -396,7 +396,7 @@
 static int get_index_merge_params(PARAM *param, key_map& needed_reg,
                            SEL_IMERGE *imerge, double *read_time,
                            ha_rows* imerge_rows);
-inline double get_index_only_read_time(const PARAM* param, ha_rows records,
+static double get_index_only_read_time(const PARAM* param, ha_rows records,
                                        int keynr);
 
 #ifndef DBUG_OFF
@@ -1115,6 +1115,7 @@
       val1  First merged select
       val2  Second merged select
 */
+
 int QUICK_ROR_UNION_SELECT::queue_cmp(void *arg, byte *val1, byte *val2)
 {
   QUICK_ROR_UNION_SELECT *self= (QUICK_ROR_UNION_SELECT*)arg;
@@ -1582,7 +1583,7 @@
     KEY_PART_INFO *key_part= param->table->key_info[pk].key_part;
     KEY_PART_INFO *key_part_end= key_part +
                                  param->table->key_info[pk].key_parts;
-    for(;key_part != key_part_end; ++key_part)
+    for (;key_part != key_part_end; ++key_part)
     {
       bitmap_clear_bit(&param->needed_fields, key_part->fieldnr);
     }
@@ -1746,18 +1747,20 @@
     double best_read_time= read_time;
 
     if (cond)
-      tree= get_mm_tree(&param,cond);
-
-    if (tree && tree->type == SEL_TREE::IMPOSSIBLE)
     {
-      records=0L;                      /* Return -1 from this function. */
-      read_time= (double) HA_POS_ERROR;
-      goto free_mem;
+      if ((tree= get_mm_tree(&param,cond)))
+      {
+        if (tree->type == SEL_TREE::IMPOSSIBLE)
+        {
+          records=0L;                      /* Return -1 from this function. */
+          read_time= (double) HA_POS_ERROR;
+          goto free_mem;
+        }
+        if (tree->type != SEL_TREE::KEY &&
+            tree->type != SEL_TREE::KEY_SMALLER)
+          goto free_mem;
+      }
     }
-    else if (tree && tree->type != SEL_TREE::KEY &&
-                     tree->type != SEL_TREE::KEY_SMALLER)
-      goto free_mem;
-
 
     /*
       Try to construct a QUICK_GROUP_MIN_MAX_SELECT.
@@ -2248,7 +2251,7 @@
     clustered index)
 */
 
-inline double get_index_only_read_time(const PARAM* param, ha_rows records,
+static double get_index_only_read_time(const PARAM* param, ha_rows records,
                                        int keynr)
 {
   double read_time;
@@ -2294,6 +2297,7 @@
       param    Parameter from test_quick_select function
       idx      Index of key in param->keys
       sel_arg  Set of intervals for a given key
+
   RETURN
     NULL - out of memory
     ROR scan structure containing a scan for {idx, sel_arg}
@@ -2306,19 +2310,20 @@
   uchar *bitmap_buf;
   uint keynr;
   DBUG_ENTER("make_ror_scan");
+
   if (!(ror_scan= (ROR_SCAN_INFO*)alloc_root(param->mem_root,
                                              sizeof(ROR_SCAN_INFO))))
     DBUG_RETURN(NULL);
 
   ror_scan->idx= idx;
   ror_scan->keynr= keynr= param->real_keynr[idx];
-  ror_scan->key_rec_length= param->table->key_info[keynr].key_length +
-                            param->table->file->ref_length;
+  ror_scan->key_rec_length= (param->table->key_info[keynr].key_length +
+                             param->table->file->ref_length);
   ror_scan->sel_arg= sel_arg;
   ror_scan->records= param->table->quick_rows[keynr];
 
   if (!(bitmap_buf= (uchar*)alloc_root(param->mem_root,
-                                      param->fields_bitmap_size)))
+                                       param->fields_bitmap_size)))
     DBUG_RETURN(NULL);
 
   if (bitmap_init(&ror_scan->covered_fields, bitmap_buf,
@@ -2329,14 +2334,10 @@
   KEY_PART_INFO *key_part= param->table->key_info[keynr].key_part;
   KEY_PART_INFO *key_part_end= key_part +
                                param->table->key_info[keynr].key_parts;
-  uint n_used_covered= 0;
   for (;key_part != key_part_end; ++key_part)
   {
     if (bitmap_is_set(&param->needed_fields, key_part->fieldnr))
-    {
-      n_used_covered++;
       bitmap_set_bit(&ror_scan->covered_fields, key_part->fieldnr);
-    }
   }
   ror_scan->index_read_cost=
     get_index_only_read_time(param, param->table->quick_rows[ror_scan->keynr],
@@ -2357,6 +2358,7 @@
     0 a = b
     1 a > b
 */
+
 static int cmp_ror_scan_info(ROR_SCAN_INFO** a, ROR_SCAN_INFO** b)
 {
   double val1= rows2double((*a)->records) * (*a)->key_rec_length;
@@ -2380,6 +2382,7 @@
     0 a = b
     1 a > b
 */
+
 static int cmp_ror_scan_info_covering(ROR_SCAN_INFO** a, ROR_SCAN_INFO** b)
 {
   if ((*a)->used_fields_covered > (*b)->used_fields_covered)
@@ -2397,6 +2400,7 @@
   return 0;
 }
 
+
 /* Auxiliary structure for incremental ROR-intersection creation */
 typedef struct
 {
@@ -2462,6 +2466,8 @@
   dst->index_scan_costs= src->index_scan_costs;
   dst->total_cost= src->total_cost;
 }
+
+
 /*
   Get selectivity of a ROR scan wrt ROR-intersection.
 
@@ -2479,7 +2485,7 @@
 
     where k_ij may be the same as any k_pq (i.e. keys may have common parts).
 
-    A full row is retrieved iff entire cond holds.
+    A full row is retrieved if entire condition holds.
 
     The recursive procedure for finding P(cond) is as follows:
 
@@ -2490,7 +2496,7 @@
     Here R may still contain condition(s) equivalent to k_11=c_11.
     Nevertheless, the following holds:
 
-      P(k_11=c_11 AND R) = P(k_11=c_11) * P(R|k_11=c_11).
+      P(k_11=c_11 AND R) = P(k_11=c_11) * P(R | k_11=c_11).
 
     Mark k_11 as fixed field (and satisfied condition) F, save P(F),
     save R to be cond and proceed to recursion step.
@@ -2537,7 +2543,7 @@
     ( this is result of application of option b) of the recursion step for
       parts of a single key).
     Since it is reasonable to expect that most of the fields are not marked
-    as fixed, we calcualate (3) as
+    as fixed, we calculate (3) as
 
                                   n_{i1}      n_{i_2}
     (3) = n_{max_key_part}  / (   --------- * ---------  * ....  )
@@ -2571,33 +2577,32 @@
   max_range.key= (byte*) key_val;
   max_range.flag= HA_READ_AFTER_KEY;
   ha_rows prev_records= info->param->table->file->records;
-  int i;
   DBUG_ENTER("ror_intersect_selectivity");
-  for(i= 0, sel_arg= scan->sel_arg; sel_arg;
-      i++, sel_arg= sel_arg->next_key_part)
+
+  for (sel_arg= scan->sel_arg; sel_arg;
+       sel_arg= sel_arg->next_key_part)
   {
     DBUG_PRINT("info",("sel_arg step"));
     cur_covered= test(bitmap_is_set(&info->covered_fields,
-                                    (key_part + i)->fieldnr));
+                                    key_part[sel_arg->part].fieldnr));
     if (cur_covered != prev_covered)
     {
       /* create (part1val, ..., part{n-1}val) tuple. */
+      ha_rows records;
+      if (!tuple_arg)
       {
-        if (!tuple_arg)
-        {
-          tuple_arg= scan->sel_arg;
-          tuple_arg->store_min(key_part->length, &key_ptr, 0);
-        }
-        while (tuple_arg->next_key_part != sel_arg)
-        {
-          tuple_arg= tuple_arg->next_key_part;
-          tuple_arg->store_min(key_part->length, &key_ptr, 0);
-        }
+        tuple_arg= scan->sel_arg;
+        /* Here we use the length of the first key part */
+        tuple_arg->store_min(key_part->length, &key_ptr, 0);
+      }
+      while (tuple_arg->next_key_part != sel_arg)
+      {
+        tuple_arg= tuple_arg->next_key_part;
+        tuple_arg->store_min(key_part[tuple_arg->part].length, &key_ptr, 0);
       }
-      ha_rows records;
       min_range.length= max_range.length= ((char*) key_ptr - (char*) key_val);
-      records= info->param->table->file->
-                 records_in_range(scan->keynr, &min_range, &max_range);
+      records= (info->param->table->file->
+                records_in_range(scan->keynr, &min_range, &max_range));
       if (cur_covered)
       {
         /* uncovered -> covered */
@@ -2625,6 +2630,7 @@
   DBUG_RETURN(selectivity_mult);
 }
 
+
 /*
   Check if adding a ROR scan to a ROR-intersection reduces its cost of
   ROR-intersection and if yes, update parameters of ROR-intersection,
@@ -2662,7 +2668,7 @@
 */
 
 static bool ror_intersect_add(ROR_INTERSECT_INFO *info,
-                       ROR_SCAN_INFO* ror_scan, bool is_cpk_scan)
+                              ROR_SCAN_INFO* ror_scan, bool is_cpk_scan)
 {
   double selectivity_mult= 1.0;
 
@@ -3218,11 +3224,11 @@
 
   quick_imerge->records= records;
   quick_imerge->read_time= read_cost;
-  for(TRP_RANGE **range_scan= range_scans; range_scan != range_scans_end;
-      range_scan++)
+  for (TRP_RANGE **range_scan= range_scans; range_scan != range_scans_end;
+       range_scan++)
   {
     if (!(quick= (QUICK_RANGE_SELECT*)
-           ((*range_scan)->make_quick(param, FALSE, &quick_imerge->alloc)))||
+          ((*range_scan)->make_quick(param, FALSE, &quick_imerge->alloc)))||
         quick_imerge->push_quick_back(quick))
     {
       delete quick;
@@ -3251,7 +3257,7 @@
                                              "creating ROR-intersect",
                                              first_scan, last_scan););
     alloc= parent_alloc? parent_alloc: &quick_intrsect->alloc;
-    for(; first_scan != last_scan;++first_scan)
+    for (; first_scan != last_scan;++first_scan)
     {
       if (!(quick= get_quick_select(param, (*first_scan)->idx,
                                     (*first_scan)->sel_arg, alloc)) ||
@@ -3293,7 +3299,7 @@
   */
   if ((quick_roru= new QUICK_ROR_UNION_SELECT(param->thd, param->table)))
   {
-    for(scan= first_ror; scan != last_ror; scan++)
+    for (scan= first_ror; scan != last_ror; scan++)
     {
       if (!(quick= (*scan)->make_quick(param, FALSE, &quick_roru->alloc)) ||
           quick_roru->push_quick_back(quick))
@@ -4196,7 +4202,7 @@
     clone_flag=swap_clone_flag(clone_flag);
   }
 
-  // If one of the key is MAYBE_KEY then the found region may be smaller
+  /* If one of the key is MAYBE_KEY then the found region may be smaller */
   if (key2->type == SEL_ARG::MAYBE_KEY)
   {
     if (key1->use_count > 1)
@@ -5329,8 +5335,8 @@
   KEY_PART_INFO *pk_part= param->table->key_info[pk_number].key_part;
   KEY_PART_INFO *pk_part_end= pk_part +
                               param->table->key_info[pk_number].key_parts;
-  for(;(key_part!=key_part_end) && (pk_part != pk_part_end);
-      ++key_part, ++pk_part)
+  for (;(key_part!=key_part_end) && (pk_part != pk_part_end);
+       ++key_part, ++pk_part)
   {
     if ((key_part->field != pk_part->field) ||
         (key_part->length != pk_part->length))
@@ -7323,8 +7329,8 @@
     
   DESCRIPTION
     Test conditions (NGA1, NGA2) from get_best_group_min_max(). Namely,
-    for each keypart field NGF_i not in GROUP-BY, check that there is a constant
-    equality predicate among conds with the form (NGF_i = const_ci) or
+    for each keypart field NGF_i not in GROUP-BY, check that there is a
+    constant equality predicate among conds with the form (NGF_i = const_ci) or
     (const_ci = NGF_i).
     Thus all the NGF_i attributes must fill the 'gap' between the last group-by
     attribute and the MIN/MAX attribute in the index (if present). If these
@@ -8689,7 +8695,7 @@
   char buff[1024];
   String tmp(buff,sizeof(buff),&my_charset_bin);
   tmp.length(0);
-  for(;start != end; start++)
+  for (;start != end; start++)
   {
     if (tmp.length())
       tmp.append(',');

--- 1.247/sql/sql_base.cc	2005-05-30 19:56:07 +03:00
+++ 1.248/sql/sql_base.cc	2005-06-01 16:35:04 +03:00
@@ -753,7 +753,7 @@
   t_name= table->table_name;
 
   DBUG_PRINT("info", ("real table: %s.%s", d_name, t_name));
-  for(;;)
+  for (;;)
   {
     if (!(res= find_table_in_global_list(table_list, d_name, t_name)) ||
         (!res->table || res->table != table->table) &&

--- 1.154/sql/sql_insert.cc	2005-05-30 19:56:07 +03:00
+++ 1.155/sql/sql_insert.cc	2005-06-01 16:35:04 +03:00
@@ -128,7 +128,7 @@
       /* it is join view => we need to find table for update */
       List_iterator_fast<Item> it(fields);
       Item *item;
-      TABLE_LIST *tbl= 0;
+      TABLE_LIST *tbl= 0;            // reset for call to check_single_table()
       table_map map= 0;
 
       while ((item= it++))
@@ -1012,6 +1012,7 @@
 
 err:
   info->last_errno= error;
+  thd->lex->current_select->no_error= 0;        // Give error
   table->file->print_error(error,MYF(0));
 
 before_trg_err:

--- 1.329/sql/sql_select.cc	2005-05-30 19:56:08 +03:00
+++ 1.330/sql/sql_select.cc	2005-06-01 16:35:04 +03:00
@@ -13520,7 +13520,7 @@
   (*table)->print(thd, str);
 
   TABLE_LIST **end= table + tables->elements;
-  for(TABLE_LIST **tbl= table + 1; tbl < end; tbl++)
+  for (TABLE_LIST **tbl= table + 1; tbl < end; tbl++)
   {
     TABLE_LIST *curr= *tbl;
     if (curr->outer_join)

--- 1.248/sql/sql_show.cc	2005-05-31 11:15:18 +03:00
+++ 1.249/sql/sql_show.cc	2005-06-01 16:35:04 +03:00
@@ -1265,7 +1265,7 @@
                                                  name_buffer, wild)))
       {
         char *value=variables->value;
-        const char *pos, *end;
+        const char *pos, *end;                  // We assign a lot of const's
         long nr;
         if (show_type == SHOW_SYS)
         {
@@ -1336,8 +1336,8 @@
         case SHOW_SLAVE_RETRIED_TRANS:
         {
           /*
-            TODO: in 5.1 with multimaster, have one such counter per line in SHOW
-            SLAVE STATUS, and have the sum over all lines here.
+            TODO: in 5.1 with multimaster, have one such counter per line in
+            SHOW SLAVE STATUS, and have the sum over all lines here.
           */
 	  pthread_mutex_lock(&LOCK_active_mi);
           pthread_mutex_lock(&active_mi->rli.data_lock);
@@ -1359,7 +1359,11 @@
           }
           else
           {
-            for (int i= 1; i < MAX_SLAVE_ERROR; i++)
+            /* 10 is enough assuming errors are max 4 digits */
+            int i;
+            for (i= 1;
+                 i < MAX_SLAVE_ERROR && (uint) (end-buff) < sizeof(buff)-10;
+                 i++)
             {
               if (bitmap_is_set(bitmap, i))
               {
@@ -1369,6 +1373,8 @@
             }
             if (end != buff)
               end--;				// Remove last ','
+            if (i < MAX_SLAVE_ERROR)
+              end= strmov((char*) end, "...");  // Couldn't show all errors
           }
           break;
         }

--- 1.159/sql/sql_update.cc	2005-05-30 19:54:31 +03:00
+++ 1.160/sql/sql_update.cc	2005-06-01 16:35:04 +03:00
@@ -710,7 +710,7 @@
         tl->table->reginfo.lock_type= tl->lock_type;
     }
   }
-  for(tl= table_list; tl; tl= tl->next_local)
+  for (tl= table_list; tl; tl= tl->next_local)
   {
     /* Check access privileges for table */
     if (!tl->derived)

--- 1.167/sql/table.cc	2005-05-31 13:06:09 +03:00
+++ 1.168/sql/table.cc	2005-06-01 16:35:04 +03:00
@@ -2164,16 +2164,12 @@
       {
 	if (*table)
 	  return TRUE;
-	else
-        {
-	  *table= tbl;
-          tbl->check_option= view->check_option;
-        }
+        *table= tbl;
+        tbl->check_option= view->check_option;
       }
     }
-    else
-      if (tbl->check_single_table(table, map, view))
-	return TRUE;
+    else if (tbl->check_single_table(table, map, view))
+      return TRUE;
   }
   return FALSE;
 }

--- 1.99/sql/table.h	2005-05-25 18:33:32 +03:00
+++ 1.100/sql/table.h	2005-06-01 16:35:04 +03:00
@@ -436,10 +436,7 @@
   bool		skip_temporary;		/* this table shouldn't be temporary */
   /* TRUE if this merged view contain auto_increment field */
   bool          contain_auto_increment;
-#if 0
-#else
   bool          multitable_view;        /* TRUE iff this is multitable view */
-#endif
   /* FRMTYPE_ERROR if any type is acceptable */
   enum frm_type_enum required_type;
   char		timestamp_buffer[20];	/* buffer for timestamp (19+1) */

--- 1.104/sql/item_subselect.cc	2005-05-31 15:22:43 +03:00
+++ 1.105/sql/item_subselect.cc	2005-06-01 16:35:02 +03:00
@@ -1646,7 +1646,7 @@
 table_map subselect_engine::calc_const_tables(TABLE_LIST *table)
 {
   table_map map= 0;
-  for(; table; table= table->next_leaf)
+  for (; table; table= table->next_leaf)
   {
     TABLE *tbl= table->table;
     if (tbl && tbl->const_table)

--- 1.11/sql/parse_file.cc	2004-11-13 19:35:41 +02:00
+++ 1.12/sql/parse_file.cc	2005-06-01 16:35:03 +03:00
@@ -475,7 +475,7 @@
 {
   char *write_pos= str->str;
 
-  for(; ptr < eol; ptr++, write_pos++)
+  for (; ptr < eol; ptr++, write_pos++)
   {
     char c= *ptr;
     if (c == '\\')
@@ -635,7 +635,7 @@
       File_option *parameter= parameters+first_param,
 	*parameters_end= parameters+required;
       int len= 0;
-      for(; parameter < parameters_end; parameter++)
+      for (; parameter < parameters_end; parameter++)
       {
 	len= parameter->name.length;
 	// check length

--- 1.53/mysql-test/r/information_schema.result	2005-05-31 11:15:18 +03:00
+++ 1.54/mysql-test/r/information_schema.result	2005-06-01 16:35:01 +03:00
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS t0,t1,t2;
 show variables where variable_name like "skip_show_database";
 Variable_name	Value
 skip_show_database	OFF

--- 1.36/mysql-test/t/information_schema.test	2005-05-09 20:21:39 +03:00
+++ 1.37/mysql-test/t/information_schema.test	2005-06-01 16:35:01 +03:00
@@ -4,6 +4,11 @@
 # Test for information_schema.schemata &
 # show databases
 
+--disable_warnings
+DROP TABLE IF EXISTS t0,t1,t2;
+--enable_warnings
+
+
 show variables where variable_name like "skip_show_database";
 grant select, update, execute on test.* to mysqltest_2@localhost;
 grant select, update on test.* to mysqltest_1@localhost;

--- 1.179/sql/ha_ndbcluster.cc	2005-05-26 20:54:24 +03:00
+++ 1.180/sql/ha_ndbcluster.cc	2005-06-01 16:35:01 +03:00
@@ -5590,8 +5590,8 @@
   const NDBINDEX *idx= (NDBINDEX *) m_index[active_index].index; 
   const NdbOperation* lastOp= m_active_trans->getLastDefinedOperation();
   NdbIndexScanOperation* scanOp= 0;
-  for(; multi_range_curr<multi_range_end && curr+reclength <= end_of_buffer; 
-      multi_range_curr++)
+  for (; multi_range_curr<multi_range_end && curr+reclength <= end_of_buffer; 
+       multi_range_curr++)
   {
     switch(index_type){
     case PRIMARY_KEY_INDEX:
@@ -5728,7 +5728,7 @@
   int range_no;
   ulong reclength= table->s->reclength;
   const NdbOperation* op= m_current_multi_operation;
-  for(;multi_range_curr < m_multi_range_defined; multi_range_curr++)
+  for (;multi_range_curr < m_multi_range_defined; multi_range_curr++)
   {
     if (multi_range_curr->range_flag & UNIQUE_RANGE)
     {

--- 1.22/sql/uniques.cc	2003-12-21 19:41:32 +02:00
+++ 1.23/sql/uniques.cc	2005-06-01 16:35:05 +03:00
@@ -178,7 +178,7 @@
     Set initial state: first maxbuffer sequences contain max_n_elems elements
     each, last sequence contains last_n_elems elements.
   */
-  for(i = 0; i < (int)maxbuffer; i++)
+  for (i = 0; i < (int)maxbuffer; i++)
     buff_elems[i]= max_n_elems;  
   buff_elems[maxbuffer]= last_n_elems;
 

--- 1.7/sql/sql_bitmap.h	2005-05-05 10:11:39 +03:00
+++ 1.8/sql/sql_bitmap.h	2005-06-01 16:35:04 +03:00
@@ -82,7 +82,7 @@
     if (sizeof(buffer) >= 8)
       return uint8korr(buffer);
     DBUG_ASSERT(sizeof(buffer) >= 4);
-    uint4korr(buffer);
+    return (ulonglong) uint4korr(buffer);
   }
 };
 

--- 1.50/strings/decimal.c	2005-05-10 09:25:22 +03:00
+++ 1.51/strings/decimal.c	2005-06-01 16:35:05 +03:00
@@ -1549,15 +1549,19 @@
   }
   else
   {
-    while (unlikely(*buf1 == 0) && buf1 >= to->buf)
-      buf1--;
-    if (buf1 < to->buf)
+    for (;;)
     {
-      decimal_make_zero(to);
-      return E_DEC_OK;
+      if (likely(*buf1))
+        break;
+      if (buf1-- == to->buf)
+      {
+        decimal_make_zero(to);
+        return E_DEC_OK;
+      }
     }
   }
-  if (scale<0) scale=0;
+  if (scale<0)
+    scale=0;
 
 done:
   to->frac=scale;
@@ -1727,11 +1731,14 @@
     while (buf1 <=end1 && buf2 <= end2 && *buf1 == *buf2)
       buf1++, buf2++;
     if (buf1 <= end1)
+    {
       if (buf2 <= end2)
         carry= *buf2 > *buf1;
       else
         carry= 0;
+    }
     else
+    {
       if (buf2 <= end2)
         carry=1;
       else /* short-circuit everything: from1 == from2 */
@@ -1741,6 +1748,7 @@
         decimal_make_zero(to);
         return E_DEC_OK;
       }
+    }
   }
 
   if (to == 0) /* decimal_cmp() */
@@ -1937,10 +1945,18 @@
   {
     dec1 *buf= to->buf;
     dec1 *end= to->buf + intg0 + frac0;
-    for (; (buf<end) && !*buf; buf++);
-    if (buf == end)
-      /* So we got decimal zero */
-      decimal_make_zero(to);
+    DBUG_ASSERT(buf != end);
+    for (;;)
+    {
+      if (*buf)
+        break;
+      if (++buf == end)
+      {
+        /* We got decimal zero */
+        decimal_make_zero(to);
+        break;
+      }
+    }
   }
   return error;
 }
Thread
bk commit into 5.0 tree (monty:1.1940)monty1 Jun