Commit graph

76 commits

Author SHA1 Message Date
unknown
99438424ac Reorganize, physically the events code
Unify method naming -> create/update/drop_event
Move class Event_timed to event_timed.h
class Events is in events.h (renamed from event.h)
The implementation is in events.cc (renamed from event.h)


BitKeeper/deleted/.del-event_executor.cc~f4a4645b973838ab:
  Delete: sql/event_executor.cc
include/my_time.h:
  add a boundary
libmysqld/CMakeLists.txt:
  event.cc -> events.cc
libmysqld/Makefile.am:
  event.cc -> event.cc
sql/CMakeLists.txt:
  event.cc -> events.cc
sql/Makefile.am:
  event.cc -> events.cc
  event_priv.h -> events_priv.h
sql/event_scheduler.cc:
  event.h -> events.h
  add_event -> create_event
  replace_event -> update_event()
  event_timed_compare_q is only used in event_scheduler.cc , so moving it
  from event.cc and making it static
sql/event_scheduler.h:
  add_event -> create_event
  replace_event -> update_event
sql/event_timed.cc:
  moved extern interval_type_to_name to mysql_priv.h
sql/mysql_priv.h:
  moved my_time_compare to time.cc
sql/mysqld.cc:
  event.h -> events.h
sql/sql_db.cc:
  event.h -> events.h
sql/sql_parse.cc:
  event.h -> events.h
  class Event_timed moved to event_timed.h
sql/sql_show.cc:
  event.h -> events.h
  class Event_timed moved to event_timed.h
sql/sql_yacc.yy:
  event.h -> events.h
  class Event_timed moved to event_timed.h
sql/events.cc:
  add_event -> create_event
  replace_event -> update_event
  event_timed_compare_q moved to event_scheduler.cc
sql/events.h:
  class Event_timed moved to event_timed.h
sql/events_priv.h:
  my_time_compare moved to mysql_priv.h
  event_timed_compare_q is static in event_scheduler.cc
sql/time.cc:
  moved interval_type_to_name from event.cc to here.
BitKeeper/etc/ignore:
  Added libmysqld/events.cc to the ignore list
2006-06-08 23:07:11 +02:00
unknown
4f295835de local variable interval to interval_tmp because it hides
Event_timed::interval
2006-05-29 13:12:34 +02:00
unknown
bdda011675 Fix for bug #17394 - Events namespace is wrong
mysql-test/lib/init_db.sql:
  remove definer from PK
mysql-test/r/events.result:
  update results
mysql-test/r/system_mysql_db.result:
  update results
mysql-test/t/events.test:
  remove I_S.EVENTS test and move it to events_grant.test
scripts/mysql_fix_privilege_tables.sql:
  change table definition
sql/event.cc:
  make events non-user specific (namespace change)
sql/event.h:
  make events non-user specific (namespace change)
sql/event_priv.h:
  make events non-user specific (namespace change)
sql/event_scheduler.cc:
  make events non-user specific (namespace change)
sql/event_timed.cc:
  make events non-user specific (namespace change)
sql/sql_parse.cc:
  make events non-user specific (namespace change)
sql/sql_show.cc:
  SHOW EVENTS is available to everyone who has EVENT on specific schema.
  No additional privileges are needed to see others' events.
  - user A has events in db1 and db2
  - user B has events in db1 and db3
  A will see all his events from db1 and db2 as well as B's events
  from db1 but not from db3.
  B will see her events from db1 and db3. In addition B will see
  only A's events from db1 but not db2.
2006-05-29 10:39:45 +02:00
unknown
b1eaf92cd9 fix win32 build after push for bug#17619
sql/event_scheduler.cc:
  remove unused variables
  fix win32 build problem - pthread_mutex_lock() is void there
sql/event_scheduler.h:
  pthread_mutex_lock() is void on win32. This fixes the win32 build.
sql/event_timed.cc:
  remove unused code & variables
2006-05-23 00:19:02 +02:00
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
791a5d9444 Fixed compiler warnings
Move plugin declarations after system functions have been checked
(Fixes problem with ndb_config failing becasue SHM is not declared)
Fixed some memory leaks


