diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index b2761ea7ce3..2d2ad091471 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -1514,7 +1514,7 @@ static bool update_user_table(THD *thd, const char *host, const char *user, */ tables.updating= 1; /* Thanks to bzero, tables.next==0 */ - if (!rpl_filter->tables_ok(0, &tables)) + if (!(thd->spcont || rpl_filter->tables_ok(0, &tables))) DBUG_RETURN(0); } #endif @@ -2699,7 +2699,7 @@ bool mysql_table_grant(THD *thd, TABLE_LIST *table_list, account in tests. */ tables[0].updating= tables[1].updating= tables[2].updating= 1; - if (!rpl_filter->tables_ok(0, tables)) + if (!(thd->spcont || rpl_filter->tables_ok(0, tables))) DBUG_RETURN(FALSE); } #endif @@ -2904,7 +2904,7 @@ bool mysql_procedure_grant(THD *thd, TABLE_LIST *table_list, account in tests. */ tables[0].updating= tables[1].updating= 1; - if (!rpl_filter->tables_ok(0, tables)) + if (!(thd->spcont || rpl_filter->tables_ok(0, tables))) DBUG_RETURN(FALSE); } #endif @@ -3035,7 +3035,7 @@ bool mysql_grant(THD *thd, const char *db, List &list, account in tests. */ tables[0].updating= tables[1].updating= 1; - if (!rpl_filter->tables_ok(0, tables)) + if (!(thd->spcont || rpl_filter->tables_ok(0, tables))) DBUG_RETURN(FALSE); } #endif @@ -4245,7 +4245,7 @@ int open_grant_tables(THD *thd, TABLE_LIST *tables) */ tables[0].updating=tables[1].updating=tables[2].updating= tables[3].updating=tables[4].updating=1; - if (!rpl_filter->tables_ok(0, tables)) + if (!(thd->spcont || rpl_filter->tables_ok(0, tables))) DBUG_RETURN(1); tables[0].updating=tables[1].updating=tables[2].updating= tables[3].updating=tables[4].updating=0;; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 065080517ba..43728cc38ba 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -168,11 +168,12 @@ static bool begin_trans(THD *thd) inline bool all_tables_not_ok(THD *thd, TABLE_LIST *tables) { return (rpl_filter->is_on() && tables && - !rpl_filter->tables_ok(thd->db, tables) && + !(thd->spcont || rpl_filter->tables_ok(thd->db, tables)) && ((thd->lex->sql_command != SQLCOM_DELETE_MULTI) || - !rpl_filter->tables_ok(thd->db, - (TABLE_LIST *) - thd->lex->auxilliary_table_list.first))); + !(thd->spcont || + rpl_filter->tables_ok(thd->db, + (TABLE_LIST *) + thd->lex->auxilliary_table_list.first)))); } #endif