Commit 86768df7 authored by gshchepa/uchum@gleb.loc's avatar gshchepa/uchum@gleb.loc
Browse files

Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt

into  gleb.loc:/home/uchum/work/bk/5.0-opt
parents 4446fd4b c652d3df
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
}


+8 −11
Original line number Diff line number Diff line
@@ -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;
@@ -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++);
  }

@@ -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)
  {
@@ -9237,8 +9237,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
                        sizeof(*key_part_info)*(param->group_parts+1),
                        &param->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))
@@ -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));
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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))