configure.in:
  Move plugin declarations after system functions have been checked
  (Fixes problem with ndb_config failing becasue SHM is not declared)
mysql-test/t/disabled.def:
  Disabled ndb_load, as it is in 5.0
  (Fails randomly in binlog_close_connection())
mysql-test/t/log_tables.test:
  Update error numbers
mysql-test/t/ndb_config.test:
  Moved test depending on SHM to ndb_config2.test
mysql-test/t/ndb_partition_error.test:
  Update error numbers
sql/event_timed.cc:
  Removed not needed line
sql/ha_berkeley.cc:
  Fixed compiler warning
sql/ha_heap.cc:
  Fixed compiler warning
sql/ha_innodb.cc:
  Fixed compiler warning
sql/ha_myisam.cc:
  Fixed compiler warning
sql/ha_myisammrg.cc:
  Fixed compiler warning
sql/ha_ndbcluster.cc:
  Fixed compiler warning
sql/ha_partition.cc:
  Fixed compiler warning
sql/mysql_priv.h:
  After merge fix
sql/mysqld.cc:
  Fixed memory leak in skip_grant.test
sql/share/errmsg.txt:
  Removed wrong error messages
sql/sql_lex.cc:
  More debugging
  Faster lex_end()
sql/sql_partition.cc:
  Fixed memory leak
sql/sql_view.cc:
  Fixed memory leak
mysql-test/r/ndb_config2.result:
  New BitKeeper file ``mysql-test/r/ndb_config2.result''
mysql-test/t/ndb_config2.test:
  New BitKeeper file ``mysql-test/t/ndb_config2.test''
