diff --git a/src/observer/virtual_table/ob_mysql_user_table.cpp b/src/observer/virtual_table/ob_mysql_user_table.cpp index bc8024c358..10cd930915 100644 --- a/src/observer/virtual_table/ob_mysql_user_table.cpp +++ b/src/observer/virtual_table/ob_mysql_user_table.cpp @@ -148,6 +148,8 @@ int ObMySQLUserTable::inner_get_next_row(common::ObNewRow *&row) NO_EXIST_PRIV_CASE(EVENT); NO_EXIST_PRIV_CASE(TRIGGER); EXIST_PRIV_CASE(CREATE_TABLESPACE); + NO_EXIST_PRIV_CASE(CREATE_ROLE); + NO_EXIST_PRIV_CASE(DROP_ROLE); COLUMN_SET_WITH_TYPE(SSL_TYPE, varchar, ssl_type_str); COLUMN_SET_WITH_TYPE(SSL_CIPHER, varchar, user_info->get_ssl_cipher()); COLUMN_SET_WITH_TYPE(X509_ISSUER, varchar, user_info->get_x509_issuer()); diff --git a/src/observer/virtual_table/ob_mysql_user_table.h b/src/observer/virtual_table/ob_mysql_user_table.h index cba5a49bef..357c64b4b6 100644 --- a/src/observer/virtual_table/ob_mysql_user_table.h +++ b/src/observer/virtual_table/ob_mysql_user_table.h @@ -73,6 +73,8 @@ private: ACCOUNT_LOCKED, DROP_DATABASE_LINK_PRIV, CREATE_DATABASE_LINK_PRIV, + CREATE_ROLE_PRIV, + DROP_ROLE_PRIV, }; public: ObMySQLUserTable(); diff --git a/src/share/inner_table/ob_inner_table_schema.12001_12050.cpp b/src/share/inner_table/ob_inner_table_schema.12001_12050.cpp index 0d0d7bd281..c058b15e30 100644 --- a/src/share/inner_table/ob_inner_table_schema.12001_12050.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12001_12050.cpp @@ -1026,6 +1026,36 @@ int ObInnerTableSchema::user_schema(ObTableSchema &table_schema) false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("create_role_priv", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + 1, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("drop_role_priv", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + 1, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } table_schema.set_index_using_type(USING_HASH); table_schema.set_row_store_type(ENCODING_ROW_STORE); table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index a70275d9cf..1742949cb8 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -10097,6 +10097,8 @@ def_table_schema( ('account_locked', 'varchar:1'), ('drop_database_link_priv', 'varchar:1'), ('create_database_link_priv', 'varchar:1'), + ('create_role_priv', 'varchar:1'), + ('drop_role_priv', 'varchar:1'), ], ) diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result index 697e4de933..a60c6f6ead 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result @@ -1547,6 +1547,8 @@ password_expired varchar(1) NO NULL account_locked varchar(1) NO NULL drop_database_link_priv varchar(1) NO NULL create_database_link_priv varchar(1) NO NULL +create_role_priv varchar(1) NO NULL +drop_role_priv varchar(1) NO NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from mysql.user; IF(count(*) >= 0, 1, 0) 1 diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result index 92372974e2..952dca9152 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result @@ -2044,6 +2044,8 @@ password_expired varchar(1) NO NULL account_locked varchar(1) NO NULL drop_database_link_priv varchar(1) NO NULL create_database_link_priv varchar(1) NO NULL +create_role_priv varchar(1) NO NULL +drop_role_priv varchar(1) NO NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from mysql.user; IF(count(*) >= 0, 1, 0) 1