diff --git a/mysql-test/suite/roles/prepare_stmt_with_role.result b/mysql-test/suite/roles/prepare_stmt_with_role.result index 8b647bf2849e5..71dffaafa9219 100644 --- a/mysql-test/suite/roles/prepare_stmt_with_role.result +++ b/mysql-test/suite/roles/prepare_stmt_with_role.result @@ -38,6 +38,15 @@ Grants for test_user@% GRANT developers TO 'test_user'@'%' GRANT USAGE ON *.* TO 'test_user'@'%' # +# Test revoking a role. +# +SET @revokeRole = 'REVOKE developers FROM test_user'; +PREPARE stmtRevokeRole FROM @revokeRole; +EXECUTE stmtRevokeRole; +SHOW GRANTS FOR test_user; +Grants for test_user@% +GRANT USAGE ON *.* TO 'test_user'@'%' +# # Now drop the role. # SET @dropRole = 'DROP ROLE developers'; diff --git a/mysql-test/suite/roles/prepare_stmt_with_role.test b/mysql-test/suite/roles/prepare_stmt_with_role.test index 233249521b671..be2c92b3e3657 100644 --- a/mysql-test/suite/roles/prepare_stmt_with_role.test +++ b/mysql-test/suite/roles/prepare_stmt_with_role.test @@ -32,6 +32,15 @@ EXECUTE stmtGrantRole; SELECT * FROM mysql.roles_mapping; SHOW GRANTS FOR test_user; +--echo # +--echo # Test revoking a role. +--echo # +SET @revokeRole = 'REVOKE developers FROM test_user'; +PREPARE stmtRevokeRole FROM @revokeRole; +EXECUTE stmtRevokeRole; + +SHOW GRANTS FOR test_user; + --echo # --echo # Now drop the role. --echo # diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 104046395c43e..0db1daa378e52 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -2465,6 +2465,7 @@ static bool check_prepared_statement(Prepared_statement *stmt) case SQLCOM_GRANT: case SQLCOM_GRANT_ROLE: case SQLCOM_REVOKE: + case SQLCOM_REVOKE_ROLE: case SQLCOM_KILL: case SQLCOM_COMPOUND: case SQLCOM_SHUTDOWN: