summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xDocs/changelog-4.0.xml18
-rwxr-xr-xDocs/changelog-4.1.xml18
-rw-r--r--mysql-test/r/func_misc.result36
-rw-r--r--mysql-test/t/func_misc.test38
-rw-r--r--sql/item_func.cc2
5 files changed, 76 insertions, 36 deletions
diff --git a/Docs/changelog-4.0.xml b/Docs/changelog-4.0.xml
deleted file mode 100755
index f0f9aa881f1..00000000000
--- a/Docs/changelog-4.0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<!--
-This is a dummy changelog file. Don't use it yet.
-It merges upward without conflict.
--->
-<appendix id="news-4-0-x">
-
- <title>
- Changes in release 4.0.x
- </title>
-
- <para>
- This is a dummy changelog file. Don't use it yet.
- </para>
-
-</appendix>
diff --git a/Docs/changelog-4.1.xml b/Docs/changelog-4.1.xml
deleted file mode 100755
index 644f2940d0f..00000000000
--- a/Docs/changelog-4.1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<!--
-This is a dummy changelog file. Don't use it yet.
-It merges upward without conflict.
--->
-<appendix id="news-4-1-x">
-
- <title>
- Changes in release 4.1.x
- </title>
-
- <para>
- This is a dummy changelog file. Don't use it yet.
- </para>
-
-</appendix>
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 36666fc827d..67f2f2de3d1 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -51,6 +51,42 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
a
2004-01-06 12:34:00
drop table t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (conn CHAR(7), connection_id INT);
+INSERT INTO t1 VALUES ('default', CONNECTION_ID());
+SELECT GET_LOCK('bug16501',600);
+GET_LOCK('bug16501',600)
+1
+INSERT INTO t1 VALUES ('con1', CONNECTION_ID());
+SELECT IS_USED_LOCK('bug16501') = connection_id
+FROM t1
+WHERE conn = 'default';
+IS_USED_LOCK('bug16501') = connection_id
+1
+ SELECT GET_LOCK('bug16501',600);
+SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
+IS_USED_LOCK('bug16501') = CONNECTION_ID()
+1
+SELECT RELEASE_LOCK('bug16501');
+RELEASE_LOCK('bug16501')
+1
+SELECT IS_USED_LOCK('bug16501') = connection_id
+FROM t1
+WHERE conn = 'con1';
+IS_USED_LOCK('bug16501') = connection_id
+1
+GET_LOCK('bug16501',600)
+1
+SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
+IS_USED_LOCK('bug16501') = CONNECTION_ID()
+1
+SELECT RELEASE_LOCK('bug16501');
+RELEASE_LOCK('bug16501')
+1
+SELECT IS_USED_LOCK('bug16501');
+IS_USED_LOCK('bug16501')
+NULL
+DROP TABLE t1;
create table t1 as select uuid(), length(uuid());
show create table t1;
Table Create Table
diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test
index 4a618a56483..59cce884766 100644
--- a/mysql-test/t/func_misc.test
+++ b/mysql-test/t/func_misc.test
@@ -38,6 +38,44 @@ select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
drop table t1;
+
+#
+# Bug#16501: IS_USED_LOCK does not appear to work
+#
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (conn CHAR(7), connection_id INT);
+INSERT INTO t1 VALUES ('default', CONNECTION_ID());
+
+SELECT GET_LOCK('bug16501',600);
+
+connect (con1,localhost,root,,);
+INSERT INTO t1 VALUES ('con1', CONNECTION_ID());
+SELECT IS_USED_LOCK('bug16501') = connection_id
+FROM t1
+WHERE conn = 'default';
+send SELECT GET_LOCK('bug16501',600);
+
+connection default;
+SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
+SELECT RELEASE_LOCK('bug16501');
+SELECT IS_USED_LOCK('bug16501') = connection_id
+FROM t1
+WHERE conn = 'con1';
+
+connection con1;
+reap;
+SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
+SELECT RELEASE_LOCK('bug16501');
+SELECT IS_USED_LOCK('bug16501');
+
+disconnect con1;
+connection default;
+
+DROP TABLE t1;
+
# End of 4.1 tests
#
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 0447ab115ec..3359c632aff 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -3011,6 +3011,7 @@ void item_user_lock_free(void)
void item_user_lock_release(User_level_lock *ull)
{
ull->locked=0;
+ ull->thread_id= 0;
if (--ull->count)
pthread_cond_signal(&ull->cond);
else
@@ -3218,6 +3219,7 @@ longlong Item_func_get_lock::val_int()
{
ull->locked=1;
ull->thread=thd->real_id;
+ ull->thread_id= thd->thread_id;
thd->ull=ull;
error=0;
}