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#13855 | monty | 6 Jan |