2006-05-04 19:39:47 +03:00
unknown
1db5a3606a Added code to remove closing comment code from event text, as would be
supplied inside a  /*!VERSION event-text */  segment.  (Fixes Bug#18078


mysql-test/t/disabled.def:
  Enabling 'mysqldump' test because events should load normally now.
mysql-test/t/mysqldump.test:
  Add spaces and tabs to the end of statements, to prove trimming of 
  whitespace.
sql/event_timed.cc:
  Remove  */  close-comment characters at the end, just as sp_head does.
      
  The parser should be smarter about not giving us text that jumps semantic 
  levels, but that's an issue for another day.
2006-05-03 09:55:34 -04:00
unknown
185a319221 fix for bug #19170 (Event creation leads to 100% CPU usage)
sql/event_timed.cc:
  - fix 100% cpu usage problem. If time_now==last_exec then don't schedule
    the event for time_now but increase the multiplier
  - if time_now is between STARTS and ENDS (the latter is set) or after STARTS
    (ENDS is not set) and there was no previous execution (imagine disabled
    scheduler being started) then don't schedule for time_now but for STARTS
    and then get_next_time() will find the correct time.
2006-04-18 22:21:43 +03:00
unknown
3fe07e2785 manual merge
mysql-test/r/events.result:
  Auto merged
sql/event.cc:
  Auto merged
sql/event_timed.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
2006-04-07 09:18:29 +02:00
unknown
7c59699345 fix for bug #17494 (The algorithm for calculating execution times is not fully correct)
This also should fix 17493 and 17346, and probably 16397 (not tested).
WL#1034 (Internal CRON)
(post-review commit)


mysql-test/r/events.result:
  update result
mysql-test/t/events.test:
  update test
sql/event.cc:
  seems we get a crash if we compile it this way. better let the worker thread do it,
  this increases the stability.
sql/event_executor.cc:
  kick in more often
sql/event_timed.cc:
  - don't NULLify last_executed
  - implement (fix) better get_next_time() which does not use last_executed as basis
    but STARTS. STARTS is used as basis and the next point of time which is before ENDS,
    if set, is being found. The point > now and (point-starts) % interval_expression == 0.
sql/item_timefunc.cc:
  move calc_time_diff to time.cc as it can be reused in other parts of the 
  server code (see event_timed.cc)
sql/mysql_priv.h:
  export calc_time_diff() moved to time.cc from item_timefunc.cc
sql/sql_show.cc:
  - fix presenting of LAST_EXECUTED
  - cleanup a bit
sql/time.cc:
  - move calc_time_diff() from item_timefunc.cc to here
2006-04-07 09:08:58 +02:00
unknown
a9e6af8ddf manual merge
sql/event_timed.cc:
  Auto merged
2006-03-17 09:40:48 +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
c46b93eee0 Merge calliope.local:/Users/cmiller/work/src/mysql-5.1-new
into  calliope.local:/Users/cmiller/work/src/mysql-5.1-new__cleanup_mysqldump


client/mysqldump.c:
  Auto merged
mysql-test/r/mysqldump.result:
  Auto merged
mysql-test/t/mysqldump.test:
  Auto merged
sql/event_timed.cc:
  Auto merged
2006-03-09 22:23:35 -05:00
unknown
3c7a8c3748 Fixed portability issue in 5.1 to include parsers from other applications.
sql/event_timed.cc:
  Added support for new parser function
sql/sql_partition.cc:
  Change calling parser name.
2006-03-09 17:37:59 -08:00
unknown
3840774309 Added code to mysqldump to dump timed events when instructed to do so, with
the '-E' or '--events' flag.  (Closes Bug#16853 and Bug#17714.)


WARNING:

At present, these tests fail due to b*g number 18078.


client/mysqldump.c:
  Added code to dump events, when asked to do so via the --events parameter.
  
  Also cleaned up some surrounding code.
mysql-test/r/mysqldump.result:
  Added a test to create an event, dump it, restore it, add more events, dump
  all of them, and restore all of them.
mysql-test/t/mysqldump.test:
  Added a test to create an event, dump it, restore it, add more events, dump
  all of them, and restore all of them.
sql/event_timed.cc:
  No longer qualify SHOW CREATE EVENT names with the database name.
BitKeeper/etc/ignore:
  Removing accidentally 'ignored' bogus file entry.
2006-03-09 15:12:43 -05: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
f3f39d2b35 Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into lmy004.:/work/mysql-5.1-bug17494


sql/event_timed.cc:
  Auto merged
2006-03-02 21:02:00 +01:00
unknown
24052d674a Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into lmy004.:/work/mysql-5.1-bug16406


sql/event_timed.cc:
  Auto merged
2006-03-02 10:03:48 +01:00
unknown
265df624cc fix for bug #16413 (Events: statements don't appear in the general query log)
WL#1034


mysql-test/t/events_logs_tests-master.opt:
  Rename: mysql-test/t/events_slow_query-master.opt -> mysql-test/t/events_logs_tests-master.opt
sql/event_timed.cc:
  ask the anonymous SP to log general statements
sql/sp_head.cc:
  save the OPTION_LOG_OFF and restore it after execution
sql/sp_head.h:
  add a new flag for general log
mysql-test/r/events_logs_tests.result:
  update result file
mysql-test/t/events_logs_tests.test:
  add test for general log
2006-03-01 16:27:57 +01:00
unknown
d576ca1815 fix for bug #16426
Events: Event-caused statements don't appear in the slow query log
WL#1034


sql/event_executor.cc:
  enable slow logging
sql/event_timed.cc:
  enable slow logging for the anonymous SP
sql/sp_head.cc:
  allow thd->enable_slow_log to be TRUE if only
  m_flags & sp_head::LOG_SLOW_STATEMENTS
  Because usually enable_slow_log is 1 in user mode, this second
  check is needed backup the mode otherwise.
sql/sp_head.h:
  add a new constant for slow queries. SP by default does not log slow queries in the
  body just the whole CALL could be considered as slow if taking too much time and
  called directly from the user
sql/sql_parse.cc:
  let us see in the the trace log
2006-03-01 02:34:22 +01:00
unknown
d8bd689d2d fix problem
Error: Freeing unallocated data at line 900, 'sql_db.cc'
(
 DROP DATABASE frees thd->db for everything but thd->slave_thread=1
 however we are not slave thread and more bugs could appear if we 
 pretend to be, then we will be good boys and just strdup the value.
 If not DROP DATABASE then THD::~THD() will free the value.
)


sql/event_timed.cc:
  fix problem 
  Error: Freeing unallocated data at line 900, 'sql_db.cc'
  (
   DROP DATABASE frees thd->db for everything but thd->slave_thread=1
   however we are not slave thread and more bugs could appear if we 
   pretend to be, then we will be good boys and just strdup the value.
   If not DROP DATABASE then THD::~THD() will free the value.
  )
  - fix also a bad message
2006-03-01 02:11:58 +01:00
unknown
11c7dbd3a5 fix compiler warnings: precision loses, unused vars
the warnings came from MSFT compiler (output of pushbuild)


sql/event.cc:
  fix compiler warnings: precision loses, unused vars
sql/event_executor.cc:
  fix compiler warnings: precision loses, unused vars
sql/event_timed.cc:
  fix compiler warnings: precision loses, unused vars
2006-02-28 20:32:37 +01:00
unknown
58a6d96c8f class event_timed -> Event_timed
fix for bug#17793 (Scheduler uses class event_timed should be Event_timed)


sql/event.cc:
  class event_timed -> Event_timed
sql/event.h:
  class event_timed -> Event_timed
sql/event_executor.cc:
  class event_timed -> Event_timed
sql/event_priv.h:
  class event_timed -> Event_timed
sql/event_timed.cc:
  class event_timed -> Event_timed
sql/sql_lex.h:
  class event_timed -> Event_timed
sql/sql_show.cc:
  class event_timed -> Event_timed
sql/sql_yacc.yy:
  class event_timed -> Event_timed
2006-02-28 18:33:38 +01:00
unknown
b934539d77 fix for bug#16537
(post-review pre-push changes)
coding style (mostly trailing spaces removed)


mysql-test/r/events.result:
  fix result file
sql/event.cc:
  - remove trailing spaces
  - add a missing initializer (gcc warning)
  - C++ to C comments
sql/event_executor.cc:
  - fix coding style (C++ to C comments, remove trailing spaces)
  - fix wrong indexing buggie not found till now (queue indexing is 0 based,
    not 1 based)
sql/event_timed.cc:
  - fix coding style
2006-02-28 14:43:49 +01:00
unknown
f6f5292145 manual merge
mysql-test/r/events.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event.cc:
  Auto merged
sql/event.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2006-02-28 12:08:13 +01:00
unknown
317c6851ba fix for bug#16537 (Events: mysql.event.starts is null)
- now when the event is created and STARTS is omitted then STARTS is implicitly
  CURRENT_TIMESTAMP
- This CS also fixed incorrect presentation of STARTS/ENDS in I_S.EVENTS
(incorporated review changes)


mysql-test/r/events.result:
  results of new test cases
mysql-test/t/events.test:
  new test cases for bug #16537 (Events: mysql.event.starts is null)
sql/event.cc:
  - check whether event_timed::starts_null only in case
    event_timed::expression is set, so for recurring events only
  - disable binlogging of CREATE EVENT statement. It should not be
    replicated but the result of the execution. Still the replication is
    untouched topic.
sql/event.h:
  - add flags whether starts, ends and execute_at are null or not
sql/event_executor.cc:
  - check whether xxx_null instead of !xxxx.year
sql/event_timed.cc:
  - introduce xxx_null and change the usage of xxx.year to !xxx_null
sql/sql_show.cc:
  - don't show 0000-00-00 in I_S.EVENTS when the value is NULL
sql/sql_yacc.yy:
  - if STARTS is omitted default to current_timestamp
2006-02-28 11:43:10 +01:00
unknown
4f2d6f1158 fix for bug #16411 (Microseconds are allowed for events)
sql/event_timed.cc:
  fix problem during merge
2006-02-24 14:02:26 +01:00
unknown
d7d068ea22 merge
mysql-test/r/events.result:
  Auto merged
sql/event.cc:
  Auto merged
sql/event.h:
  Auto merged
sql/event_executor.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/event_timed.cc:
  manual merge
2006-02-24 12:03:32 +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
e41f5cc464 manual merge
sql/event.cc:
  Auto merged
sql/event.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
2006-02-21 00:01:39 +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
unknown
17fb7f96a2 fix for bug #16411 Events: Microsecond intervals are allowed
WL#1034


mysql-test/r/events.result:
  output fix
sql/event.cc:
  - handle also INTERVAL_MICROSECOND, was missing.
  - use renamed ER_ code which is generic
sql/event.h:
  add new error code
sql/event_executor.cc:
  - use new ER_ code name
  - handle EVEX_MICROSECOND_UNSUP error code
sql/event_timed.cc:
  forbid MICROSECOND intervals for events
sql/share/errmsg.txt:
  rename error code, it's generic
sql/sql_show.cc:
  use new error code name
sql/sql_yacc.yy:
  bail out if any MICROSECOND interval is specified
2006-02-20 16:06:05 +01:00
unknown
f39aca3f86 fix for bug#17543 Creating Event crash the server
this problem affects only debug builds


mysql-test/r/events.result:
  update results
mysql-test/t/events.test:
  tests for bug#17543 Creating Event crash the server
sql/event_timed.cc:
  the delimiter between DO and the body could be not only a space
  but any other recognized white space, so use proper macro.
2006-02-16 16:11:02 +01:00
unknown
c80a0d7171 fix bug in show events which shows
| INTERVAL_VALUE | INTERVAL_FIELD |
| 20             | 20 MINUTE      |
the second one should be without the value


mysql-test/r/events.result:
  update test result to be as they should be
sql/event_timed.cc:
  manually append the name of the interval because it's no more appended
  by reconstruct_value
2006-02-16 13:11:16 +01:00
unknown
89f598eea9 small post-merge fixes for bug#16406
(pre-push)


mysql-test/r/events.result:
  update result
mysql-test/t/events.test:
  few more tests
sql/event.cc:
  fix compilation failure after big merge
sql/event.h:
  initialize s_ctx to be the context to be used.
  don't use sphead->m_security_ctx but we will copy 
  the initted ctx to there
sql/event_timed.cc:
  -initialize s_ctx to be the context to be used.
  don't use sphead->m_security_ctx but we will copy 
  the initted ctx to there
  
  - first init the context
  - then compile the event
  - and then copy the context
  - don't use mysql_change_db() for now change_security_context() gets the
    right context info
2006-02-16 05:21:02 +01:00
unknown
74b2989dc4 merge
mysql-test/r/events.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event_priv.h:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/event.cc:
  manual merge
sql/event.h:
  manual merge
sql/event_executor.cc:
  manual merge
sql/event_timed.cc:
  manual merge
2006-02-16 01:27:36 +01:00
unknown
fea4742db5 fix for bug#16406 (Events: DROP DATABASE doesn't automatically drop events)
WL#1034
- This changeset also changes the executor so its quite more stable now.
  Stressing test case added that executes ~800 events per second and dropping
  hundreds of events at once using DROP DATABASE.
(with fixes after review of JimW)
(with fixes after review of Serg)


mysql-test/r/events.result:
  update results after TRIGGER_ACL was added
mysql-test/t/events.test:
  -redundant line
sql/event.cc:
  Implemented evex_db_drop_events() which drops all events
  from a specific database. Needed for SQLCOM_DROP_DATABASE
sql/event.h:
  - protect the event better (see the changes to event_executor.cc
    and event.cc). An event object could be used in a spawned thread
    before it's executed but till now the object is marked as being
    executed when the anonymous sp_head is executed. However, there are
    timeframes before and after that during which the event is not marked
    as executed and other thread may delete the object -> so we end with
    a nirvana pointer.
sql/event_executor.cc:
  - extract some of the code executed in the main thread to a function. Too long
    functions are bad for the overview.
  - prepend all information/error messages to the console with "SCHEDULER:" for
    better overview, and easied searching in the log tables.
sql/event_priv.h:
  - change the name, of evex_db_find_event_by_name() and don't
    used C++ features like function overloading
  - define consts for result returned from event_timed::spawn_now()
sql/event_timed.cc:
  - add few methods related to event execution.
    now the event spawns the worker thread and
    passes itself as parameter. This way it locks itself for exectution
    first and then spawning -> no race condition. When the worker thread
    has finished working with the reference it calls back
    event_timed::spawn_thread_finish() to unlock itself.
sql/sql_db.cc:
  - call evex_drop_db_events() on DROP DATABASE
2006-02-16 00:43:11 +01:00
unknown
ea8a26c6f3 build fixes
sql/event.cc:
  - make this not unsigned. gcc complains
sql/event_timed.cc:
  acl_getroot_no_password() is not there in libmysqld, disable it's usage
  in this case.
sql/set_var.cc:
  fix for the broken build of Serg. gcc seems to be pretty happy without
  the return and returns the value of the last statement
2006-02-15 23:43:11 +01:00
unknown
4e2b90b124 more cosmetic before push of fix for bug#17289
sql/event_timed.cc:
  - fix comment
  - use mysql_change_db() this will check for us
2006-02-15 22:32:25 +01:00
unknown
8fd74f314b merging before test + push
mysql-test/r/events.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event.h:
  Auto merged
sql/event_timed.cc:
  manual merge
2006-02-15 21:51:57 +01:00
unknown
9d5bf35d6a Fix the coding style in a few new files. 2006-02-15 21:08:44 +03:00
unknown
1161b5213d Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into lmy004.:/work/mysql-5.1-bug17289


mysql-test/r/events.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event.h:
  Auto merged
sql/event_executor.cc:
  Auto merged
sql/event_timed.cc:
  Auto merged
2006-02-14 19:44:10 +01:00
unknown
752cadd453 manual merge
mysql-test/r/events.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event.h:
  Auto merged
sql/event_executor.cc:
  Auto merged
sql/event_timed.cc:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_acl.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
sql/table.h:
  Auto merged
2006-02-14 17:05:36 +01:00
unknown
8d4f74be2d - final fixes for bug#16431 (Events: An event which alters itself disappears)
- fix for bug#16423 (Events: SHOW CREATE EVENT doesn't work)
- this Changeset commits makes CREATE/UPDATE/DELETE EVENT real DDL statements
  by committing the currently open transaction before they are executed.
- this Changeset also fixes a trailing space problem since the very early days
  of the internal cron
- adds sophisticated checking of whether mysql.event was tampered accidentally
  or with purpose by an user.
- adds a lot of inline function documentation - documents everything left
  uncodumented
- INTERVAL_XXXX to XXX in I_S.EVENTS.INTERVAL_FIELD

WL#1034 (Internal CRON)


mysql-test/r/events.result:
  update result
mysql-test/t/events.test:
  add test cases for SHOW CREATE EVENT
  add test cases where the structure of mysql.event is changed and error reporting in this case
sql/event.cc:
  - do a lot more checking on mysql.event whether it's valid
    introduced generic function table_check_intact() which can be used also
    for checking whether a system table (mysql.*) has been tampered by user
    and report an error in this case. The checking is quite strict, thus
    maybe some mechanism can be added later that loosens this like some
    session variable, for instance, i_am_aware_that_i_can_damage_my_data
    so the table will be opened nevertheless we think that it's not valid.
  - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
  - document a loooot. not a single function left undocumented.
sql/event.h:
  - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
  - change get_show_create_event() to get_create_event()
  - add TABLE_FIELD_W_TYPE used by table_check_intact()
  - add event_timed::sql_mode so it can be used by show create event. currently
    always 0, will be fixed by a patch for another bug. At least makes the code
    of show create event complete.
sql/event_executor.cc:
  - add evex_check_system_tables() that checks on boot and event
    main thread startup that mysql.db and mysql.user tables are correct.
  - document everything!
sql/event_priv.h:
  remove a line
sql/event_timed.cc:
  - implement SHOW CREATE EVENT
  - document undocumented functions!
sql/share/errmsg.txt:
  - fix an error message and add two new
sql/sql_acl.cc:
  - add mysql.db table definition to use by table_check_intact()
  - exchange some of the positions by numbers from mysql.db to enum names (see sql_acl.h)
sql/sql_acl.h:
  - define the structure of mysql.db table
sql/sql_parse.cc:
  - handle SQLCOM_SHOW_CREATE_EVENT
  - end the current transaction becase CREATE/UPDATE/DELETE EVENT is a DDL
    statement
sql/sql_show.cc:
  - remove interval_type_to_name
  - use common function event_reconstruct_interval_expression()
    that reconstructs the expression given at create/alter, to some
    extent - interval of 2:62 MINUTE_SECOND will be reconstructed as
    interval of 3:02 MINUTE_SECOND!
sql/sql_yacc.yy:
  init the definer of event_timed also when doing SHOW CREATE EVENT
  because it's needed for checking into mysql.event
sql/table.cc:
  - remove stale code. only mysql.event should be a 'system_table'
  - add table_check_intact() to check the consistency of a table.
    mostly usable with mysql.xxx tables.
sql/table.h:
  - export TABLE_FIELD_W_TYPE and table_check_intact() which are used for 
    checking the structure of a table. mostly usable for mysql.xxx tables.
2006-02-14 16:20:48 +01:00
unknown
5b497b163a fix for bug #17289 Events: missing privilege check for drop database
Events were executed with all privileges possible on planet Earth :(
WL#1034


mysql-test/r/events.result:
  update test results
mysql-test/t/events.test:
  test for bug#17289 Events: missing privilege check for drop database
sql/event.h:
  -add two new methods to event_timed to change and restore
   the security context
sql/event_executor.cc:
  - move code regarding privilieges checking to event_timed::execute()
  - add a new function evex_print_warnings() which prints the notes/warnings/errors
    to the console (easily capturable with logs-into-tables) so one can see what
    has happened if there was an error of some sort!
sql/event_timed.cc:
  - fix documentation
  - add a new error code -99, EVENT was revoked from the user on the DB
  - set_sec_ctx, execute, restore_sex_ctx
sql/sql_error.cc:
  - make warning_level_names public to be used in event_executor.cc
  - change from 2 arrays to a LEX_STRING array
2006-02-10 15:02:57 +01:00
unknown
9b479e0373 Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into lmy004.:/work/mysql-5.1-events_i_s


sql/event_timed.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2006-02-07 19:37:26 +01:00
unknown
99eb6eb661 - fix for bug #16414 (Events: Crash or hang if event drops itself)
WL#1034 (Internal CRON)
(with post-review fix)


mysql-test/r/events.result:
  update the result
mysql-test/t/events.test:
  use --sleep instead of select sleep()
  enable some scheduler related tests. They were disabled because of a hang that
  happened. The hang is fixed with this bugfix.
sql/event.cc:
  - evex_remove_from_cache reports back whether the in_memory
    object was deleted or was scheduled. In case scheduling then
    don't delete it from outside but let it do it itself
  - move out db interaction code out of evex_drop_event to db_drop_event
    so it can be called from outter space :)
sql/event_priv.h:
  - export the new function db_drop_event()
sql/event_timed.cc:
  - use db_drop_event() and don't implement the dropping ourselves
sql/sql_parse.cc:
  - some debug info about the status code returned.
2006-02-07 19:28:33 +01:00
unknown
c4f91d17b7 Merge mysql.com:/usr/local/mysql/mysql-5.1-win-fixes
into  mysql.com:/usr/local/mysql/x/mysql-5.1-new


VC++Files/sql/mysqld.vcproj:
  Auto merged
sql/event.h:
  Auto merged
sql/event_executor.cc:
  Auto merged
sql/event_timed.cc:
  Auto merged
sql/handler.h:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/sql_partition.cc:
  Auto merged
VC++Files/client/mysqldump.vcproj:
  Manual merge.
2006-01-30 17:57:20 +01:00
unknown
e5eea47c67 post-merge fixes of fix for bug#16642 (No I_S.EVENTS table)
WL#1034 (Internal CRON)


mysql-test/r/events.result:
  fix result of t/events (post-merge fix of bug #16642)
mysql-test/r/system_mysql_db.result:
  fix result(post-merge fix of bug #16642)
mysql-test/t/events.test:
  fix test, use --echo instead of select, fix failing create event statement
sql/event_timed.cc:
  add a bit more debug information
2006-01-30 17:12:30 +01:00
unknown
2272e140fd post-commit merge
mysql-test/lib/init_db.sql:
  Auto merged
scripts/mysql_create_system_tables.sh:
  Auto merged
scripts/mysql_fix_privilege_tables.sql:
  Auto merged
sql/event.cc:
  Auto merged
sql/event.h:
  Auto merged
sql/event_executor.cc:
  Auto merged
sql/event_priv.h:
  Auto merged
sql/event_timed.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/events.result:
  manual merge
mysql-test/r/system_mysql_db.result:
  manual merge
mysql-test/t/events.test:
  manual merge
2006-01-30 14:28:48 +01:00