Commit 65a484a1 authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com
Browse files

replicated get_lock() properly

parent b78f8380
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
get_lock("lock",3)
1
n
1
+16 −0
Original line number Diff line number Diff line
source include/master-slave.inc;
connection master;
create table t1(n int);
insert into t1 values(get_lock("lock",2));
dirty_close master;
connection master1;
save_master_pos;
connection slave;
sync_with_master;
select get_lock("lock",3);
select * from t1;
connection master1;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
+17 −0
Original line number Diff line number Diff line
@@ -1399,6 +1399,23 @@ void item_user_lock_free(void)
void item_user_lock_release(ULL *ull)
{
  ull->locked=0;
  if (mysql_bin_log.is_open())
  {
    THD *thd = current_thd;
    int save_errno;
    char buf[256];
    String tmp(buf,sizeof(buf));
    tmp.length(0);
    tmp.append("SELECT release_lock(\"");
    tmp.append(ull->key,ull->key_length);
    tmp.append("\")");
    save_errno=thd->net.last_errno;
    thd->net.last_errno=0;
    thd->query_length=tmp.length();
    Query_log_event qev(thd,tmp.ptr());
    mysql_bin_log.write(&qev);
    thd->net.last_errno=save_errno;
  }
  if (--ull->count)
    pthread_cond_signal(&ull->cond);
  else