Commit e10d3ed1 authored by nick@mysql.com's avatar nick@mysql.com
Browse files

moved RAND initialization from mysqld.cc to sql_class.cc:THD::THD()

parent 60e1175e
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ extern int init_master_info(MASTER_INFO* mi);
// and are treated as aliases for each other

static bool kill_in_progress=FALSE;
static struct rand_struct sql_rand;
struct rand_struct sql_rand; // used by sql_class.cc:THD::THD()
static int cleanup_done;
static char **defaults_argv,time_zone[30];
static const char *default_table_type_name;
@@ -2257,15 +2257,7 @@ static void create_new_thread(THD *thd)
  for (uint i=0; i < 8 ; i++)			// Generate password teststring
    thd->scramble[i]= (char) (rnd(&sql_rand)*94+33);
  thd->scramble[8]=0;
  /* 
     We need good random number initialization for new thread
     Just coping global one will not work 
  */
  {
    ulong tmp=(ulong) (rnd(&sql_rand) * 3000000);
    randominit(&(thd->rand), tmp + (ulong) start_time,
	       tmp + (ulong) thread_id);
  }

  thd->real_id=pthread_self();			// Keep purify happy

  /* Start a new thread to handle connection */
+14 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@
#include <io.h>
#endif

extern struct rand_struct sql_rand;

/*****************************************************************************
** Instansiate templates
*****************************************************************************/
@@ -147,6 +149,18 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0),
    transaction.trans_log.end_of_file= max_binlog_cache_size;
  }
#endif

  /* 
     We need good random number initialization for new thread
     Just coping global one will not work 
  */
  {
    pthread_mutex_lock(&LOCK_thread_count);
    ulong tmp=(ulong) (rnd(&sql_rand) * 3000000);
    randominit(&rand, tmp + (ulong) start_time,
	       tmp + (ulong) thread_id);
    pthread_mutex_unlock(&LOCK_thread_count);
  }
}

/* Do operations that may take a long time */