Commit 7ce0bd7a authored by df@kahlann.erinye.com's avatar df@kahlann.erinye.com

apply holyfoot's patch for BUG#25895

parent eadd2c4e
...@@ -3084,7 +3084,13 @@ class User_level_lock ...@@ -3084,7 +3084,13 @@ class User_level_lock
int count; int count;
bool locked; bool locked;
pthread_cond_t cond; pthread_cond_t cond;
#ifndef EMBEDDED_LIBRARY
pthread_t thread; 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; ulong thread_id;
User_level_lock(const char *key_arg,uint length, ulong 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) ...@@ -3238,7 +3244,7 @@ void debug_sync_point(const char* lock_name, uint lock_timeout)
else else
{ {
ull->locked=1; ull->locked=1;
ull->thread=thd->real_id; ull->set_thread(thd);
thd->ull=ull; thd->ull=ull;
} }
pthread_mutex_unlock(&LOCK_user_locks); pthread_mutex_unlock(&LOCK_user_locks);
...@@ -3313,7 +3319,7 @@ longlong Item_func_get_lock::val_int() ...@@ -3313,7 +3319,7 @@ longlong Item_func_get_lock::val_int()
null_value=1; // Probably out of memory null_value=1; // Probably out of memory
return 0; return 0;
} }
ull->thread=thd->real_id; ull->set_thread(thd);
thd->ull=ull; thd->ull=ull;
pthread_mutex_unlock(&LOCK_user_locks); pthread_mutex_unlock(&LOCK_user_locks);
return 1; // Got new lock return 1; // Got new lock
...@@ -3354,7 +3360,7 @@ longlong Item_func_get_lock::val_int() ...@@ -3354,7 +3360,7 @@ longlong Item_func_get_lock::val_int()
else // We got the lock else // We got the lock
{ {
ull->locked=1; ull->locked=1;
ull->thread=thd->real_id; ull->set_thread(thd);
ull->thread_id= thd->thread_id; ull->thread_id= thd->thread_id;
thd->ull=ull; thd->ull=ull;
error=0; error=0;
...@@ -3403,7 +3409,7 @@ longlong Item_func_release_lock::val_int() ...@@ -3403,7 +3409,7 @@ longlong Item_func_release_lock::val_int()
else else
{ {
#ifdef EMBEDDED_LIBRARY #ifdef EMBEDDED_LIBRARY
if (ull->locked && pthread_equal(current_thd->real_id,ull->thread)) if (ull->locked && (current_thd == ull->thread))
#else #else
if (ull->locked && pthread_equal(pthread_self(),ull->thread)) if (ull->locked && pthread_equal(pthread_self(),ull->thread))
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment