automerge
This commit is contained in:
commit
760efb5188
@ -7375,7 +7375,13 @@ int setup_wild(THD *thd, TABLE_LIST *tables, List<Item> &fields,
|
|||||||
/* make * substituting permanent */
|
/* make * substituting permanent */
|
||||||
SELECT_LEX *select_lex= thd->lex->current_select;
|
SELECT_LEX *select_lex= thd->lex->current_select;
|
||||||
select_lex->with_wild= 0;
|
select_lex->with_wild= 0;
|
||||||
select_lex->item_list= fields;
|
/*
|
||||||
|
The assignment below is translated to memcpy() call (at least on some
|
||||||
|
platforms). memcpy() expects that source and destination areas do not
|
||||||
|
overlap. That problem was detected by valgrind.
|
||||||
|
*/
|
||||||
|
if (&select_lex->item_list != &fields)
|
||||||
|
select_lex->item_list= fields;
|
||||||
|
|
||||||
thd->restore_active_arena(arena, &backup);
|
thd->restore_active_arena(arena, &backup);
|
||||||
}
|
}
|
||||||
|
@ -1807,7 +1807,8 @@ JOIN::exec()
|
|||||||
curr_join->having= curr_join->tmp_having= 0; // Allready done
|
curr_join->having= curr_join->tmp_having= 0; // Allready done
|
||||||
|
|
||||||
/* Change sum_fields reference to calculated fields in tmp_table */
|
/* Change sum_fields reference to calculated fields in tmp_table */
|
||||||
curr_join->all_fields= *curr_all_fields;
|
if (curr_join != this)
|
||||||
|
curr_join->all_fields= *curr_all_fields;
|
||||||
if (!items1)
|
if (!items1)
|
||||||
{
|
{
|
||||||
items1= items0 + all_fields.elements;
|
items1= items0 + all_fields.elements;
|
||||||
@ -1826,8 +1827,11 @@ JOIN::exec()
|
|||||||
fields_list.elements, all_fields))
|
fields_list.elements, all_fields))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
curr_join->tmp_all_fields1= tmp_all_fields1;
|
if (curr_join != this)
|
||||||
curr_join->tmp_fields_list1= tmp_fields_list1;
|
{
|
||||||
|
curr_join->tmp_all_fields1= tmp_all_fields1;
|
||||||
|
curr_join->tmp_fields_list1= tmp_fields_list1;
|
||||||
|
}
|
||||||
curr_join->items1= items1;
|
curr_join->items1= items1;
|
||||||
}
|
}
|
||||||
curr_all_fields= &tmp_all_fields1;
|
curr_all_fields= &tmp_all_fields1;
|
||||||
@ -1975,8 +1979,11 @@ JOIN::exec()
|
|||||||
tmp_fields_list2, tmp_all_fields2,
|
tmp_fields_list2, tmp_all_fields2,
|
||||||
fields_list.elements, tmp_all_fields1))
|
fields_list.elements, tmp_all_fields1))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
curr_join->tmp_fields_list2= tmp_fields_list2;
|
if (curr_join != this)
|
||||||
curr_join->tmp_all_fields2= tmp_all_fields2;
|
{
|
||||||
|
curr_join->tmp_fields_list2= tmp_fields_list2;
|
||||||
|
curr_join->tmp_all_fields2= tmp_all_fields2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
curr_fields_list= &curr_join->tmp_fields_list2;
|
curr_fields_list= &curr_join->tmp_fields_list2;
|
||||||
curr_all_fields= &curr_join->tmp_all_fields2;
|
curr_all_fields= &curr_join->tmp_all_fields2;
|
||||||
@ -2031,8 +2038,11 @@ JOIN::exec()
|
|||||||
tmp_table_param.save_copy_field= curr_join->tmp_table_param.copy_field;
|
tmp_table_param.save_copy_field= curr_join->tmp_table_param.copy_field;
|
||||||
tmp_table_param.save_copy_field_end=
|
tmp_table_param.save_copy_field_end=
|
||||||
curr_join->tmp_table_param.copy_field_end;
|
curr_join->tmp_table_param.copy_field_end;
|
||||||
curr_join->tmp_all_fields3= tmp_all_fields3;
|
if (curr_join != this)
|
||||||
curr_join->tmp_fields_list3= tmp_fields_list3;
|
{
|
||||||
|
curr_join->tmp_all_fields3= tmp_all_fields3;
|
||||||
|
curr_join->tmp_fields_list3= tmp_fields_list3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -466,7 +466,8 @@ public:
|
|||||||
group_optimized_away= 0;
|
group_optimized_away= 0;
|
||||||
|
|
||||||
all_fields= fields_arg;
|
all_fields= fields_arg;
|
||||||
fields_list= fields_arg;
|
if (&fields_list != &fields_arg) /* Avoid valgrind-warning */
|
||||||
|
fields_list= fields_arg;
|
||||||
bzero((char*) &keyuse,sizeof(keyuse));
|
bzero((char*) &keyuse,sizeof(keyuse));
|
||||||
tmp_table_param.init();
|
tmp_table_param.init();
|
||||||
tmp_table_param.end_write_records= HA_POS_ERROR;
|
tmp_table_param.end_write_records= HA_POS_ERROR;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user