MDEV-33148 A connection can control RAND() in following connection
initialize THD::rand in THD::init() not in THD::THD(), because the former is also called when a THD is reused - in COM_CHANGE_USER and in taking a THD from the cache. Also use current cycle timer for more unpreditability
This commit is contained in:
parent
9322ef03e3
commit
c6e1ffd1a0
@ -684,7 +684,6 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
|
||||
wsrep_wfc()
|
||||
#endif /*WITH_WSREP */
|
||||
{
|
||||
ulong tmp;
|
||||
bzero(&variables, sizeof(variables));
|
||||
|
||||
/*
|
||||
@ -834,14 +833,6 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
|
||||
|
||||
tablespace_op=FALSE;
|
||||
|
||||
/*
|
||||
Initialize the random generator. We call my_rnd() without a lock as
|
||||
it's not really critical if two threads modifies the structure at the
|
||||
same time. We ensure that we have an unique number foreach thread
|
||||
by adding the address of the stack.
|
||||
*/
|
||||
tmp= (ulong) (my_rnd(&sql_rand) * 0xffffffff);
|
||||
my_rnd_init(&rand, tmp + (ulong)((size_t) &rand), tmp + (ulong) ::global_query_id);
|
||||
substitute_null_with_insert_id = FALSE;
|
||||
lock_info.mysql_thd= (void *)this;
|
||||
|
||||
@ -1297,6 +1288,17 @@ void THD::init()
|
||||
/* Set to handle counting of aborted connections */
|
||||
userstat_running= opt_userstat_running;
|
||||
last_global_update_time= current_connect_time= time(NULL);
|
||||
|
||||
/*
|
||||
Initialize the random generator. We call my_rnd() without a lock as
|
||||
it's not really critical if two threads modify the structure at the
|
||||
same time. We ensure that we have a unique number for each thread
|
||||
by adding the address of this THD.
|
||||
*/
|
||||
ulong tmp= (ulong) (my_rnd(&sql_rand) * 0xffffffff);
|
||||
my_rnd_init(&rand, tmp + (ulong)(intptr) this,
|
||||
(ulong)(my_timer_cycles() + global_query_id));
|
||||
|
||||
#if defined(ENABLED_DEBUG_SYNC)
|
||||
/* Initialize the Debug Sync Facility. See debug_sync.cc. */
|
||||
debug_sync_init_thread(this);
|
||||
|
Loading…
x
Reference in New Issue
Block a user