mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl
into mysql_cab_desk.:C:/source/c++/mysql-5.1_WL_3629 BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8: Auto merged BitKeeper/deleted/.del-mysql_create_system_tables.sh: Auto merged scripts/mysql_system_tables_fix.sql: Auto merged sql/event_data_objects.cc: Auto merged sql/slave.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/event_data_objects.h: Manual merge. sql/event_queue.cc: Manual merge. sql/events.cc: Manual merge.
This commit is contained in:
@@ -101,7 +101,8 @@ Event_parse_data::new_instance(THD *thd)
|
||||
*/
|
||||
|
||||
Event_parse_data::Event_parse_data()
|
||||
:on_completion(ON_COMPLETION_DROP), status(ENABLED),
|
||||
:on_completion(Event_basic::ON_COMPLETION_DROP),
|
||||
status(Event_basic::ENABLED),
|
||||
item_starts(NULL), item_ends(NULL), item_execute_at(NULL),
|
||||
starts_null(TRUE), ends_null(TRUE), execute_at_null(TRUE),
|
||||
item_expression(NULL), expression(0)
|
||||
@@ -593,9 +594,9 @@ Event_parse_data::check_parse_data(THD *thd)
|
||||
init_name(thd, identifier);
|
||||
|
||||
init_definer(thd);
|
||||
|
||||
ret= init_execute_at(thd) || init_interval(thd) || init_starts(thd) ||
|
||||
init_ends(thd);
|
||||
check_originator_id(thd);
|
||||
DBUG_RETURN(ret);
|
||||
}
|
||||
|
||||
@@ -642,6 +643,30 @@ Event_parse_data::init_definer(THD *thd)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Set the originator id of the event to the server_id if executing on
|
||||
the master or set to the server_id of the master if executing on
|
||||
the slave. If executing on slave, also set status to SLAVESIDE_DISABLED.
|
||||
|
||||
SYNOPSIS
|
||||
Event_parse_data::check_originator_id()
|
||||
*/
|
||||
void Event_parse_data::check_originator_id(THD *thd)
|
||||
{
|
||||
/* Disable replicated events on slave. */
|
||||
if ((thd->system_thread == SYSTEM_THREAD_SLAVE_SQL) ||
|
||||
(thd->system_thread == SYSTEM_THREAD_SLAVE_IO))
|
||||
{
|
||||
DBUG_PRINT("info", ("Invoked object status set to SLAVESIDE_DISABLED."));
|
||||
if (status == Event_basic::ENABLED)
|
||||
status = Event_basic::SLAVESIDE_DISABLED;
|
||||
originator = thd->server_id;
|
||||
}
|
||||
else
|
||||
originator = server_id;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Constructor
|
||||
|
||||
@@ -971,8 +996,23 @@ Event_queue_element::load_from_row(TABLE *table)
|
||||
goto error;
|
||||
|
||||
DBUG_PRINT("load_from_row", ("Event [%s] is [%s]", name.str, ptr));
|
||||
status= (ptr[0]=='E'? Event_queue_element::ENABLED:
|
||||
Event_queue_element::DISABLED);
|
||||
|
||||
/* Set event status (ENABLED | SLAVESIDE_DISABLED | DISABLED) */
|
||||
switch (ptr[0])
|
||||
{
|
||||
case 'E' :
|
||||
status = Event_queue_element::ENABLED;
|
||||
break;
|
||||
case 'S' :
|
||||
status = Event_queue_element::SLAVESIDE_DISABLED;
|
||||
break;
|
||||
case 'D' :
|
||||
status = Event_queue_element::DISABLED;
|
||||
break;
|
||||
}
|
||||
if ((ptr= get_field(&mem_root, table->field[ET_FIELD_ORIGINATOR])) == NullS)
|
||||
goto error;
|
||||
originator = table->field[ET_FIELD_ORIGINATOR]->val_int();
|
||||
|
||||
/* ToDo : Andrey . Find a way not to allocate ptr on event_mem_root */
|
||||
if ((ptr= get_field(&mem_root,
|
||||
@@ -1243,7 +1283,7 @@ Event_queue_element::compute_next_execution_time()
|
||||
(long) TIME_to_ulonglong_datetime(&last_executed),
|
||||
(long) this));
|
||||
|
||||
if (status == Event_queue_element::DISABLED)
|
||||
if (status != Event_queue_element::ENABLED)
|
||||
{
|
||||
DBUG_PRINT("compute_next_execution_time",
|
||||
("Event %s is DISABLED", name.str));
|
||||
@@ -1620,6 +1660,8 @@ Event_timed::get_create_event(THD *thd, String *buf)
|
||||
|
||||
if (status == Event_timed::ENABLED)
|
||||
buf->append(STRING_WITH_LEN("ENABLE"));
|
||||
else if (status == Event_timed::SLAVESIDE_DISABLED)
|
||||
buf->append(STRING_WITH_LEN("SLAVESIDE_DISABLE"));
|
||||
else
|
||||
buf->append(STRING_WITH_LEN("DISABLE"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user