summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/grant.result20
-rw-r--r--mysql-test/t/grant.test13
-rw-r--r--sql/sql_acl.cc2
-rw-r--r--tests/grant.pl4
4 files changed, 36 insertions, 3 deletions
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index f903e35fa1f..d163e1033fc 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -321,3 +321,23 @@ DROP DATABASE testdb7;
DROP DATABASE testdb8;
DROP DATABASE testdb9;
DROP DATABASE testdb10;
+create table t1(a int, b int, c int, d int);
+grant insert(b), insert(c), insert(d), insert(a) on t1 to grant_user@localhost;
+show grants for grant_user@localhost;
+Grants for grant_user@localhost
+GRANT USAGE ON *.* TO 'grant_user'@'localhost'
+GRANT INSERT (a, d, c, b) ON `test`.`t1` TO 'grant_user'@'localhost'
+select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
+Host Db User Table_name Column_name Column_priv
+localhost test grant_user t1 c Insert
+localhost test grant_user t1 b Insert
+localhost test grant_user t1 a Insert
+localhost test grant_user t1 d Insert
+revoke ALL PRIVILEGES on t1 from grant_user@localhost;
+show grants for grant_user@localhost;
+Grants for grant_user@localhost
+GRANT USAGE ON *.* TO 'grant_user'@'localhost'
+select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
+Host Db User Table_name Column_name Column_priv
+drop user grant_user@localhost;
+drop table t1;
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index 963b9ae5080..169dd03ad86 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -267,3 +267,16 @@ DROP DATABASE testdb8;
DROP DATABASE testdb9;
DROP DATABASE testdb10;
+#
+# Bug #6932: a problem with 'revoke ALL PRIVILEGES'
+#
+
+create table t1(a int, b int, c int, d int);
+grant insert(b), insert(c), insert(d), insert(a) on t1 to grant_user@localhost;
+show grants for grant_user@localhost;
+select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
+revoke ALL PRIVILEGES on t1 from grant_user@localhost;
+show grants for grant_user@localhost;
+select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
+drop user grant_user@localhost;
+drop table t1;
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index d6f52fed1d2..f1698dcc911 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -2035,7 +2035,7 @@ static int replace_column_table(GRANT_TABLE *g_t,
{
table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS);
if (table->file->index_read(table->record[0], (byte*) table->field[0]->ptr,
- table->key_info[0].key_length,
+ key_length,
HA_READ_KEY_EXACT))
goto end;
diff --git a/tests/grant.pl b/tests/grant.pl
index eb2d00f3e1d..cd6a2eb80de 100644
--- a/tests/grant.pl
+++ b/tests/grant.pl
@@ -74,9 +74,9 @@ safe_query("revoke select(user) on mysql.user from $user");
safe_query("grant select on *.* to $user");
safe_query("set password FOR ${opt_user}2\@$opt_host = password('test')",1);
-safe_query("set password FOR $opt_user=password('test')");
+safe_query("set password FOR $opt_user\@$opt_host=password('test')");
user_connect(1);
-safe_query("set password FOR $opt_user=''");
+safe_query("set password FOR $opt_user\@$opt_host=''");
user_connect(0);
user_query("select * from mysql.user where user = '$opt_user'");
user_query("select * from mysql.db where user = '$opt_user'");