summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/mysql_system_tables.sql5
-rw-r--r--sql/sql_acl.cc21
2 files changed, 9 insertions, 17 deletions
diff --git a/scripts/mysql_system_tables.sql b/scripts/mysql_system_tables.sql
index bb397e495a9..de6c33fb4f9 100644
--- a/scripts/mysql_system_tables.sql
+++ b/scripts/mysql_system_tables.sql
@@ -44,10 +44,7 @@ set @had_user_table= @@warning_count != 0;
CREATE TABLE IF NOT EXISTS roles_mapping (
HostFk char(60) binary DEFAULT '' NOT NULL,
UserFk char(16) binary DEFAULT '' NOT NULL,
- RoleHostFK char(60) binary DEFAULT '' NOT NULL,
- RoleUserFk char(16) binary DEFAULT '' NOT NULL,
- CONSTRAINT FOREIGN KEY (HostFk, UserFk) REFERENCES user (Host, User),
- CONSTRAINT FOREIGN KEY (RoleHostFk, RoleUserFk) REFERENCES user (Host, User)
+ RoleFk char(16) binary DEFAULT '' NOT NULL
);
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index e073e1a1e63..9c180c25527 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -539,7 +539,6 @@ typedef struct st_role_grant
char *u_uname;
char *u_hname;
char *r_uname;
- char *r_hname;
LEX_STRING hashkey;
} ROLE_GRANT_PAIR;
@@ -1237,28 +1236,24 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
sizeof(ROLE_GRANT_PAIR));
mapping->u_hname= get_field(&mem, table->field[0]);
mapping->u_uname= get_field(&mem, table->field[1]);
- mapping->r_hname= get_field(&mem, table->field[2]);
- mapping->r_uname= get_field(&mem, table->field[3]);
+ mapping->r_uname= get_field(&mem, table->field[2]);
- size_t len[4] = {mapping->u_hname ? strlen(mapping->u_hname) : 0,
+ size_t len[3] = {mapping->u_hname ? strlen(mapping->u_hname) : 0,
mapping->u_uname ? strlen(mapping->u_uname) : 0,
- mapping->r_hname ? strlen(mapping->r_hname) : 0,
mapping->r_uname ? strlen(mapping->r_uname) : 0};
- char *buff= (char *)alloc_root(&mem, len[0] + len[1] + len[2] + len[3] + 1);
+ char *buff= (char *)alloc_root(&mem, len[0] + len[1] + len[2] + 1);
memcpy(buff, mapping->u_hname, len[0]);
memcpy(buff + len[0], mapping->u_uname, len[1]);
- memcpy(buff + len[0] + len[1], mapping->r_hname, len[2]);
- memcpy(buff + len[0] + len[1] + len[2], mapping->r_uname, len[3]);
- buff[len[0] + len[1] + len[2] + len[3]] = '\0';
+ memcpy(buff + len[0] + len[1] + len[2], mapping->r_uname, len[2]);
+ buff[len[0] + len[1] + len[2]] = '\0';
mapping->hashkey.str = buff;
- mapping->hashkey.length = len[0] + len[1] + len[2] + len[3];
+ mapping->hashkey.length = len[0] + len[1] + len[2];
if (add_role_user_mapping(mapping) == 1) {
- sql_print_error("Invalid roles_mapping table entry '%s@%s', '%s@%s'",
+ sql_print_error("Invalid roles_mapping table entry user:'%s@%s', rolename:'%s'",
mapping->u_uname ? mapping->u_uname : "",
mapping->u_hname ? mapping->u_hname : "",
- mapping->r_uname ? mapping->r_uname : "",
- mapping->r_hname ? mapping->r_hname : "");
+ mapping->r_uname ? mapping->r_uname : "");
continue;
}