mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Auto-merge of patch for bug#11764334 from mysql-5.1 tree.
This commit is contained in:
@ -419,7 +419,7 @@ SET TIME_ZONE= '+04:00';
|
|||||||
ALTER EVENT e1 DO SELECT 2;
|
ALTER EVENT e1 DO SELECT 2;
|
||||||
SHOW EVENTS;
|
SHOW EVENTS;
|
||||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
events_test e1 root@localhost -03:00 RECURRING NULL 1 DAY 2005-12-31 20:58:59 2030-01-03 00:00:00 ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
events_test e1 root@localhost -03:00 RECURRING NULL 1 DAY 2005-12-31 20:58:59 2030-01-03 00:00:00 DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
DROP EVENT e1;
|
DROP EVENT e1;
|
||||||
SET TIME_ZONE='+05:00';
|
SET TIME_ZONE='+05:00';
|
||||||
CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' DO
|
CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00' DO
|
||||||
@ -796,6 +796,20 @@ COUNT(*)
|
|||||||
DROP EVENT IF EXISTS event_Bug12546938;
|
DROP EVENT IF EXISTS event_Bug12546938;
|
||||||
DROP TABLE table_bug12546938;
|
DROP TABLE table_bug12546938;
|
||||||
SET GLOBAL EVENT_SCHEDULER = OFF;
|
SET GLOBAL EVENT_SCHEDULER = OFF;
|
||||||
|
DROP DATABASE IF EXISTS event_test11764334;
|
||||||
|
CREATE DATABASE event_test11764334;
|
||||||
|
USE event_test11764334;
|
||||||
|
CREATE EVENT ev1 ON SCHEDULE EVERY 3 SECOND DISABLE DO SELECT 1;
|
||||||
|
SHOW EVENTS IN event_test11764334 WHERE NAME='ev1';
|
||||||
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
|
event_test11764334 ev1 root@localhost SYSTEM RECURRING NULL 3 SECOND 2011-06-09 19:59:01 NULL DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
ALTER EVENT ev1 ON SCHEDULE EVERY 4 SECOND;
|
||||||
|
SHOW EVENTS IN event_test11764334 WHERE NAME='ev1';
|
||||||
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
|
event_test11764334 ev1 root@localhost SYSTEM RECURRING NULL 4 SECOND 2011-06-09 19:59:01 NULL DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
DROP EVENT ev1;
|
||||||
|
DROP DATABASE event_test11764334;
|
||||||
|
USE test;
|
||||||
DROP DATABASE events_test;
|
DROP DATABASE events_test;
|
||||||
SET GLOBAL event_scheduler= 'ON';
|
SET GLOBAL event_scheduler= 'ON';
|
||||||
SET @@global.concurrent_insert= @concurrent_insert;
|
SET @@global.concurrent_insert= @concurrent_insert;
|
||||||
|
@ -1286,6 +1286,21 @@ DROP EVENT IF EXISTS event_Bug12546938;
|
|||||||
DROP TABLE table_bug12546938;
|
DROP TABLE table_bug12546938;
|
||||||
SET GLOBAL EVENT_SCHEDULER = OFF;
|
SET GLOBAL EVENT_SCHEDULER = OFF;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#11764334 - 57156: ALTER EVENT CHANGES THE EVENT STATUS
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS event_test11764334;
|
||||||
|
--enable_warnings
|
||||||
|
CREATE DATABASE event_test11764334;
|
||||||
|
USE event_test11764334;
|
||||||
|
CREATE EVENT ev1 ON SCHEDULE EVERY 3 SECOND DISABLE DO SELECT 1;
|
||||||
|
SHOW EVENTS IN event_test11764334 WHERE NAME='ev1';
|
||||||
|
ALTER EVENT ev1 ON SCHEDULE EVERY 4 SECOND;
|
||||||
|
SHOW EVENTS IN event_test11764334 WHERE NAME='ev1';
|
||||||
|
DROP EVENT ev1;
|
||||||
|
DROP DATABASE event_test11764334;
|
||||||
|
USE test;
|
||||||
###########################################################################
|
###########################################################################
|
||||||
#
|
#
|
||||||
# End of tests
|
# End of tests
|
||||||
|
@ -235,9 +235,16 @@ mysql_event_fill_row(THD *thd,
|
|||||||
if (fields[f_num= ET_FIELD_NAME]->store(et->name.str, et->name.length, scs))
|
if (fields[f_num= ET_FIELD_NAME]->store(et->name.str, et->name.length, scs))
|
||||||
goto err_truncate;
|
goto err_truncate;
|
||||||
|
|
||||||
/* both ON_COMPLETION and STATUS are NOT NULL thus not calling set_notnull()*/
|
/* ON_COMPLETION field is NOT NULL thus not calling set_notnull()*/
|
||||||
rs|= fields[ET_FIELD_ON_COMPLETION]->store((longlong)et->on_completion, TRUE);
|
rs|= fields[ET_FIELD_ON_COMPLETION]->store((longlong)et->on_completion, TRUE);
|
||||||
rs|= fields[ET_FIELD_STATUS]->store((longlong)et->status, TRUE);
|
|
||||||
|
/*
|
||||||
|
Set STATUS value unconditionally in case of CREATE EVENT.
|
||||||
|
For ALTER EVENT set it only if value of this field was changed.
|
||||||
|
Since STATUS field is NOT NULL call to set_notnull() is not needed.
|
||||||
|
*/
|
||||||
|
if (!is_update || et->status_changed)
|
||||||
|
rs|= fields[ET_FIELD_STATUS]->store((longlong)et->status, TRUE);
|
||||||
rs|= fields[ET_FIELD_ORIGINATOR]->store((longlong)et->originator, TRUE);
|
rs|= fields[ET_FIELD_ORIGINATOR]->store((longlong)et->originator, TRUE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -716,8 +723,6 @@ Event_db_repository::create_event(THD *thd, Event_parse_data *parse_data,
|
|||||||
if (mysql_event_fill_row(thd, table, parse_data, sp, saved_mode, FALSE))
|
if (mysql_event_fill_row(thd, table, parse_data, sp, saved_mode, FALSE))
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
table->field[ET_FIELD_STATUS]->store((longlong)parse_data->status, TRUE);
|
|
||||||
|
|
||||||
if ((ret= table->file->ha_write_row(table->record[0])))
|
if ((ret= table->file->ha_write_row(table->record[0])))
|
||||||
{
|
{
|
||||||
table->file->print_error(ret, MYF(0));
|
table->file->print_error(ret, MYF(0));
|
||||||
|
@ -48,9 +48,8 @@ Event_parse_data::new_instance(THD *thd)
|
|||||||
|
|
||||||
Event_parse_data::Event_parse_data()
|
Event_parse_data::Event_parse_data()
|
||||||
:on_completion(Event_parse_data::ON_COMPLETION_DEFAULT),
|
:on_completion(Event_parse_data::ON_COMPLETION_DEFAULT),
|
||||||
status(Event_parse_data::ENABLED),
|
status(Event_parse_data::ENABLED), status_changed(false),
|
||||||
do_not_create(FALSE),
|
do_not_create(FALSE), body_changed(FALSE),
|
||||||
body_changed(FALSE),
|
|
||||||
item_starts(NULL), item_ends(NULL), item_execute_at(NULL),
|
item_starts(NULL), item_ends(NULL), item_execute_at(NULL),
|
||||||
starts_null(TRUE), ends_null(TRUE), execute_at_null(TRUE),
|
starts_null(TRUE), ends_null(TRUE), execute_at_null(TRUE),
|
||||||
item_expression(NULL), expression(0)
|
item_expression(NULL), expression(0)
|
||||||
@ -142,6 +141,7 @@ Event_parse_data::check_if_in_the_past(THD *thd, my_time_t ltime_utc)
|
|||||||
else if (status == Event_parse_data::ENABLED)
|
else if (status == Event_parse_data::ENABLED)
|
||||||
{
|
{
|
||||||
status= Event_parse_data::DISABLED;
|
status= Event_parse_data::DISABLED;
|
||||||
|
status_changed= true;
|
||||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
||||||
ER_EVENT_EXEC_TIME_IN_THE_PAST,
|
ER_EVENT_EXEC_TIME_IN_THE_PAST,
|
||||||
ER(ER_EVENT_EXEC_TIME_IN_THE_PAST));
|
ER(ER_EVENT_EXEC_TIME_IN_THE_PAST));
|
||||||
@ -571,7 +571,10 @@ void Event_parse_data::check_originator_id(THD *thd)
|
|||||||
DBUG_PRINT("info", ("Invoked object status set to SLAVESIDE_DISABLED."));
|
DBUG_PRINT("info", ("Invoked object status set to SLAVESIDE_DISABLED."));
|
||||||
if ((status == Event_parse_data::ENABLED) ||
|
if ((status == Event_parse_data::ENABLED) ||
|
||||||
(status == Event_parse_data::DISABLED))
|
(status == Event_parse_data::DISABLED))
|
||||||
status = Event_parse_data::SLAVESIDE_DISABLED;
|
{
|
||||||
|
status= Event_parse_data::SLAVESIDE_DISABLED;
|
||||||
|
status_changed= true;
|
||||||
|
}
|
||||||
originator = thd->server_id;
|
originator = thd->server_id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -55,6 +55,7 @@ public:
|
|||||||
|
|
||||||
int on_completion;
|
int on_completion;
|
||||||
int status;
|
int status;
|
||||||
|
bool status_changed;
|
||||||
longlong originator;
|
longlong originator;
|
||||||
/*
|
/*
|
||||||
do_not_create will be set if STARTS time is in the past and
|
do_not_create will be set if STARTS time is in the past and
|
||||||
|
@ -2227,16 +2227,19 @@ opt_ev_status:
|
|||||||
| ENABLE_SYM
|
| ENABLE_SYM
|
||||||
{
|
{
|
||||||
Lex->event_parse_data->status= Event_parse_data::ENABLED;
|
Lex->event_parse_data->status= Event_parse_data::ENABLED;
|
||||||
|
Lex->event_parse_data->status_changed= true;
|
||||||
$$= 1;
|
$$= 1;
|
||||||
}
|
}
|
||||||
| DISABLE_SYM ON SLAVE
|
| DISABLE_SYM ON SLAVE
|
||||||
{
|
{
|
||||||
Lex->event_parse_data->status= Event_parse_data::SLAVESIDE_DISABLED;
|
Lex->event_parse_data->status= Event_parse_data::SLAVESIDE_DISABLED;
|
||||||
|
Lex->event_parse_data->status_changed= true;
|
||||||
$$= 1;
|
$$= 1;
|
||||||
}
|
}
|
||||||
| DISABLE_SYM
|
| DISABLE_SYM
|
||||||
{
|
{
|
||||||
Lex->event_parse_data->status= Event_parse_data::DISABLED;
|
Lex->event_parse_data->status= Event_parse_data::DISABLED;
|
||||||
|
Lex->event_parse_data->status_changed= true;
|
||||||
$$= 1;
|
$$= 1;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
Reference in New Issue
Block a user