From 5a696ebd164f3e9dcf9edad1a5702d54961d6049 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Aug 2003 16:10:26 +0200 Subject: 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. sql/sql_acl.cc: Mark tables 'updating' so that tables_ok() does not ignore them; this fixes random bug #980. --- sql/sql_acl.cc | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'sql/sql_acl.cc') diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 755a72bec32..d73e8b236e5 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -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 &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)) -- cgit v1.2.1