Commit 541469f7 authored by Sergei Golubchik's avatar Sergei Golubchik

bugfix: create internal temporary tables in mysql_tmpdir, not in datadir

parent 3d4ff9a2
...@@ -10092,7 +10092,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -10092,7 +10092,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
bool using_unique_constraint= 0; bool using_unique_constraint= 0;
bool use_packed_rows= 0; bool use_packed_rows= 0;
bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS); bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS);
char *tmpname,path[FN_REFLEN], tmp_table_name[50]; char *tmpname,path[FN_REFLEN];
uchar *pos, *group_buff, *bitmaps; uchar *pos, *group_buff, *bitmaps;
uchar *null_flags; uchar *null_flags;
Field **reg_field, **from_field, **default_field; Field **reg_field, **from_field, **default_field;
...@@ -10123,12 +10123,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -10123,12 +10123,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
temp_pool_slot = bitmap_lock_set_next(&temp_pool); temp_pool_slot = bitmap_lock_set_next(&temp_pool);
if (temp_pool_slot != MY_BIT_NONE) // we got a slot if (temp_pool_slot != MY_BIT_NONE) // we got a slot
sprintf(tmp_table_name, "%s_%lx_%i", tmp_file_prefix, sprintf(path, "%s_%lx_%i", tmp_file_prefix,
current_pid, temp_pool_slot); current_pid, temp_pool_slot);
else else
{ {
/* if we run out of slots or we are not using tempool */ /* if we run out of slots or we are not using tempool */
sprintf(tmp_table_name, "%s%lx_%lx_%x", tmp_file_prefix,current_pid, sprintf(path, "%s%lx_%lx_%x", tmp_file_prefix,current_pid,
thd->thread_id, thd->tmp_table++); thd->thread_id, thd->tmp_table++);
} }
...@@ -10136,7 +10136,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -10136,7 +10136,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
No need to change table name to lower case as we are only creating No need to change table name to lower case as we are only creating
MyISAM, Maria or HEAP tables here MyISAM, Maria or HEAP tables here
*/ */
fn_format(path, tmp_table_name, mysql_tmpdir, "", fn_format(path, path, mysql_tmpdir, "",
MY_REPLACE_EXT|MY_UNPACK_FILENAME); MY_REPLACE_EXT|MY_UNPACK_FILENAME);
if (group) if (group)
...@@ -10183,7 +10183,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -10183,7 +10183,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
sizeof(*key_part_info)*(param->group_parts+1), sizeof(*key_part_info)*(param->group_parts+1),
&param->start_recinfo, &param->start_recinfo,
sizeof(*param->recinfo)*(field_count*2+4), sizeof(*param->recinfo)*(field_count*2+4),
&tmpname, (uint) strlen(tmp_table_name)+1, &tmpname, (uint) strlen(path)+1,
&group_buff, (group && ! using_unique_constraint ? &group_buff, (group && ! using_unique_constraint ?
param->group_length : 0), param->group_length : 0),
&bitmaps, bitmap_buffer_size(field_count)*2, &bitmaps, bitmap_buffer_size(field_count)*2,
...@@ -10202,7 +10202,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -10202,7 +10202,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
DBUG_RETURN(NULL); /* purecov: inspected */ DBUG_RETURN(NULL); /* purecov: inspected */
} }
param->items_to_copy= copy_func; param->items_to_copy= copy_func;
strmov(tmpname, tmp_table_name); strmov(tmpname, path);
/* make table according to fields */ /* make table according to fields */
bzero((char*) table,sizeof(*table)); bzero((char*) table,sizeof(*table));
......
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