summaryrefslogtreecommitdiff
path: root/sql/events.cc
diff options
context:
space:
mode:
authorsjaakola <seppo.jaakola@iki.fi>2017-10-10 23:39:48 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2017-10-19 09:57:23 +0300
commit8822b30f1e258a5f0efc124043f42970e600c5d4 (patch)
tree1fe8b9d5d6a10338211dc0b085da009a7fced496 /sql/events.cc
parent38530c86aa36e2cbd315447a5362bcc751fb9205 (diff)
downloadmariadb-git-8822b30f1e258a5f0efc124043f42970e600c5d4.tar.gz
MW-416 Replicating DDL after ACL check, 5.6 version
Re-implemented the fix for MW-416 according to 5.7 version
Diffstat (limited to 'sql/events.cc')
-rw-r--r--sql/events.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/events.cc b/sql/events.cc
index 7aa7dae4d7f..a6379ec5a46 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -327,6 +327,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data,
if (check_access(thd, EVENT_ACL, parse_data->dbname.str, NULL, NULL, 0, 0))
DBUG_RETURN(TRUE);
+ WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
if (check_db_dir_existence(parse_data->dbname.str))
{
@@ -406,6 +407,10 @@ Events::create_event(THD *thd, Event_parse_data *parse_data,
thd->set_current_stmt_binlog_format_row();
DBUG_RETURN(ret);
+#ifdef WITH_WSREP
+ error:
+ DBUG_RETURN(TRUE);
+#endif /* WITH_WSREP */
}
@@ -446,6 +451,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data,
if (check_access(thd, EVENT_ACL, parse_data->dbname.str, NULL, NULL, 0, 0))
DBUG_RETURN(TRUE);
+ WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
if (new_dbname) /* It's a rename */
{
@@ -521,6 +527,10 @@ Events::update_event(THD *thd, Event_parse_data *parse_data,
thd->set_current_stmt_binlog_format_row();
DBUG_RETURN(ret);
+#ifdef WITH_WSREP
+ error:
+ DBUG_RETURN(TRUE);
+#endif /* WITH_WSREP */
}
@@ -560,6 +570,7 @@ Events::drop_event(THD *thd, LEX_STRING dbname, LEX_STRING name, bool if_exists)
if (check_access(thd, EVENT_ACL, dbname.str, NULL, NULL, 0, 0))
DBUG_RETURN(TRUE);
+ WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
/*
Turn off row binlogging of this statement and use statement-based so
@@ -585,6 +596,10 @@ Events::drop_event(THD *thd, LEX_STRING dbname, LEX_STRING name, bool if_exists)
if (save_binlog_row_based)
thd->set_current_stmt_binlog_format_row();
DBUG_RETURN(ret);
+#ifdef WITH_WSREP
+ error:
+ DBUG_RETURN(TRUE);
+#endif /* WITH_WSREP */
}