mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
apply holyfoot's patch for BUG#25895
This commit is contained in:
parent
eadd2c4eef
commit
7ce0bd7a5e
1 changed files with 10 additions and 4 deletions
|
@ -3084,7 +3084,13 @@ public:
|
|||
int count;
|
||||
bool locked;
|
||||
pthread_cond_t cond;
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
pthread_t thread;
|
||||
void set_thread(THD *thd) { thread= thd->real_id; }
|
||||
#else
|
||||
THD *thread;
|
||||
void set_thread(THD *thd) { thread= thd; }
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
ulong thread_id;
|
||||
|
||||
User_level_lock(const char *key_arg,uint length, ulong id)
|
||||
|
@ -3238,7 +3244,7 @@ void debug_sync_point(const char* lock_name, uint lock_timeout)
|
|||
else
|
||||
{
|
||||
ull->locked=1;
|
||||
ull->thread=thd->real_id;
|
||||
ull->set_thread(thd);
|
||||
thd->ull=ull;
|
||||
}
|
||||
pthread_mutex_unlock(&LOCK_user_locks);
|
||||
|
@ -3313,7 +3319,7 @@ longlong Item_func_get_lock::val_int()
|
|||
null_value=1; // Probably out of memory
|
||||
return 0;
|
||||
}
|
||||
ull->thread=thd->real_id;
|
||||
ull->set_thread(thd);
|
||||
thd->ull=ull;
|
||||
pthread_mutex_unlock(&LOCK_user_locks);
|
||||
return 1; // Got new lock
|
||||
|
@ -3354,7 +3360,7 @@ longlong Item_func_get_lock::val_int()
|
|||
else // We got the lock
|
||||
{
|
||||
ull->locked=1;
|
||||
ull->thread=thd->real_id;
|
||||
ull->set_thread(thd);
|
||||
ull->thread_id= thd->thread_id;
|
||||
thd->ull=ull;
|
||||
error=0;
|
||||
|
@ -3403,7 +3409,7 @@ longlong Item_func_release_lock::val_int()
|
|||
else
|
||||
{
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
if (ull->locked && pthread_equal(current_thd->real_id,ull->thread))
|
||||
if (ull->locked && (current_thd == ull->thread))
|
||||
#else
|
||||
if (ull->locked && pthread_equal(pthread_self(),ull->thread))
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue