1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

Mark tables 'updating' in sql_acl.cc (mysql_grant(), mysql_table_grant()) so that

tables_ok() does not ignore them. This fixes random bug #980.
This commit is contained in:
guilhem@mysql.com
2003-08-02 16:10:26 +02:00
parent 4eccbd87cd
commit fa1d0098ec

View File

@@ -2107,8 +2107,17 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
GRANT and REVOKE are applied the slave in/exclusion rules as they are
some kind of updates to the mysql.% tables.
*/
if (thd->slave_thread && table_rules_on && !tables_ok(0, tables))
DBUG_RETURN(0);
if (thd->slave_thread && table_rules_on)
{
/*
The tables must be marked "updating" so that tables_ok() takes them into
account in tests.
*/
tables[0].updating=tables[1].updating=tables[2].updating=1;
if (!tables_ok(0, tables))
DBUG_RETURN(0);
tables[0].updating=tables[1].updating=tables[2].updating=0;
}
#endif
if (open_and_lock_tables(thd,tables))
@@ -2279,8 +2288,17 @@ int mysql_grant (THD *thd, const char *db, List <LEX_USER> &list,
GRANT and REVOKE are applied the slave in/exclusion rules as they are
some kind of updates to the mysql.% tables.
*/
if (thd->slave_thread && table_rules_on && !tables_ok(0, tables))
DBUG_RETURN(0);
if (thd->slave_thread && table_rules_on)
{
/*
The tables must be marked "updating" so that tables_ok() takes them into
account in tests.
*/
tables[0].updating=tables[1].updating=1;
if (!tables_ok(0, tables))
DBUG_RETURN(0);
tables[0].updating=tables[1].updating=0;
}
#endif
if (open_and_lock_tables(thd,tables))