Commit graph

12 commits

Author SHA1 Message Date
unknown
f4781a7e4c fix for bug #17619 Scheduler race conditions
- Scheduler is either initialized at server start or never.
  Starting & stopping is now suspending & resuming.
- The scheduler has clear OO interface
- Now all calls to the scheduler are synchronous
- GLOBAL event_scheduler uses thd::sys_var_tmp (see set_var.cc)
- External API is encapsulated into class Events
- Includes fixes for all comments of Kostja's review of 19.05.2005

Starting to merge into 5.1-release (5.1.10) and push


BitKeeper/etc/ignore:
  Added libmysqld/event_scheduler.cc to the ignore list
libmysqld/Makefile.am:
  executor -> scheduler
mysql-test/r/events.result:
  update result
mysql-test/r/events_bugs.result:
  update result
mysql-test/r/events_logs_tests.result:
  update result
mysql-test/r/events_microsec.result:
  update result
mysql-test/r/events_scheduling.result:
  update result
mysql-test/r/events_stress.result:
  update result
mysql-test/t/disabled.def:
  enable these tests
mysql-test/t/events.test:
  optimize the test a bit for speed, save some seconds runtime
  remove FULL from SHOW EVENTS
  mostly use I_S.EVENTS
mysql-test/t/events_bugs.test:
  Skip irrelevant for the current design tests - all events are loaded
  on server startup. Change in mysql.event will be visible on next server start.
  Don't use numeric error codes.
mysql-test/t/events_logs_tests.test:
  optimize the test a bit for speed
mysql-test/t/events_microsec.test:
   Skip irrelevant for the current design tests - all events are loaded
      on server startup. Change in mysql.event will be visible on next server start.
      Don't use numeric error codes.
mysql-test/t/events_scheduling.test:
  broader test
mysql-test/t/events_stress.test:
  Rework the test to the new architecture of suspending/resuming.
  Use less events, no need for thousands, hundreds is still ok.
sql/Makefile.am:
  executor -> scheduler
sql/cmakelists.txt:
  executor -> scheduler
sql/event.cc:
  - remove todo comments
  - remove unneded evex_queue abstraction functions
  - move events_init() and events_shutdown() from event_executor.cc to here
  - export db_create_event
  - remove evex_load_and_compile_event, part of class Event_scheduler
  - integrate the public interface found in event.h and used by sql_parse.cc
    to use the new class Event_scheduler.
sql/event.h:
  - add COND_finished so if one thread kills a running event it waits on this
  - export callback event_timed_definer_equal, event_timed_identifier_equal(),
    event_timed_name_equal and event_timed_db_equal()
    to be used by Event_scheduler::drop_matching_events()
  - cleanup event.h
  - encapsulated all external interface into class Events
sql/event_executor.cc:
  make it empty, will delete after that
sql/event_priv.h:
  - more things in the private header
  - remove event queue abstraction functions. tightly bind to QUEUE
  - export privately db_drop_event, db_find_event, db_create_event()
  - made change_security_context() and restore_security_context() free functions
sql/event_timed.cc:
  - fix calculation of time when ENDS is set (STARTS is always set)
  - during Event_timed::compile() set the right Security_ctx. Prevents a crash
        during Event_scheduler::load_events_from_db()
  - add Event_timed::kill_thread()
  - implement event_timed_*_equal()
  - made change_security_context() and restore_security_context() free functions.
  - Comments cleanups
sql/lex.h:
  new word scheduler for SHOW SCHEDULER STATUS (available only debug builds)
sql/log.cc:
  move these from event_scheduler.cc
sql/mysql_priv.h:
  refactor kill_one_thread
  export sql_print_message_func and sql_print_message_handlers
sql/mysqld.cc:
  In close_connections, called by kill_server() skip the main scheduler
  thread and use events_shutdown() for shutting down the scheduler, in the same
  manner it's done for RPL.
  Add a new value to --event-scheduler :
  0 <- No scheduler available
  1 <- Start with scheduler enabled
  2 <- Start with scheduler suspended
sql/repl_failsafe.cc:
  refactor thd::system_thread to be an enum
sql/set_var.cc:
  move sys_var_event_executor::update() to set_var.cc
  executor -> scheduler
  use thd::sys_var_tmp
sql/set_var.h:
  executor -> scheduler
sql/share/errmsg.txt:
  3 new error messages
sql/sql_class.cc:
  refactor thd::system_thread to be an enum . more type-safety
sql/sql_class.h:
  refactor thd::system_thread to be an enum . more type-safety
sql/sql_db.cc:
  get the error from evex_drop_schema_events
sql/sql_error.h:
  export warning_level_names
sql/sql_lex.h:
  new command SHOW SCHEDULER STATUS, available only in debug build and
  for debug purposes.
