Commit 427ce41c authored by monty@mysql.com's avatar monty@mysql.com

Fixed bug in last push found by valgrind

parent d47deebb
...@@ -137,6 +137,10 @@ void _mi_print_key(FILE *stream, register MI_KEYSEG *keyseg, ...@@ -137,6 +137,10 @@ void _mi_print_key(FILE *stream, register MI_KEYSEG *keyseg,
{ {
uint tmp_length; uint tmp_length;
get_key_length(tmp_length,key); get_key_length(tmp_length,key);
/*
The following command sometimes gives a warning from valgrind.
Not yet sure if the bug is in valgrind, glibc or mysqld
*/
VOID(fprintf(stream,"%.*s",(int) tmp_length,key)); VOID(fprintf(stream,"%.*s",(int) tmp_length,key));
key+=tmp_length; key+=tmp_length;
break; break;
......
...@@ -1062,7 +1062,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, ...@@ -1062,7 +1062,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part,
if (field->key_type() == HA_KEYTYPE_VARTEXT) if (field->key_type() == HA_KEYTYPE_VARTEXT)
copies= 2; copies= 2;
str= str2= (char*) alloc_root(param->mem_root, str= str2= (char*) alloc_root(param->mem_root,
(key_part->part_length+maybe_null)*copies); (key_part->part_length+maybe_null)*copies+1);
if (!str) if (!str)
DBUG_RETURN(0); DBUG_RETURN(0);
if (maybe_null) if (maybe_null)
...@@ -1078,16 +1078,15 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, ...@@ -1078,16 +1078,15 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part,
uint length= uint2korr(str+maybe_null); uint length= uint2korr(str+maybe_null);
char *end; char *end;
str2= str+ key_part->part_length + maybe_null; str2= str+ key_part->part_length + maybe_null;
/* remove end space. The 2 is for the packed length */ /* remove end space */
while (length > 0 && str[length+2+maybe_null-1] == ' ') while (length > 0 && str[length+HA_KEY_BLOB_LENGTH+maybe_null-1] == ' ')
length--; length--;
int2store(str+maybe_null, length); int2store(str+maybe_null, length);
/* Create key that is space filled */ /* Create key that is space filled */
memcpy(str2, str, length+2+maybe_null); memcpy(str2, str, length + HA_KEY_BLOB_LENGTH + maybe_null);
end= str2+ maybe_null + key_part->part_length; bfill(str2+ length+ HA_KEY_BLOB_LENGTH +maybe_null,
for (char *pos= str2+ 2+ length + maybe_null; pos < end ; pos++) key_part->part_length-length - HA_KEY_BLOB_LENGTH, ' ');
*pos++= ' '; int2store(str2+maybe_null, key_part->part_length - HA_KEY_BLOB_LENGTH);
int2store(str2+maybe_null, key_part->part_length);
} }
if (!(tree=new SEL_ARG(field,str,str2))) if (!(tree=new SEL_ARG(field,str,str2)))
DBUG_RETURN(0); // out of memory DBUG_RETURN(0); // out of memory
......
...@@ -440,7 +440,7 @@ multi_update::multi_update(THD *thd_arg, TABLE_LIST *table_list, ...@@ -440,7 +440,7 @@ multi_update::multi_update(THD *thd_arg, TABLE_LIST *table_list,
:all_tables(table_list), update_tables(0), thd(thd_arg), tmp_tables(0), :all_tables(table_list), update_tables(0), thd(thd_arg), tmp_tables(0),
updated(0), found(0), fields(field_list), values(value_list), updated(0), found(0), fields(field_list), values(value_list),
table_count(0), copy_field(0), handle_duplicates(handle_duplicates_arg), table_count(0), copy_field(0), handle_duplicates(handle_duplicates_arg),
do_update(1), trans_safe(0) do_update(1), trans_safe(0), transactional_tables(1)
{} {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment