List:Commits« Previous MessageNext Message »
From:monty Date:January 6 2006 7:42pm
Subject:bk commit into 4.0 tree (monty:1.2168) BUG#13855
View as plain text  
Below is the list of changes that have just been committed into a local
4.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.2168 06/01/06 21:42:17 monty@stripped +5 -0
  Fixes during review of new pushed code:
  Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
  Safety fix for bug #13855 "select distinct with group by caused server crash"

  sql/sql_select.cc
    1.295 06/01/06 21:42:13 monty@stripped +8 -1
    Safety fix for bug #13855 "select distinct with group by caused server crash"
    The previous patch only removed the symptomps, this fix removed the cause of the problem
    (Which was that not all hidden_fields was stored in the temporary table)

  sql/sql_handler.cc
    1.48 06/01/06 21:42:13 monty@stripped +12 -34
    Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash.
    It's better to let mysql_lock_tables reopen the TABLE object in case of OPTIMIZE TABLE and fix items AFTER mysql_lock_table() instead of before

  sql/item_cmpfunc.cc
    1.65 06/01/06 21:42:13 monty@stripped +1 -1
    Removed compiler warning

  myisam/myisam_ftdump.c
    1.25 06/01/06 21:42:13 monty@stripped +1 -1
    Fixed compiler warning

  client/mysqlimport.c
    1.39 06/01/06 21:42:13 monty@stripped +0 -1
    Remove not used variable

# 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.fi
# Root:	/home/my/mysql-4.0

--- 1.38/client/mysqlimport.c	2005-12-04 15:02:03 +02:00
+++ 1.39/client/mysqlimport.c	2006-01-06 21:42:13 +02:00
@@ -252,7 +252,6 @@
 {
   char tablename[FN_REFLEN], hard_path[FN_REFLEN],
        sql_statement[FN_REFLEN*16+256], *end;
-  my_bool local_file;
   DBUG_ENTER("write_to_table");
   DBUG_PRINT("enter",("filename: %s",filename));
 

--- 1.64/sql/item_cmpfunc.cc	2004-11-26 02:31:20 +02:00
+++ 1.65/sql/item_cmpfunc.cc	2006-01-06 21:42:13 +02:00
@@ -659,7 +659,7 @@
 Item_func_nullif::is_null()
 {
   if (!(this->*cmp_func)())
-    return null_value=1;
+    return (null_value= 1);
   return 0;
 }
 

--- 1.294/sql/sql_select.cc	2005-11-07 13:16:47 +02:00
+++ 1.295/sql/sql_select.cc	2006-01-06 21:42:13 +02:00
@@ -4082,7 +4082,14 @@
       *(reg_field++) =new_field;
     }
     if (!--hidden_field_count)
+    {
       hidden_null_count=null_count;
+      /*
+        We need to update hidden_field_count as we may have stored group
+        functions with constant arguments
+      */
+      param->hidden_field_count= (uint) (reg_field - table->field);
+    }
   }
   DBUG_ASSERT(field_count >= (uint) (reg_field - table->field));
   field_count= (uint) (reg_field - table->field);
@@ -4270,7 +4277,7 @@
     }
   }
 
-  if (distinct)
+  if (distinct && field_count != param->hidden_field_count)
   {
     /*
       Create an unique key or an unique constraint over all columns

--- 1.24/myisam/myisam_ftdump.c	2004-08-31 19:27:56 +03:00
+++ 1.25/myisam/myisam_ftdump.c	2006-01-06 21:42:13 +02:00
@@ -66,7 +66,7 @@
   struct { MI_INFO *info; } aio0, *aio=&aio0; /* for GWS_IN_USE */
 
   MY_INIT(argv[0]);
-  if (error=handle_options(&argc, &argv, my_long_options, get_one_option))
+  if ((error= handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(error);
   if (count || dump)
     verbose=0;

--- 1.47/sql/sql_handler.cc	2005-11-03 19:24:00 +02:00
+++ 1.48/sql/sql_handler.cc	2006-01-06 21:42:13 +02:00
@@ -380,27 +380,6 @@
     DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p",
                                hash_tables->db, hash_tables->real_name,
                                hash_tables->alias, table));
-    /* Table might have been flushed. */
-    if (table && (table->version != refresh_version))
-    {
-      /*
-        We must follow the thd->handler_tables chain, as we need the
-        address of the 'next' pointer referencing this table
-        for close_thread_table().
-      */
-      for (table_ptr= &(thd->handler_tables);
-           *table_ptr && (*table_ptr != table);
-           table_ptr= &(*table_ptr)->next)
-      {}
-      VOID(pthread_mutex_lock(&LOCK_open));
-      if (close_thread_table(thd, table_ptr))
-      {
-        /* Tell threads waiting for refresh that something has happened */
-        VOID(pthread_cond_broadcast(&COND_refresh));
-      }
-      VOID(pthread_mutex_unlock(&LOCK_open));
-      table= hash_tables->table= NULL;
-    }
     if (!table)
     {
       /*
@@ -447,11 +426,16 @@
   }
   tables->table=table;
 
+  HANDLER_TABLES_HACK(thd);
+  lock= mysql_lock_tables(thd, &tables->table, 1, 0);
+  HANDLER_TABLES_HACK(thd);
+
+  if (!lock)
+    goto err0; // mysql_lock_tables() printed error message already
+
   if (cond && cond->fix_fields(thd,tables))
     goto err0;
 
-  table->file->init_table_handle_for_HANDLER(); // Only InnoDB requires it
-
   if (keyname)
   {
     if ((keyno=find_type(keyname, &table->keynames, 1+2)-1)<0)
@@ -462,23 +446,17 @@
     }
     table->file->index_init(keyno);
   }
+ 
+  byte *key;
+  uint key_len;
+  LINT_INIT(key); 
+  LINT_INIT(key_len); 
 
   if (insert_fields(thd,tables,tables->db,tables->alias,&it))
     goto err0;
 
   select_limit+=offset_limit;
   send_fields(thd,list,1);
-
-  HANDLER_TABLES_HACK(thd);
-  lock= mysql_lock_tables(thd, &tables->table, 1, 0);
-  HANDLER_TABLES_HACK(thd);
-  
-  byte *key;
-  uint key_len;
-  LINT_INIT(key); 
-  LINT_INIT(key_len); 
-  if (!lock)
-     goto err0; // mysql_lock_tables() printed error message already
 
   table->file->init_table_handle_for_HANDLER(); // Only InnoDB requires it
 
Thread
bk commit into 4.0 tree (monty:1.2168) BUG#13855monty6 Jan