sql/sql_parse.cc:
  refactor kill_one_thread() -> does the *dirty* work, and sql_kill
  just the reporting.
  add handler for SQLCOM_SHOW_SCHEDULER_STATUS
sql/sql_show.cc:
  fix verbosity handling (this will be obsoleted anyway by the fix for 17394).
sql/sql_yacc.yy:
  remove FULL from SHOW EVENTS
  add SHOW SCHEDULER STATUS in debug builds
sql/table.cc:
  Fix valgrind warning.
2006-05-22 20:46:13 +02:00
unknown
e0fffb52e0 update result 2006-03-28 13:28:35 +02:00
unknown
fd1303ead7 Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into lmy004.:/work/mysql-5.1-bug14356


mysql-test/r/events.result:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
mysql-test/t/events_bugs.test:
  Auto merged
2006-03-28 10:42:46 +02:00
unknown
b95fb17332 manual merge
mysql-test/r/events.result:
  Auto merged
mysql-test/t/events_bugs.test:
  Auto merged
scripts/mysql_fix_privilege_tables.sql:
  Auto merged
2006-03-25 00:24:04 +01:00
unknown
6e9cd55d83 fix for bug#16415 Events names are case sensitive
mysql-test/lib/init_db.sql:
  make name not binary, then event names won't be case sensitive
mysql-test/r/events.result:
  output fix
mysql-test/r/events_bugs.result:
  update result
mysql-test/t/events_bugs.test:
  test case for bug #16415 events' names are case sensitive
scripts/mysql_create_system_tables.sh:
  make name not binary, then event names won't be case sensitive
scripts/mysql_fix_privilege_tables.sql:
  make name not binary, then event names won't be case sensitive
2006-03-24 17:45:52 +01:00
unknown
647eefca2c fix after manual merge of fix for bug #16396: Events: Distant-future dates become past dates.
mysql-test/r/events.result:
  update result
mysql-test/r/events_bugs.result:
  update result after manual merge
mysql-test/t/events.test:
  move from error number to a constant
mysql-test/t/events_bugs.test:
  update error codes
2006-03-17 11:01:45 +01:00
unknown
a9e6af8ddf manual merge
sql/event_timed.cc:
  Auto merged
2006-03-17 09:40:48 +01:00
unknown
119de0547c fix for bug #17578: Test "events" fails due to scheduling difference
mysql-test/r/events.result:
  update result
mysql-test/r/events_bugs.result:
  update result
mysql-test/t/events.test:
  - use information_schema.processlist
  - move from error codes to constants
mysql-test/t/events_bugs.test:
  fix for bug #17578: Test "events" fails due to scheduling difference
  use information_schema.processlist
2006-03-16 16:41:00 +01:00
unknown
06dd976419 fix for bug 16408 (Events: crash for an event in a procedure)
(one patch)


mysql-test/r/events_bugs.result:
  fix for bug 16408
mysql-test/t/events_bugs.test:
  fix for bug 16408
sql/event.h:
  fix for bug 16408
sql/event_timed.cc:
  fix for bug 16408
sql/sql_parse.cc:
  fix for bug 16408
sql/sql_yacc.yy:
  fix for bug 16408
2006-03-16 13:14:40 +01:00
unknown
bcc6821b25 fix for bug #16396: Events: Distant-future dates become past dates
WL#1034 (Internal CRON)
timestamps does not support > y2038


mysql-test/r/events_bugs.result:
  update results
mysql-test/t/events_bugs.test:
  add tests
sql/event_timed.cc:
  fix for bug #16396: Events: Distant-future dates become past dates.
2006-03-03 01:39:11 +01:00
unknown
ae48f5fdf7 fix for bug#16407 (EVENTS: sql_mode)
post-review fixes


mysql-test/r/events_bugs.result:
  fix result
sql/event.cc:
  fix compilation problem on windows
sql/event_executor.cc:
  show the right host in show processlist (should be event_scheduler@localhost)
sql/event_timed.cc:
  a bit more debug infor
  fix a problem introduced with previous push :( . clean everything that's whitespace.
  found because of new test cases which were crashing.
sql/sql_show.cc:
  fix compile problem on windows
2006-02-21 02:40:23 +01:00
unknown
203b37effe fix for bug#16407 (Events: Changes in sql_mode won't be taken into account)
WL#1032
sql_mode setting was disregarded during create/alter event and wasn't set during
event execution.
(post-review small fixes)


sql/event.cc:
  store the sql_mode when the body is stored
  - always on create event
  - during alter event if the user changes the body
sql/event.h:
  add sql_mode as member variable
sql/event_timed.cc:
  - exchange thd->variables.sql_mode before and after execution
  - set the sql_mode of the anonymous SP -> event_timed::sphead
sql/sql_show.cc:
  - show real content in I_S.EVENTS.SQL_MODE , disallow NULL
2006-02-20 23:52:22 +01:00