summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <thek@adventure.(none)>2008-03-25 12:52:55 +0100
committerunknown <thek@adventure.(none)>2008-03-25 12:52:55 +0100
commita3126bfc2ecdbe321ff05e5810e2eb6b631d02ca (patch)
treea0f34db532da26c7888c742adb24d17259bb872e
parent0769fe559036512506736768fb31ddb0482ac2e6 (diff)
downloadmariadb-git-a3126bfc2ecdbe321ff05e5810e2eb6b631d02ca.tar.gz
Bug#33275 Server crash when creating temporary table mysql.user
When creating a temporary table that uses the same name as the mysql privs table the server would crash on FLUSH PRIVILEGES. This patches corrects the problem by setting a flag to ignore any temporary table when trying to reload the privileges. mysql-test/r/grant.result: Test for checking shadowing of privilege tables mysql-test/t/grant.test: Test for checking shadowing of privilege tables sql/sql_acl.cc: Set flag for ignoring temporary tables when trying to reload privileges.
-rw-r--r--mysql-test/r/grant.result6
-rw-r--r--mysql-test/t/grant.test7
-rw-r--r--sql/sql_acl.cc5
3 files changed, 17 insertions, 1 deletions
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index e27ef64af43..8a89a9dc264 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -1129,4 +1129,10 @@ DROP USER mysqltest_1@localhost;
DROP DATABASE db27878;
use test;
DROP TABLE t1;
+#
+# Bug#33275 Server crash when creating temporary table mysql.user
+#
+CREATE TEMPORARY TABLE mysql.user (id INT);
+FLUSH PRIVILEGES;
+DROP TABLE mysql.user;
End of 5.0 tests
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index ed95d90c8f8..93c416133e8 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -1153,4 +1153,11 @@ DROP DATABASE db27878;
use test;
DROP TABLE t1;
+--echo #
+--echo # Bug#33275 Server crash when creating temporary table mysql.user
+--echo #
+CREATE TEMPORARY TABLE mysql.user (id INT);
+FLUSH PRIVILEGES;
+DROP TABLE mysql.user;
+
--echo End of 5.0 tests
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 8fdd054eb39..64b1e699289 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -558,6 +558,8 @@ my_bool acl_reload(THD *thd)
tables[0].next_local= tables[0].next_global= tables+1;
tables[1].next_local= tables[1].next_global= tables+2;
tables[0].lock_type=tables[1].lock_type=tables[2].lock_type=TL_READ;
+ tables[0].skip_temporary= tables[1].skip_temporary=
+ tables[2].skip_temporary= TRUE;
if (simple_open_n_lock_tables(thd, tables))
{
@@ -3528,7 +3530,8 @@ my_bool grant_reload(THD *thd)
tables[0].next_local= tables[0].next_global= tables+1;
tables[1].next_local= tables[1].next_global= tables+2;
tables[0].lock_type= tables[1].lock_type= tables[2].lock_type= TL_READ;
-
+ tables[0].skip_temporary= tables[1].skip_temporary=
+ tables[2].skip_temporary= TRUE;
/*
To avoid deadlocks we should obtain table locks before
obtaining LOCK_grant rwlock.