From: Dmitry Shulga Date: June 9 2011 5:08pm Subject: bzr commit into mysql-5.5 branch (Dmitry.Shulga:3435) Bug#11764334 List-Archive: http://lists.mysql.com/commits/138976 X-Bug: 11764334 Message-Id: <201106091708.p59H8XUQ014245@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7001356028454591376==" --===============7001356028454591376== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/shulga/projects/mysql/mysql-5.5/ based on revid:dmitry.lenev@stripped 3435 Dmitry Shulga 2011-06-10 [merge] Auto-merge of patch for bug#11764334 from mysql-5.1 tree. modified: mysql-test/r/events_bugs.result mysql-test/t/events_bugs.test sql/event_db_repository.cc sql/event_parse_data.cc sql/event_parse_data.h sql/sql_yacc.yy === modified file 'mysql-test/r/events_bugs.result' --- a/mysql-test/r/events_bugs.result 2011-05-27 11:42:28 +0000 +++ b/mysql-test/r/events_bugs.result 2011-06-09 17:07:03 +0000 @@ -419,7 +419,7 @@ SET TIME_ZONE= '+04:00'; ALTER EVENT e1 DO SELECT 2; 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 -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; SET TIME_ZONE='+05:00'; 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 TABLE table_bug12546938; 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; SET GLOBAL event_scheduler= 'ON'; SET @@global.concurrent_insert= @concurrent_insert; === modified file 'mysql-test/t/events_bugs.test' --- a/mysql-test/t/events_bugs.test 2011-05-27 11:42:28 +0000 +++ b/mysql-test/t/events_bugs.test 2011-06-09 17:07:03 +0000 @@ -1286,6 +1286,21 @@ DROP EVENT IF EXISTS event_Bug12546938; DROP TABLE table_bug12546938; 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 === modified file 'sql/event_db_repository.cc' --- a/sql/event_db_repository.cc 2011-05-27 11:42:28 +0000 +++ b/sql/event_db_repository.cc 2011-06-09 17:07:03 +0000 @@ -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)) 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_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); /* @@ -716,8 +723,6 @@ Event_db_repository::create_event(THD *t if (mysql_event_fill_row(thd, table, parse_data, sp, saved_mode, FALSE)) goto end; - table->field[ET_FIELD_STATUS]->store((longlong)parse_data->status, TRUE); - if ((ret= table->file->ha_write_row(table->record[0]))) { table->file->print_error(ret, MYF(0)); === modified file 'sql/event_parse_data.cc' --- a/sql/event_parse_data.cc 2010-03-31 14:05:33 +0000 +++ b/sql/event_parse_data.cc 2011-06-09 17:07:03 +0000 @@ -48,9 +48,8 @@ Event_parse_data::new_instance(THD *thd) Event_parse_data::Event_parse_data() :on_completion(Event_parse_data::ON_COMPLETION_DEFAULT), - status(Event_parse_data::ENABLED), - do_not_create(FALSE), - body_changed(FALSE), + status(Event_parse_data::ENABLED), status_changed(false), + do_not_create(FALSE), body_changed(FALSE), 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) @@ -142,6 +141,7 @@ Event_parse_data::check_if_in_the_past(T else if (status == Event_parse_data::ENABLED) { status= Event_parse_data::DISABLED; + status_changed= true; push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, 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_ DBUG_PRINT("info", ("Invoked object status set to SLAVESIDE_DISABLED.")); if ((status == Event_parse_data::ENABLED) || (status == Event_parse_data::DISABLED)) - status = Event_parse_data::SLAVESIDE_DISABLED; + { + status= Event_parse_data::SLAVESIDE_DISABLED; + status_changed= true; + } originator = thd->server_id; } else === modified file 'sql/event_parse_data.h' --- a/sql/event_parse_data.h 2010-03-31 14:05:33 +0000 +++ b/sql/event_parse_data.h 2011-06-09 17:07:03 +0000 @@ -55,6 +55,7 @@ public: int on_completion; int status; + bool status_changed; longlong originator; /* do_not_create will be set if STARTS time is in the past and === modified file 'sql/sql_yacc.yy' --- a/sql/sql_yacc.yy 2011-05-12 05:23:16 +0000 +++ b/sql/sql_yacc.yy 2011-06-09 17:07:03 +0000 @@ -2227,16 +2227,19 @@ opt_ev_status: | ENABLE_SYM { Lex->event_parse_data->status= Event_parse_data::ENABLED; + Lex->event_parse_data->status_changed= true; $$= 1; } | DISABLE_SYM ON SLAVE { Lex->event_parse_data->status= Event_parse_data::SLAVESIDE_DISABLED; + Lex->event_parse_data->status_changed= true; $$= 1; } | DISABLE_SYM { Lex->event_parse_data->status= Event_parse_data::DISABLED; + Lex->event_parse_data->status_changed= true; $$= 1; } ; --===============7001356028454591376== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.shulga@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.shulga@stripped\ # lniwsmcv42pnjdij # target_branch: file:///Users/shulga/projects/mysql/mysql-5.5/ # testament_sha1: 627a962c25228112bb4694a38cb6f35c6511455b # timestamp: 2011-06-10 00:08:27 +0700 # source_branch: file:///Users/shulga/projects/mysql/mysql-5.1-\ # bug11749345/ # base_revision_id: dmitry.lenev@stripped\ # nqsmjkj7r87zqm6z # # Begin bundle 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 L7upgA== --===============7001356028454591376==--