Loading sql/item.cc +2 −0 Original line number Diff line number Diff line Loading @@ -1765,6 +1765,8 @@ void Item_field::set_field(Field *field_par) unsigned_flag=test(field_par->flags & UNSIGNED_FLAG); collation.set(field_par->charset(), field_par->derivation()); fixed= 1; if (field->table->s->tmp_table == SYSTEM_TMP_TABLE) any_privileges= 0; } Loading sql/sql_select.cc +8 −11 Original line number Diff line number Diff line Loading @@ -9155,7 +9155,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, bool using_unique_constraint= 0; bool use_packed_rows= 0; bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS); char *tmpname, *tmppath, path[FN_REFLEN], table_name[NAME_LEN+1]; char *tmpname,path[FN_REFLEN]; byte *pos,*group_buff; uchar *null_flags; Field **reg_field, **from_field, **default_field; Loading @@ -9178,12 +9178,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, temp_pool_slot = bitmap_set_next(&temp_pool); if (temp_pool_slot != MY_BIT_NONE) // we got a slot sprintf(table_name, "%s_%lx_%i", tmp_file_prefix, sprintf(path, "%s_%lx_%i", tmp_file_prefix, current_pid, temp_pool_slot); else { /* if we run out of slots or we are not using tempool */ sprintf(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++); } Loading @@ -9191,8 +9191,8 @@ 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 MyISAM or HEAP tables here */ fn_format(path, table_name, mysql_tmpdir, "", MY_REPLACE_EXT|MY_UNPACK_FILENAME); fn_format(path, path, mysql_tmpdir, "", MY_REPLACE_EXT|MY_UNPACK_FILENAME); if (group) { Loading Loading @@ -9237,8 +9237,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, sizeof(*key_part_info)*(param->group_parts+1), ¶m->start_recinfo, sizeof(*param->recinfo)*(field_count*2+4), &tmppath, (uint) strlen(path)+1, &tmpname, (uint) strlen(table_name)+1, &tmpname, (uint) strlen(path)+1, &group_buff, group && ! using_unique_constraint ? param->group_length : 0, NullS)) Loading @@ -9256,8 +9255,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, DBUG_RETURN(NULL); /* purecov: inspected */ } param->items_to_copy= copy_func; strmov(tmppath, path); strmov(tmpname, table_name); strmov(tmpname,path); /* make table according to fields */ bzero((char*) table,sizeof(*table)); Loading @@ -9283,8 +9281,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, table->s= &table->share_not_to_be_used; table->s->blob_field= blob_field; table->s->table_name= tmpname; table->s->path= tmppath; table->s->table_name= table->s->path= tmpname; table->s->db= ""; table->s->blob_ptr_size= mi_portable_sizeof_char_ptr; table->s->tmp_table= NON_TRANSACTIONAL_TMP_TABLE; Loading sql/sql_view.cc +6 −0 Original line number Diff line number Diff line Loading @@ -397,9 +397,15 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views, { Item_field *field; if ((field= item->filed_for_view_update())) { /* any_privileges may be reset later by the Item_field::set_field method in case of a system temporary table. */ field->any_privileges= 1; } } } #endif if (open_and_lock_tables(thd, tables)) Loading Loading
sql/item.cc +2 −0 Original line number Diff line number Diff line Loading @@ -1765,6 +1765,8 @@ void Item_field::set_field(Field *field_par) unsigned_flag=test(field_par->flags & UNSIGNED_FLAG); collation.set(field_par->charset(), field_par->derivation()); fixed= 1; if (field->table->s->tmp_table == SYSTEM_TMP_TABLE) any_privileges= 0; } Loading
sql/sql_select.cc +8 −11 Original line number Diff line number Diff line Loading @@ -9155,7 +9155,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, bool using_unique_constraint= 0; bool use_packed_rows= 0; bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS); char *tmpname, *tmppath, path[FN_REFLEN], table_name[NAME_LEN+1]; char *tmpname,path[FN_REFLEN]; byte *pos,*group_buff; uchar *null_flags; Field **reg_field, **from_field, **default_field; Loading @@ -9178,12 +9178,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, temp_pool_slot = bitmap_set_next(&temp_pool); if (temp_pool_slot != MY_BIT_NONE) // we got a slot sprintf(table_name, "%s_%lx_%i", tmp_file_prefix, sprintf(path, "%s_%lx_%i", tmp_file_prefix, current_pid, temp_pool_slot); else { /* if we run out of slots or we are not using tempool */ sprintf(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++); } Loading @@ -9191,8 +9191,8 @@ 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 MyISAM or HEAP tables here */ fn_format(path, table_name, mysql_tmpdir, "", MY_REPLACE_EXT|MY_UNPACK_FILENAME); fn_format(path, path, mysql_tmpdir, "", MY_REPLACE_EXT|MY_UNPACK_FILENAME); if (group) { Loading Loading @@ -9237,8 +9237,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, sizeof(*key_part_info)*(param->group_parts+1), ¶m->start_recinfo, sizeof(*param->recinfo)*(field_count*2+4), &tmppath, (uint) strlen(path)+1, &tmpname, (uint) strlen(table_name)+1, &tmpname, (uint) strlen(path)+1, &group_buff, group && ! using_unique_constraint ? param->group_length : 0, NullS)) Loading @@ -9256,8 +9255,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, DBUG_RETURN(NULL); /* purecov: inspected */ } param->items_to_copy= copy_func; strmov(tmppath, path); strmov(tmpname, table_name); strmov(tmpname,path); /* make table according to fields */ bzero((char*) table,sizeof(*table)); Loading @@ -9283,8 +9281,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, table->s= &table->share_not_to_be_used; table->s->blob_field= blob_field; table->s->table_name= tmpname; table->s->path= tmppath; table->s->table_name= table->s->path= tmpname; table->s->db= ""; table->s->blob_ptr_size= mi_portable_sizeof_char_ptr; table->s->tmp_table= NON_TRANSACTIONAL_TMP_TABLE; Loading
sql/sql_view.cc +6 −0 Original line number Diff line number Diff line Loading @@ -397,9 +397,15 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views, { Item_field *field; if ((field= item->filed_for_view_update())) { /* any_privileges may be reset later by the Item_field::set_field method in case of a system temporary table. */ field->any_privileges= 1; } } } #endif if (open_and_lock_tables(thd, tables)) Loading