diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index b13ce0cf7ba79367c295b906f834353619ccb28c..141e96c84245a1b20e677be74c37b33e71cfaf88 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -259,6 +259,26 @@ CREATE TABLE t7 LIKE t1;
 CREATE TABLE t8 LIKE t1;
 CREATE TABLE t9 LIKE t1;
 CREATE TABLE t10 LIKE t1;
+CREATE DATABASE testdb1;
+CREATE DATABASE testdb2;
+CREATE DATABASE testdb3;
+CREATE DATABASE testdb4;
+CREATE DATABASE testdb5;
+CREATE DATABASE testdb6;
+CREATE DATABASE testdb7;
+CREATE DATABASE testdb8;
+CREATE DATABASE testdb9;
+CREATE DATABASE testdb10;
+GRANT ALL ON testdb1.* TO testuser@localhost;
+GRANT ALL ON testdb2.* TO testuser@localhost;
+GRANT ALL ON testdb3.* TO testuser@localhost;
+GRANT ALL ON testdb4.* TO testuser@localhost;
+GRANT ALL ON testdb5.* TO testuser@localhost;
+GRANT ALL ON testdb6.* TO testuser@localhost;
+GRANT ALL ON testdb7.* TO testuser@localhost;
+GRANT ALL ON testdb8.* TO testuser@localhost;
+GRANT ALL ON testdb9.* TO testuser@localhost;
+GRANT ALL ON testdb10.* TO testuser@localhost;
 GRANT SELECT ON test.t1 TO testuser@localhost;
 GRANT SELECT ON test.t2 TO testuser@localhost;
 GRANT SELECT ON test.t3 TO testuser@localhost;
@@ -269,9 +289,29 @@ GRANT SELECT ON test.t7 TO testuser@localhost;
 GRANT SELECT ON test.t8 TO testuser@localhost;
 GRANT SELECT ON test.t9 TO testuser@localhost;
 GRANT SELECT ON test.t10 TO testuser@localhost;
+GRANT SELECT (a) ON test.t1 TO testuser@localhost;
+GRANT SELECT (a) ON test.t2 TO testuser@localhost;
+GRANT SELECT (a) ON test.t3 TO testuser@localhost;
+GRANT SELECT (a) ON test.t4 TO testuser@localhost;
+GRANT SELECT (a) ON test.t5 TO testuser@localhost;
+GRANT SELECT (a) ON test.t6 TO testuser@localhost;
+GRANT SELECT (a) ON test.t7 TO testuser@localhost;
+GRANT SELECT (a) ON test.t8 TO testuser@localhost;
+GRANT SELECT (a) ON test.t9 TO testuser@localhost;
+GRANT SELECT (a) ON test.t10 TO testuser@localhost;
 REVOKE ALL PRIVILEGES, GRANT OPTION FROM testuser@localhost;
 SHOW GRANTS FOR testuser@localhost;
 Grants for testuser@localhost
 GRANT USAGE ON *.* TO 'testuser'@'localhost'
 DROP USER testuser@localhost;
 DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+DROP DATABASE testdb1;
+DROP DATABASE testdb2;
+DROP DATABASE testdb3;
+DROP DATABASE testdb4;
+DROP DATABASE testdb5;
+DROP DATABASE testdb6;
+DROP DATABASE testdb7;
+DROP DATABASE testdb8;
+DROP DATABASE testdb9;
+DROP DATABASE testdb10;
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index f5b0db2971f808249a6d15dc64b158e590c9ce95..d9c281cfebc9101ef69c4da28fe3d12c641f6f51 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -203,6 +203,26 @@ CREATE TABLE t7 LIKE t1;
 CREATE TABLE t8 LIKE t1;
 CREATE TABLE t9 LIKE t1;
 CREATE TABLE t10 LIKE t1;
+CREATE DATABASE testdb1;
+CREATE DATABASE testdb2;
+CREATE DATABASE testdb3;
+CREATE DATABASE testdb4;
+CREATE DATABASE testdb5;
+CREATE DATABASE testdb6;
+CREATE DATABASE testdb7;
+CREATE DATABASE testdb8;
+CREATE DATABASE testdb9;
+CREATE DATABASE testdb10;
+GRANT ALL ON testdb1.* TO testuser@localhost;
+GRANT ALL ON testdb2.* TO testuser@localhost;
+GRANT ALL ON testdb3.* TO testuser@localhost;
+GRANT ALL ON testdb4.* TO testuser@localhost;
+GRANT ALL ON testdb5.* TO testuser@localhost;
+GRANT ALL ON testdb6.* TO testuser@localhost;
+GRANT ALL ON testdb7.* TO testuser@localhost;
+GRANT ALL ON testdb8.* TO testuser@localhost;
+GRANT ALL ON testdb9.* TO testuser@localhost;
+GRANT ALL ON testdb10.* TO testuser@localhost;
 GRANT SELECT ON test.t1 TO testuser@localhost;
 GRANT SELECT ON test.t2 TO testuser@localhost;
 GRANT SELECT ON test.t3 TO testuser@localhost;
@@ -213,8 +233,28 @@ GRANT SELECT ON test.t7 TO testuser@localhost;
 GRANT SELECT ON test.t8 TO testuser@localhost;
 GRANT SELECT ON test.t9 TO testuser@localhost;
 GRANT SELECT ON test.t10 TO testuser@localhost;
+GRANT SELECT (a) ON test.t1 TO testuser@localhost;
+GRANT SELECT (a) ON test.t2 TO testuser@localhost;
+GRANT SELECT (a) ON test.t3 TO testuser@localhost;
+GRANT SELECT (a) ON test.t4 TO testuser@localhost;
+GRANT SELECT (a) ON test.t5 TO testuser@localhost;
+GRANT SELECT (a) ON test.t6 TO testuser@localhost;
+GRANT SELECT (a) ON test.t7 TO testuser@localhost;
+GRANT SELECT (a) ON test.t8 TO testuser@localhost;
+GRANT SELECT (a) ON test.t9 TO testuser@localhost;
+GRANT SELECT (a) ON test.t10 TO testuser@localhost;
 REVOKE ALL PRIVILEGES, GRANT OPTION FROM testuser@localhost;
 SHOW GRANTS FOR testuser@localhost;
 DROP USER testuser@localhost;
 DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+DROP DATABASE testdb1;
+DROP DATABASE testdb2;
+DROP DATABASE testdb3;
+DROP DATABASE testdb4;
+DROP DATABASE testdb5;
+DROP DATABASE testdb6;
+DROP DATABASE testdb7;
+DROP DATABASE testdb8;
+DROP DATABASE testdb9;
+DROP DATABASE testdb10;
 
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 855e56af12bc5d6aaa6ce06c78d993346816b548..a5284a543e6876ae54a42cde6b740914f446cac6 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -3636,14 +3636,11 @@ int mysql_revoke_all(THD *thd,  List <LEX_USER> &list)
 	  !my_strcasecmp(system_charset_info, lex_user->host.str, host))
       {
 	if (replace_db_table(tables[1].table, acl_db->db, *lex_user, ~0, 1))
-	{
 	  result= -1;
-	  ++counter;
+	else
 	  continue;
-	}
       }
-      else
-	++counter;
+      ++counter;
     }
 
     /* Remove column access */
@@ -3666,26 +3663,26 @@ int mysql_revoke_all(THD *thd,  List <LEX_USER> &list)
 				~0, 0, 1))
 	{
 	  result= -1;
-	  ++counter;
-	  continue;
 	}
-	if (grant_table->cols)
+	else
 	{
-	  List<LEX_COLUMN> columns;
-	  if (replace_column_table(grant_table,tables[3].table, *lex_user,
-				   columns,
-				   grant_table->db,
-				   grant_table->tname,
-				   ~0, 1))
+	  if (grant_table->cols)
 	  {
-	    result= -1;
-	    ++counter;
-	    continue;
+	    List<LEX_COLUMN> columns;
+	    if (replace_column_table(grant_table,tables[3].table, *lex_user,
+				     columns,
+				     grant_table->db,
+				     grant_table->tname,
+				     ~0, 1))
+	      result= -1;
+	    else
+	      continue;
 	  }
+	  else
+	    continue;
 	}
       }
-      else
-	++counter;
+      ++counter;
     }
   }