Commit graph

67 commits

Author SHA1 Message Date
Dmitry Shulga
56a735b782 Fixed bug#12546938 (formerly known as 61005) - CREATE IF NOT EXIST EVENT
will create multiple running events.

A CREATE IF NOT EXIST on an event that existed and was enabled caused
multiple instances of the event to run. Disabling the event didn't  help.
If the event was  dropped, the event stopped running, but when created
again, multiple instances of the event were still running. The only way
to get out of this situation was  to restart the server.

The problem was that Event_db_repository::create_event() didn't return
enough information to discriminate between situation when event didn't
exist and was created and when event did exist and was not created
(but a warning was emitted). As result in the latter case event
was added to in-memory queue of events second time. And this led to
unwarranted multiple executions of the same event.

The solution is to add out-parameter to Event_db_repository::create_event()
method which will signal that event was not created because it already
exists and so it should not be added to the in-memory queue.


mysql-test/r/events_bugs.result:
  Added results for test for Bug#12546938.
mysql-test/t/events_bugs.test:
  Added test for Bug#12546938.
sql/event_db_repository.cc:
  Event_db_repository::create_event was modified: set newly added out-parameter
  event_already_exists to true value if event wasn't created because event
  already existed and IF NOT EXIST clause was present.
sql/event_db_repository.h:
  Added out-parameter 'event_already_exists' to create_event() method.
sql/events.cc:
  Events::create_event was modified: insert new element into
  event queue only if event was actually created.
2011-05-27 16:23:08 +07:00
Mayank Prasad
08e472ff34 Bug#11751148 : show events shows events in other schema
Issue:
======
Test case Correction for bug#11751148.

mysql-test/r/events_bugs.result:
  Result file Correction for bug#11751148.
mysql-test/t/events_bugs.test:
  Test case Correction for bug#11751148.
2011-03-28 21:01:37 +05:30
Mayank Prasad
c8b724b2aa Bug #11751148 : show events shows events in other schema
Issue:
------
Due to prefix match, database like 'k' was matching with 'ka' and events of 'ka' we getting displayed for 'show event' of 'k'.

Resolution:
-----------
Scan for listing of events in a schema is made to be done on exact match of database (schema) name instead of just prefix.

mysql-test/r/events_bugs.result:
  modified expected file with the expected results.
mysql-test/t/events_bugs.test:
  added a test case to reproduce the scenario.
sql/event_db_repository.cc:
  Scan for schema name is made to be done on exact db name match.
2011-03-21 21:32:47 +05:30
Davi Arnaut
402bc523b2 Bug#36540: CREATE EVENT and ALTER EVENT statements fail with large server_id
The problem is that creating a event could fail if the value of
the variable server_id didn't fit in the originator column of
the event system table. The cause is two-fold: it was possible
to set server_id to a value outside the documented range (from
0 to 2^32-1) and the originator column of the event table didn't
have enough room for values in this range.

The log tables (general_log and slow_log) also don't have a proper
column type to store the server_id and having a large server_id
value could prevent queries from being logged.

The solution is to ensure that all system tables that store the
server_id value have a proper column type (int unsigned) and that
the variable can't be set to a value that is not within the range.

mysql-test/r/events_bugs.result:
  Add test case result for Bug#36540
mysql-test/r/log_tables.result:
  Update column type.
mysql-test/r/system_mysql_db.result:
  Update column type.
mysql-test/r/variables.result:
  Add test case result for server_id value range.
mysql-test/suite/sys_vars/r/server_id_basic_64.result:
  Update test case results.
mysql-test/t/events_bugs.test:
  Add test case for Bug#36540
mysql-test/t/log_tables.test:
  Fix column type.
mysql-test/t/variables.test:
  Add test case for server_id value range.
scripts/mysql_system_tables.sql:
  Columns that store the server_id value must be of type INT UNSIGNED,
  fix event (originator), general_log and slow_log (server_id) tables
  in accordance.
scripts/mysql_system_tables_fix.sql:
  Columns that store the server_id value must be of type INT UNSIGNED,
  fix event (originator), general_log and slow_log (server_id) tables
  in accordance.
sql/mysqld.cc:
  Set min and max values for the server_id variable.
  Unfortunately we can't easily change server_id variable type
  from ulong to uint32 because of the sys_var classes.
2009-03-11 17:30:56 -03:00
Luis Soares
df8543868d merge: 5.1 -> 5.1-rpl
conflicts:
  Text conflict in client/mysqltest.cc
  Text conflict in mysql-test/include/wait_until_connected_again.inc
  Text conflict in mysql-test/lib/mtr_report.pm
  Text conflict in mysql-test/mysql-test-run.pl
  Text conflict in mysql-test/r/events_bugs.result
  Text conflict in mysql-test/r/log_state.result
  Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
  Text conflict in mysql-test/r/mysqlcheck.result
  Text conflict in mysql-test/r/query_cache.result
  Text conflict in mysql-test/r/status.result
  Text conflict in mysql-test/suite/binlog/r/binlog_index.result
  Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
  Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
  Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
  Text conflict in mysql-test/t/disabled.def
  Text conflict in mysql-test/t/events_bugs.test
  Text conflict in mysql-test/t/log_state.test
  Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
  Text conflict in mysql-test/t/mysqlcheck.test
  Text conflict in mysql-test/t/query_cache.test
  Text conflict in mysql-test/t/rpl_init_slave_func.test
  Text conflict in mysql-test/t/status.test
2009-01-23 13:22:05 +01:00
Matthias Leich
f0d1d53335 1. Fix for Bug#41111 events_bugs fails sporadically on pushbuild
2. Avoid bad effects of bug 41925 Warning 1366 Incorrect string value:
                                  ...  for column processlist.info
3. Add poll routines which ensure that subtests meet stable scenarios.
   This does not change the sense of the subtests.
2009-01-09 15:10:03 +01:00
Andrei Elkin
ca2d184695 merging 5.1 -> 5.1 rpl. 3 of 4 conflicts are resolved similarly to 6.0->6.0-rpl merging.
mysql_upgrade results changed due to the error messesge of mysqlcheck has changed.
2008-11-12 19:51:47 +02:00
Matthias Leich
d2603f9aed - Fix for Bug #39848, #39863, #39978, #39569
Bug#39848 events_bugs fails sporadically on pushbuild
            (missing rows in table event_log)
     Details: Reimplement the subtest for BUG 28924
              - check if the number of rows within the table
                event_log changes but don't print rows
                because the number varies depending on
                load on testing box
              - shift DROP USER befor DROP EVENT
                = Subtest fits again to old bug
              - remove no more needed comments + variables
  Bug#39863 events_bugs fails sporadically on pushbuild 
            (extra processes in I_S.PROCESSLIST)
     Details: Abort with appropriate message to the protocol if
              release_lock() does not has the intended effect.
              This cannot prevent problems caused by the probably
              buggy release_lock() but it reveals if we had a
              problem in this area.
  Bug#39978 main.events_bugs does not clean up
     Detail: Restore global.event_scheduler = ON at end of test
  Bug#39569 events_bugs fails sporadically on pushbuild
            (should have failed with errno 1539)
     Detail: Set $wait_timeout to 4 instead of 2
- Fix two instabilities (result sets pulled from processlist in
  subtest for bug 16407) which were found during tests with high
  parallel I/O load
- Minor improvements of formatting
  Details:
  - Add comments
  - Remove tabs and trailing blanks
  - Add line breaks for better readability
2008-11-04 12:27:21 +01:00
unknown
ed6b8e2274 Restore settings before test ends 2008-04-09 09:48:06 +02:00
unknown
1b6b7010a6 Bug#32633 Can not create any routine if SQL_MODE=no_engine_substitution
The problem is that one can not create a stored routine if sql_mode
contains NO_ENGINE_SUBSTITUTION or PAD_CHAR_TO_FULL_LENGTH. Also when
a event is created, the mode is silently lost if sql_mode contains one
of the aforementioned.  This was happening because the table definitions
which stored sql_mode values weren't being updated to accept new values
of sql_mode.

The solution is to update, in a backwards compatible manner, the various
table definitions (columns) that store the sql_mode value to take into
account the new possible values. One incompatible change is that if a event
that is being created can't be stored to the mysql.event table, an error
will be raised.

The tests case also ensure that new SQL modes will be added to the mysql.proc
and mysql.event tables, otherwise the tests will fail.


mysql-test/r/events_bugs.result:
  Add test case result for Bug#32633
mysql-test/r/information_schema.result:
  Update the sql_mode column definition.
mysql-test/r/sp.result:
  Add test case result for Bug#32633
mysql-test/r/system_mysql_db.result:
  Update the sql_mode column definition.
mysql-test/t/events_bugs.test:
  Add test case for Bug#32633
mysql-test/t/sp.test:
  Add test case for Bug#32633
mysql-test/t/system_mysql_db_fix50117.test:
  Update the sql_mode column definition.
scripts/mysql_system_tables.sql:
  Update the sql_mode column definition.
scripts/mysql_system_tables_fix.sql:
  Update the sql_mode column definition.
sql/event_db_repository.cc:
  Reset and restore SQL modes when storing and loading a
  event from the data dictionary. Also throw out a error
  if a store fails.
sql/mysqld.cc:
  Add warning to avoid this problem in the future.
sql-common/my_user.c:
  Truncate length if user name or host name does not fit
  in the buffer.
sql/sp.cc:
  SQL mode of the thread must not effect data dictionary operations.
2008-02-07 08:47:39 -02:00
unknown
0190008095 Merge lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-base
into  lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-rt-merge


mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/t/information_schema.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-11-21 18:42:15 -07:00
unknown
711cf7503d Merge mysql.com:/home/gluh/MySQL/Merge/5.1
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt


BitKeeper/etc/ignore:
  auto-union
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/partition.result:
  Auto merged
mysql-test/r/ps_2myisam.result:
  Auto merged
mysql-test/r/ps_3innodb.result:
  Auto merged
mysql-test/r/ps_4heap.result:
  Auto merged
mysql-test/r/ps_5merge.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/partition.test:
  Auto merged
mysql-test/t/subselect.test:
  Auto merged
mysql-test/t/variables.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/ha_partition.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_plugin.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_udf.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
mysql-test/r/select.result:
  manual merge
mysql-test/t/select.test:
  manual merge
2007-11-14 17:30:16 +04:00
unknown
130f9b9f50 Many files:
Error message numbers.


mysql-test/r/binlog_unsafe.result:
  Error message numbers.
mysql-test/r/events_bugs.result:
  Error message numbers.
mysql-test/r/events_trans.result:
  Error message numbers.
mysql-test/r/sp_gis.result:
  Error message numbers.
mysql-test/r/xml.result:
  Error message numbers.
mysql-test/suite/rpl/r/rpl_incident.result:
  Error message numbers.
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
  Error message numbers.
mysql-test/suite/rpl/r/rpl_udf.result:
  Error message numbers.
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
  Error message numbers.
mysql-test/suite/ndb/r/ndb_dd_basic.result:
  Error message numbers.
mysql-test/suite/ndb/r/ndb_dd_ddl.result:
  Error message numbers.
mysql-test/suite/ndb/r/ndb_gis.result:
  Error message numbers.
mysql-test/suite/ndb/r/ndb_row_format.result:
  Error message numbers.
mysql-test/suite/ndb/r/ndb_single_user.result:
  Error message numbers.
2007-10-27 01:40:48 +05:00
unknown
c6e00be97f Bug #31332 --event-scheduler option misbehaving
Changed the behaviour of the --event-scheduler option when used without an arguments. It
now turns the option on.


mysql-test/r/events_bugs.result:
  Test that --event-scheduler with no options in events_bugs-master.opt turns the option
  on.
mysql-test/t/events_bugs.test:
  Test that --event-scheduler with no options in events_bugs-master.opt turns the option
  on.
sql/events.cc:
  Changed the behaviour of the --event-scheduler option when used without an arguments.
  It now turns the option on.
mysql-test/t/events_bugs-master.opt:
  Test that --event-scheduler with no options in events_bugs-master.opt turns the option
  on.
2007-10-22 15:16:43 -04:00
unknown
66cd6d0c8f Patch for BUG#31111: --read-only crashes MySQL (events fail to load).
There actually were several problems here:
  - WRITE-lock is required to load events from the mysql.event table,
    but in the read-only mode an ordinary user can not acquire it;
  - Security_context::master_access attribute was not properly
    initialized in Security_context::init(), which led to differences
    in behavior with and without debug configure options.
  - if the server failed to load events from mysql.event, it forgot to
    close the mysql.event table, that led to the coredump, described
    in the bug report.

The patch is to fix all these problems:
  - Use the super-user to acquire WRITE-lock on the mysql.even table;
  - The WRITE-lock is acquired by the event scheduler in two cases:
    - on initial loading of events from the database;
    - when an event has been executed, so its attributes should
      be updated.
    Other cases when WRITE-lock is needed for the mysql.event table
    happen under the user account. So, nothing should be changed there
    for the read-only mode. The user is able to create/update/drop
    an event only if he is a super-user.
  - Initialize Security_context::master_access;
  - Close the mysql.event table in case something went wrong.


mysql-test/r/events_bugs.result:
  Update result file.
mysql-test/t/events_bugs.test:
  A test case for BUG#31111: --read-only crashes MySQL (events fail
  to load).
sql/event_data_objects.cc:
  When the worker thread is going to drop event after the execution
  we should do it under the super-user privileges in order to be able
  to lock the mysql.event table for writing in the read-only mode.
  
  This is a system operation, where user SQL can not be executed.
  So, there is no risk in compromising security by dropping an event
  under the super-user privileges.
sql/event_db_repository.cc:
  1. Close tables if something went wrong in simple_open_n_lock_tables();
  2. As soon as the system event scheduler thread is running under
     the super-user privileges, we should always be able to acquire
     WRITE-lock on the mysql.event table. However, let's have an assert
     to check this.
sql/event_scheduler.cc:
  Run the system event scheduler thread under the super-user privileges.
  In particular, this is needed to be able to lock the mysql.event table
  for writing when the server is running in the read-only mode.
  
  The event scheduler executes only system operations and does not
  execute user SQL (this is what the worker threads for). So, there
  is no risk in compromising security by running the event scheduler
  under the super-user privileges.
sql/events.cc:
  Open the mysql.event table as the super user to be able to acquire
  WRITE-lock in the read-only mode.
sql/sql_class.cc:
  Initialize Security_context::master_acces.
2007-10-19 19:57:08 +04:00
unknown
c0d75796cd Many files:
Merge with 5.0-opt.


mysql-test/r/binlog_unsafe.result:
  Merge with 5.0-opt.
mysql-test/r/events_bugs.result:
  Merge with 5.0-opt.
mysql-test/r/events_trans.result:
  Merge with 5.0-opt.
mysql-test/r/sp.result:
  Merge with 5.0-opt.
mysql-test/r/sp_gis.result:
  Merge with 5.0-opt.
mysql-test/r/xml.result:
  Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_incident.result:
  Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
  Merge with 5.0-opt.
mysql-test/suite/rpl/r/rpl_udf.result:
  Merge with 5.0-opt.
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result:
  Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_dd_basic.result:
  Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_dd_ddl.result:
  Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_gis.result:
  Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_row_format.result:
  Merge with 5.0-opt.
mysql-test/suite/ndb/r/ndb_single_user.result:
  Merge with 5.0-opt.
2007-09-14 17:21:50 +02:00
unknown
03e379d36f Merge olga.mysql.com:/home/igor/mysql-5.1
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.1-opt-merge


mysql-test/include/read_many_rows.inc:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/innodb_mysql.result:
  Auto merged
mysql-test/r/read_many_rows_innodb.result:
  Auto merged
sql/handler.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_rcontext.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_class.h:
  Manual merge.
storage/innobase/handler/ha_innodb.cc:
  Manual merge.
2007-08-04 22:36:54 -07:00
unknown
6930e7dedf Many files:
Post-merge fix.


mysql-test/r/binlog_unsafe.result:
  Post-merge fix.
mysql-test/r/events_bugs.result:
  Post-merge fix.
mysql-test/r/events_trans.result:
  Post-merge fix.
mysql-test/r/sp.result:
  Post-merge fix.
mysql-test/r/sp_gis.result:
  Post-merge fix.
mysql-test/r/xml.result:
  Post-merge fix.
2007-08-03 13:07:37 +05:00
unknown
cfdd203549 Bug#28641 CREATE EVENT with '2038.01.18 03:00:00' let server crash.
Creating an EVENT to be executed at a time close to the end of the allowed
range (2038.01.19 03:14:07 UTC) would cause the server to crash. The
expected behavior is to accept all calendar times within the interval and
reject all other values without crashing.

This patch replaces the function 'sec_to_epoch_TIME' with a Time_zone API call.
This function was broken because it invoked the internal function 'sec_to_epoch'
without respecting the restrictions on the function parameters (and this caused
assertion failure). It also was used as a reverse function to
Time_zone_utc::gmt_sec_to_TIME which it isn't.


mysql-test/r/events_bugs.result:
  Added test case
mysql-test/t/events_bugs.test:
  Added test case
sql/event_data_objects.cc:
  Replaced function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
sql/event_db_repository.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/event_queue.cc:
  Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
  doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
  the function sec_since_epoch_TIME was used as a reverse function to the method
  my_tz_UTC::gmt_sec_to_TIME.
sql/tztime.cc:
  * Remove function 'sec_since_epoch_TIME' since it was implemented as
  a wrapper around 'sec_since_epoch' without taking parameter restrictions
  into account. The function was used to load information about event
  execution time from mysql.events table. Further more, the function wasn't
  the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
  by events code to store information about event execution time.
  
  * Added static Time_zone object for UTC+0 time zone.
sql/tztime.h:
  Include extern pointer to static Time_zone object.
2007-07-25 09:43:49 +02:00
unknown
146b0e1475 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


client/mysqldump.c:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/t/show_check.test:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_cache.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
mysql-test/r/events_bugs.result:
  Manual merge.
2007-07-16 17:22:33 +04:00
unknown
7416224c60 A fix for Bug#27406 Events: failure only causes a warning. Update test
results.
When executing a CREATE EVENT statement with ON COMPLETION NOT PRESERVE 
clause (explicit or implicit) and completion date in the past, we do not 
create the event. Or, put it differently, we create it and then drop 
immediately.
A warning is issued in this case, not an error -- we want to load 
successfully old database dumps, and such dumps may contain events
that are no longer valid.

Update the warning text to not imply an erroneous condition. 


mysql-test/r/events_bugs.result:
  Update the test results (Bug#27406)
sql/share/errmsg.txt:
  Fix Bug#27406 "Events: failure only causes a warning" -- update the error
  message to not imply that there was a failure.
2007-07-15 13:25:38 +04:00
unknown
09ee3a5ae1 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines.merge


include/my_base.h:
  Auto merged
mysql-test/lib/mtr_report.pl:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/rpl_sp.result:
  Auto merged
mysql-test/r/show_check.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
mysql-test/t/ndb_single_user.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/sql_partition.cc:
  Auto merged
2007-07-06 09:03:50 -07:00
unknown
218ae8f3b1 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-merge


include/my_base.h:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
sql/ha_partition.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
2007-07-01 20:56:47 -07:00
unknown
0852b3693f Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime


mysql-test/r/create.result:
  Auto merged
mysql-test/r/events_bugs.result:
  Auto merged
sql/event_data_objects.cc:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/table.cc:
  Auto merged
2007-07-02 01:35:52 +04:00
unknown
de0ba5c894 Corrected a test case. 2007-07-01 11:00:29 -07:00
unknown
e63f6f3223 Made test case platform independent. 2007-07-01 01:59:05 -07:00
unknown
405f82d390 Patch for the following bugs:
- BUG#11986: Stored routines and triggers can fail if the code
    has a non-ascii symbol
  - BUG#16291: mysqldump corrupts string-constants with non-ascii-chars
  - BUG#19443: INFORMATION_SCHEMA does not support charsets properly
  - BUG#21249: Character set of SP-var can be ignored
  - BUG#25212: Character set of string constant is ignored (stored routines)
  - BUG#25221: Character set of string constant is ignored (triggers)

There were a few general problems that caused these bugs:
1. Character set information of the original (definition) query for views,
   triggers, stored routines and events was lost.
2. mysqldump output query in client character set, which can be
   inappropriate to encode definition-query.
3. INFORMATION_SCHEMA used strings with mixed encodings to display object
   definition;

1. No query-definition-character set.

In order to compile query into execution code, some extra data (such as
environment variables or the database character set) is used. The problem
here was that this context was not preserved. So, on the next load it can
differ from the original one, thus the result will be different.

The context contains the following data:
  - client character set;
  - connection collation (character set and collation);
  - collation of the owner database;

The fix is to store this context and use it each time we parse (compile)
and execute the object (stored routine, trigger, ...).

2. Wrong mysqldump-output.

The original query can contain several encodings (by means of character set
introducers). The problem here was that we tried to convert original query
to the mysqldump-client character set.

Moreover, we stored queries in different character sets for different
objects (views, for one, used UTF8, triggers used original character set).

The solution is
  - to store definition queries in the original character set;
  - to change SHOW CREATE statement to output definition query in the
    binary character set (i.e. without any conversion);
  - introduce SHOW CREATE TRIGGER statement;
  - to dump special statements to switch the context to the original one
    before dumping and restore it afterwards.

Note, in order to preserve the database collation at the creation time,
additional ALTER DATABASE might be used (to temporary switch the database
collation back to the original value). In this case, ALTER DATABASE
privilege will be required. This is a backward-incompatible change.

3. INFORMATION_SCHEMA showed non-UTF8 strings

The fix is to generate UTF8-query during the parsing, store it in the object
and show it in the INFORMATION_SCHEMA.

Basically, the idea is to create a copy of the original query convert it to
UTF8. Character set introducers are removed and all text literals are
converted to UTF8.

This UTF8 query is intended to provide user-readable output. It must not be
used to recreate the object.  Specialized SHOW CREATE statements should be
used for this.

The reason for this limitation is the following: the original query can
contain symbols from several character sets (by means of character set
introducers).

Example:

  - original query:
    CREATE VIEW v1 AS SELECT _cp1251 'Hello' AS c1;

  - UTF8 query (for INFORMATION_SCHEMA):
    CREATE VIEW v1 AS SELECT 'Hello' AS c1;


client/mysqldump.c:
  Set original character set and collation before dumping definition query.
include/my_sys.h:
  Move out-parameter to the end of list.
mysql-test/lib/mtr_report.pl:
  Ignore server-warnings during the test case.
mysql-test/r/create.result:
  Update result file.
mysql-test/r/ctype_cp932_binlog_stm.result:
  Update result file.
mysql-test/r/events.result:
  Update result file.
mysql-test/r/events_bugs.result:
  Update result file.
mysql-test/r/events_grant.result:
  Update result file.
mysql-test/r/func_in.result:
  Update result file.
mysql-test/r/gis.result:
  Update result file.
mysql-test/r/grant.result:
  Update result file.
mysql-test/r/information_schema.result:
  Update result file.
mysql-test/r/information_schema_db.result:
  Update result file.
mysql-test/r/lowercase_view.result:
  Update result file.
mysql-test/r/mysqldump.result:
  Update result file.
mysql-test/r/ndb_sp.result:
  Update result file.
mysql-test/r/ps.result:
  Update result file.
mysql-test/r/rpl_replicate_do.result:
  Update result file.
mysql-test/r/rpl_sp.result:
  Update result file.
mysql-test/r/rpl_trigger.result:
  Update result file.
mysql-test/r/rpl_view.result:
  Update result file.
mysql-test/r/show_check.result:
  Update result file.
mysql-test/r/skip_grants.result:
  Update result file.
mysql-test/r/sp-destruct.result:
  Update result file.
mysql-test/r/sp-error.result:
  Update result file.
mysql-test/r/sp-security.result:
  Update result file.
mysql-test/r/sp.result:
  Update result file.
mysql-test/r/sql_mode.result:
  Update result file.
mysql-test/r/system_mysql_db.result:
  Update result file.
mysql-test/r/temp_table.result:
  Update result file.
mysql-test/r/trigger-compat.result:
  Update result file.
mysql-test/r/trigger-grant.result:
  Update result file.
mysql-test/r/trigger.result:
  Update result file.
mysql-test/r/view.result:
  Update result file.
mysql-test/r/view_grant.result:
  Update result file.
mysql-test/t/events.test:
  Update test case (new columns added).
mysql-test/t/information_schema.test:
  Update test case (new columns added).
mysql-test/t/show_check.test:
  Test case for SHOW CREATE TRIGGER in prepared statements and
  stored routines.
mysql-test/t/sp-destruct.test:
  Update test case (new columns added).
mysql-test/t/sp.test:
  Update test case (new columns added).
mysql-test/t/view.test:
  Update test.
mysys/charset.c:
  Move out-parameter to the end of list.
scripts/mysql_system_tables.sql:
  Add new columns to mysql.proc and mysql.event.
scripts/mysql_system_tables_fix.sql:
  Add new columns to mysql.proc and mysql.event.
sql/event_data_objects.cc:
  Support new attributes for events.
sql/event_data_objects.h:
  Support new attributes for events.
sql/event_db_repository.cc:
  Support new attributes for events.
sql/event_db_repository.h:
  Support new attributes for events.
sql/events.cc:
  Add new columns to SHOW CREATE event resultset.
sql/mysql_priv.h:
  1. Introduce Object_creation_ctx;
  2. Introduce SHOW CREATE TRIGGER;
  3. Introduce auxilary functions.
sql/sp.cc:
  Add support for new store routines attributes.
sql/sp_head.cc:
  Add support for new store routines attributes.
sql/sp_head.h:
  Add support for new store routines attributes.
sql/sql_lex.cc:
  Generate UTF8-body on parsing/lexing.
sql/sql_lex.h:
  1. Generate UTF8-body on parsing/lexing.
  2. Introduce SHOW CREATE TRIGGER.
sql/sql_parse.cc:
  Introduce SHOW CREATE TRIGGER.
sql/sql_partition.cc:
  Update parse_sql().
sql/sql_prepare.cc:
  Update parse_sql().
sql/sql_show.cc:
  Support new attributes for views
sql/sql_trigger.cc:
  Support new attributes for views
sql/sql_trigger.h:
  Support new attributes for views
sql/sql_view.cc:
  Support new attributes for views
sql/sql_yacc.yy:
  1. Add SHOW CREATE TRIGGER statement.
  2. Generate UTF8-body for views, stored routines, triggers and events.
sql/table.cc:
  Introduce Object_creation_ctx.
sql/table.h:
  Introduce Object_creation_ctx.
sql/share/errmsg.txt:
  Add new errors.
mysql-test/include/ddl_i18n.check_events.inc:
  Aux file for test suite.
mysql-test/include/ddl_i18n.check_sp.inc:
  Aux file for test suite.
mysql-test/include/ddl_i18n.check_triggers.inc:
  Aux file for test suite.
mysql-test/include/ddl_i18n.check_views.inc:
  Aux file for test suite.
mysql-test/include/have_cp1251.inc:
  Aux file for test suite.
mysql-test/include/have_cp866.inc:
  Aux file for test suite.
mysql-test/include/have_koi8r.inc:
  Aux file for test suite.
mysql-test/include/have_utf8.inc:
  Aux file for test suite.
mysql-test/r/ddl_i18n_koi8r.result:
  Result file.
mysql-test/r/ddl_i18n_utf8.result:
  Result file.
mysql-test/r/have_cp1251.require:
  Aux file for test suite.
mysql-test/r/have_cp866.require:
  Aux file for test suite.
mysql-test/r/have_koi8r.require:
  Aux file for test suite.
mysql-test/r/have_utf8.require:
  Aux file for test suite.
mysql-test/t/ddl_i18n_koi8r.test:
  Complete koi8r test case for the CS patch.
mysql-test/t/ddl_i18n_utf8.test:
  Complete utf8 test case for the CS patch.
2007-06-28 21:34:54 +04:00
unknown
3f9bf92533 events_bugs.test didn't remove all the objects it created
what caused some consequitive tests failures


mysql-test/r/events_bugs.result:
  test result fixed
mysql-test/t/events_bugs.test:
  typo fixed, event removed
2007-06-28 13:34:39 +05:00
unknown
9ee3b4b7dd Bug #29156 events crash server in test suite
don't free thd->lex->sphead if we didn't do lex_start(),
as we can have garbage there


mysql-test/r/events_bugs.result:
  Bug #29156 events crash server in test suite
  
  test result added
mysql-test/t/events_bugs.test:
  Bug #29156 events crash server in test suite
  
  testcase
2007-06-27 11:06:37 +05:00
unknown
ae398d995a Bug #29245: Bad Merge Caused Error Codes Conflict between 5.0/5.1
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1


mysql-test/r/backup.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/events_bugs.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/events_trans.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_dd_basic.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_dd_ddl.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_gis.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_row_format.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_extraCol_innodb.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_extraCol_myisam.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_incident.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_ndb_extraCol.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_row_tabledefs_2myisam.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_row_tabledefs_3innodb.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_sp.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/select.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/show_check.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp_gis.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp_trans.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/type_timestamp.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/warnings.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/xml.result:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/t/grant.test:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/t/partition_grant.test:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
sql/mysql_priv.h:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
sql/share/errmsg.txt:
  Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
2007-06-26 13:15:43 +02:00
unknown
624d65c591 Fix for
bug#26338 events_bugs.test fail on Debian
and
bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"


mysql-test/r/events_bugs.result:
  uppercase
mysql-test/t/events.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_bugs.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_grant.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_logs_tests.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_scheduling.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_stress.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_time_zone.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_trans.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
mysql-test/t/events_trans_notembedded.test:
  wait at the end of the script for event which haven't
  finished their execution. This should solve
  bug#26338 events_bugs.test fail on Debian
  and
  bug#28285 Test "events_bugs" has instable results of "select /*1*/ ... from processlist"
2007-05-26 16:36:38 +02:00
unknown
b432f9c1e3 Fix for bug#28666 CREATE EVENT ... EVERY 0 SECOND let server crash
A missing check for zero value of interval was added.


mysql-test/r/events_bugs.result:
  update result file
mysql-test/t/events_bugs.test:
  add test case for bug#28666 CREATE EVENT ... EVERY 0 SECOND let server crash
sql/event_data_objects.cc:
  add a missing check about zero value for interval
2007-05-25 14:46:22 +02:00
unknown
b2b1629480 An attempt to fix event_bugs.test failure on Debian
(Bug#26338 "events_bugs.test fail on Debian")


mysql-test/r/events_bugs.result:
  Update results.
mysql-test/t/events_bugs.test:
  Make a stab at fixing events_bugs.test failure on Debian.
  The problem is purely in the race inherent in the test case: an
  event that was started doesn't go away fast enough and clutters the 
  processlist. This patch remove the part of the event that
  we can not wait on synchronously (there is no table 'hashed_num'
  referenced anywhere).
2007-05-16 16:01:14 +04:00
unknown
ff452d050a Post-merge and post-review fixes for the patch for
Bug#23631 "Events: SHOW VARIABLES doesn't work when mysql.event 
is damaged:


mysql-test/r/events.result:
  Update results (a post-merge fix)
mysql-test/r/events_bugs.result:
  Update results (a post-merge fix)
mysql-test/r/events_scheduling.result:
  Update results (a post-merge fix)
mysql-test/t/events_scheduling.test:
  Make sure this test has no races.
sql/event_data_objects.cc:
  Manual post-merge fix for the events replication patch.
sql/event_data_objects.h:
  A post-merge fix.
sql/event_db_repository.cc:
  A post-merge fix.
sql/event_scheduler.cc:
  We should drop the event inside ::execute since there we have
  the right credentials to do so (otherwise Events::drop_event
  returns "access denied" error).
sql/events.cc:
  A post-review fix for: rename start_or_stop_event_scheduler
  to switch_event_scheduler_state.
sql/events.h:
  A post-review fix for: rename start_or_stop_event_scheduler
  to switch_event_scheduler_state.
sql/set_var.cc:
  A post-review fix for: rename start_or_stop_event_scheduler
  to switch_event_scheduler_state.
sql/sql_yacc.yy:
  Remove unused declaratoins.
2007-04-05 20:47:22 +04:00
unknown
a36054f420 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  vajra.(none):/opt/local/work/mysql-5.1-c1


mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/events_scheduling.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
mysql-test/t/events_scheduling.test:
  Auto merged
sql/event_data_objects.h:
  Auto merged
sql/event_db_repository.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/set_var.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/table.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
mysql-test/r/events.result:
  e
  Use local.
mysql-test/r/events_restart_phase1.result:
  Use local
mysql-test/r/events_time_zone.result:
  SCCS merged
mysql-test/t/events_restart_phase1.test:
  Use local
sql/event_data_objects.cc:
  Use local
sql/event_db_repository.cc:
  Manual merge.
sql/event_queue.cc:
  Manual merge.
sql/events.cc:
  Manual merge.
2007-04-05 15:49:46 +04:00
unknown
fa1d637e89 A set of changes aiming to make the Event Scheduler more user-friendly
when there are no up-to-date system tables to support it:
 - initialize the scheduler before reporting "Ready for connections".
   This ensures that warnings, if any, are printed before "Ready for
   connections", and this message is not mangled.
 - do not abort the scheduler if there are no system tables
 - check the tables once at start up, remember the status and disable
   the scheduler if the tables are not up to date.
   If one attempts to use the scheduler with bad tables,
   issue an error message.
 - clean up the behaviour of the module under LOCK TABLES and pre-locking
   mode
 - make sure implicit commit of Events DDL works as expected.
 - add more tests


Collateral clean ups in the events code.

This patch fixes Bug#23631 Events: SHOW VARIABLES doesn't work 
when mysql.event is damaged


mysql-test/r/events.result:
  Update results.
mysql-test/r/events_bugs.result:
  Update results.
mysql-test/r/events_restart_phase1.result:
  Update results.
mysql-test/r/events_restart_phase2.result:
  Update results.
mysql-test/r/events_restart_phase3.result:
  Update results.
mysql-test/r/events_scheduling.result:
  Update results.
mysql-test/r/events_time_zone.result:
  Update results.
mysql-test/t/events.test:
  Add new tests for tampering with mysql.event and some more
  tests for sub-statements, LOCK TABLES mode and pre-locking.
mysql-test/t/events_bugs.test:
  Move the non-concurrent part of test for Bug 16420 to this file.
mysql-test/t/events_restart_phase1.test:
  Rewrite events_restart_* tests to take into account that now
  we check mysql.event table only once, at server startup.
mysql-test/t/events_restart_phase2.test:
  Rewrite events_restart_* tests to take into account that now
  we check mysql.event table only once, at server startup.
mysql-test/t/events_restart_phase3.test:
  Rewrite events_restart_* tests to take into account that now
  we check mysql.event table only once, at server startup.
mysql-test/t/events_scheduling.test:
  Add more coverage for event_scheduler global variable.
mysql-test/t/events_time_zone.test:
  Move the non-concurrent part of the tests for Bug 16420 to 
  events_bugs.test
sql/event_data_objects.cc:
  Move update_timing_fields functionality to Event_db_repository.
  Make loading of events from a table record more robust to tampering
  with the table - now we do not check mysql.event on every table open.
sql/event_data_objects.h:
  Cleanup.
sql/event_db_repository.cc:
  Now Event_db_repository is responsible for table I/O only.
  All the logic of events DDL is handled outside, in Events class please
  refer to the added test coverage to see how this change affected
  the behavior of Event Scheduler.
  Dependency on sp_head.h and sp.h removed.
  Make this module robust to tweaks with mysql.event table.
  Move check_system_tables from events.cc to this file
sql/event_db_repository.h:
  Cleanup declarations (remove unused ones, change return type to bool
  from int).
sql/event_queue.cc:
  Update to adapt to the new start up scheme of the Event Scheduler.
sql/event_queue.h:
  Cleanup declarations.
sql/event_scheduler.cc:
  Make all the error messages uniform:
  [SEVERITY] Event Scheduler: [user][schema.event] message
  Using append_identifier for error logging was an overkill - we may 
  need it only if the system character set may have NUL (null character)
  as part of a valid identifier, this is currently never the case, 
  whereas additional quoting did not look nice in the log.
sql/event_scheduler.h:
  Cleanup the headers.
sql/events.cc:
  Use a different start up procedure of Event Scheduler:
  - at start up, try to check the system tables first.
  If they are not up-to-date, disable the scheduler.
  - try to load all the active events. In case of a load error, abort
  start up.
  - do not parse an event on start up. Parsing only gives some information
  about event validity, but far not all.
  Consolidate the business logic of Events DDL in this module.
  Now opt_event_scheduler may change after start up and thus is protected
  by LOCK_event_metadata mutex.
sql/events.h:
  Use all-static-data-members approach to implement Singleton pattern.
sql/mysqld.cc:
  New invocation scheme of Events. Move some logic to events.cc.
  Initialize the scheduler before reporting "Ready for connections".
sql/set_var.cc:
  Clean up sys_var_thd_sql_mode::symbolic_mode_representation
  to work with a LEX_STRING.
  Move more logic related to @@events_scheduler global variable to Events
  module.
sql/set_var.h:
  Update declarations.
sql/share/errmsg.txt:
  If someone tampered with mysql.event table after the server has
  started we no longer give him/her a complete report what was actually 
  broken. Do not send the user to look at the error log in such case,
  as there is nothing there (check_table_intact is not executed).
sql/sp_head.cc:
  Update to a new declaration of 
  sys_var_thd_sql_mode::symbolic_mode_representation
sql/sql_db.cc:
  New invocation scheme of Events module.
sql/sql_parse.cc:
  Move more logic to Events module. Make sure that we are consistent
  in the way access rights are checked for Events DDL: always
  after committing the current transaction and checking the system tables.
sql/sql_show.cc:
  Update to the new declarations of 
  sys_var_thd_sql_mode::symbolic_mode_representation
sql/sql_test.cc:
  New invocation scheme of events.
sql/table.cc:
  mysql.event is a system table.
  Update check_table_intact to be concurrent, more verbose, and less smart.
sql/table.h:
  Add a helper method.
mysql-test/r/events_trans.result:
  New BitKeeper file ``mysql-test/r/events_trans.result''
mysql-test/t/events_trans.test:
  New BitKeeper file ``mysql-test/t/events_trans.test'':
  test cases for Event Scheduler that require a transactional
  storage engine.
2007-04-05 15:24:34 +04:00
unknown
7b1bfbb77a Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime


mysql-test/r/events_bugs.result:
  Auto merged
mysql-test/r/ps.result:
  Auto merged
mysql-test/t/events.test:
  Auto merged
sql/event_data_objects.cc:
  Auto merged
sql/event_data_objects.h:
  Auto merged
sql/event_db_repository.h:
  Auto merged
sql/event_queue.cc:
  Auto merged
sql/events.cc:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_servers.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.h:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
mysql-test/r/events.result:
  Manual merge.
sql/event_db_repository.cc:
  Manual merge.
sql/sql_parse.cc:
  Manual merge.
2007-04-03 14:34:37 +04:00
unknown
af26b2b87e WL#3629 - Replication of Invocation and Invoked Features
This patch corrects errors that occurred in a local manual merge.
It adds the originator column in the results of the SHOW EVENTS command
for a series of tests.

The only code change is to correct references to the classname in
enums.


mysql-test/r/events.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
mysql-test/r/events_bugs.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
mysql-test/r/events_time_zone.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
mysql-test/r/mysqldump.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
mysql-test/r/ps.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the originator column in the results of the SHOW EVENTS command.
sql/event_data_objects.cc:
  WL#3629 - Replication of Invocation and Invoked Features
    
  This patch corrects errors that occurred in a local manual merge.
  It adds the classname to the enums appearing in another patch.
2007-03-29 11:11:28 -04:00
unknown
fce7280591 Fix spelling (recursivity -> recursion)
mysql-test/r/events.result:
  Fix spelling.
mysql-test/r/events_bugs.result:
  Fix spelling.
mysql-test/r/ps.result:
  Fix spelling.
mysql-test/t/events.test:
  Fix spelling.
mysql-test/t/events_bugs.test:
  Fix spelling.
mysql-test/t/ps.test:
  Fix spelling.
sql/sql_yacc.yy:
  Fix spelling.
sql/share/errmsg.txt:
  Fix spelling.
2007-03-27 22:15:51 +04:00
unknown
086fba7627 BUG#16420: Events: timestamps become UTC
BUG#26429: SHOW CREATE EVENT is incorrect for an event that
           STARTS NOW()
BUG#26431: Impossible to re-create an event from backup if its
           STARTS clause is in the past
WL#3698: Events: execution in local time zone

The problem was that local times specified by the user in AT, STARTS
and ENDS of CREATE EVENT/ALTER EVENT statement were converted to UTC,
and the original time zone was forgotten.  This way, event scheduler
couldn't honor Daylight Saving Time shifts, and times shown to the
user were also in UTC.  Additionally, CREATE EVENT didn't allow times
in the past, thus preventing straightforward event restoration from
old backups.

This patch reworks event scheduler time computations, performing them
in the time zone associated with the event.  Also it allows times to
be in the past.

The patch adds time_zone column to mysql.event table.

NOTE: The patch is almost final, but the bug#9953 should be pushed
first.


client/mysqldump.c:
  Before every CREATE EVENT, output its time zone.
mysql-test/include/wait_condition.inc:
  Add optional $wait_timeout parameter.
mysql-test/lib/init_db.sql:
  Add time_zone column.
mysql-test/r/events.result:
  Update result.
mysql-test/r/events_bugs.result:
  Update result.
mysql-test/r/events_grant.result:
  Update result.
mysql-test/r/events_restart_phase1.result:
  Update result.
mysql-test/r/events_scheduling.result:
  Update result.
mysql-test/r/mysqldump.result:
  Update result.
mysql-test/r/ps.result:
  Update result.
mysql-test/r/system_mysql_db.result:
  Update result.
mysql-test/t/events.test:
  Remove STARTS from the result, as it depends on current time.
mysql-test/t/events_bugs.test:
  Time in the past is no longer an error.
mysql-test/t/events_restart_phase1.test:
  Fill new column 'time_zone' in mysql.event.
mysql-test/t/events_scheduling.test:
  Cleanup: disable event scheduler.
scripts/mysql_create_system_tables.sh:
  Add new column 'time_zone' to mysql.event.
scripts/mysql_fix_privilege_tables.sql:
  Add new column 'time_zone' to mysql.event.
sql/event_data_objects.cc:
  The essence of the change is the following:
   - for internal times use my_time_t instead of TIME.  Assignment and
     comparison is done now on plain numbers.
   - in init_execute_at(), init_starts(), init_ends() convert given time
     to number of seconds since Epoch (aka Unix time, in UTC).
   - handle time_zone field loading and storing.
   - in get_next_time(), Unix time is converted back to event time zone,
     interval is added, and the result is converted to UTC again.
   - fix Event_timed::get_create_event() to report STARTS and ENDS.
   - before executing the event body we set thread time zone to the
     event time zone.
sql/event_data_objects.h:
  Add time_zone member to Event_basic class.
  
  Store internal times in my_time_t (number of seconds since Epoch),
  rather than in broken down TIME structure.
sql/event_db_repository.cc:
  Add time_zone column handling.
  
  Give a warning and do not create an event if its execution time is in
  the past, and ON COMPLETION NOT PRESERVE is set, because such an event
  should be dropped by that time.  Also, do not allow ALTER EVENT to
  set execution time in the past when ON COMPLETION NOT PRESERVE is set.
sql/event_db_repository.h:
  Add enum member for new time zone column.
sql/event_queue.cc:
  Replace handling of broken down times with simple handling of
  my_time_t.
sql/event_queue.h:
  Store internal times in my_time_t (number of seconds since Epoch),
  rather than in broken down TIME structure.
sql/event_scheduler.cc:
  Add TODO comment.
sql/events.cc:
  Send time_zone column for SHOW CREATE EVENT.
sql/share/errmsg.txt:
  Update error message, and add two more errors.
sql/sql_show.cc:
  Add TIME_ZONE column to the output of SHOW EVENTS.
mysql-test/r/events_time_zone.result:
  BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/r/events_time_zone.result
mysql-test/t/events_time_zone.test:
  BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/t/events_time_zone.test
2007-03-16 17:31:07 +03:00
unknown
2b48825bd6 BUG#16425: Events: no DEFINER clause
There was already support for CREATE DEFINER=... EVENT syntax in the
parser, but DEFINER information was ignored.

This patch adds processing of DEFINER, and a new ALTER DEFINER=...
EVENT syntax.


mysql-test/r/events_bugs.result:
  Add result for bug#16425: Events: no DEFINER clause.
mysql-test/t/events_bugs.test:
  Add test case for bug#16425: Events: no DEFINER clause.
sql/event_data_objects.cc:
  Event_parse_data::init_definer() looks for DEFINER in
  thd->lex->definer, which is always set now.
sql/sql_parse.cc:
  Move DEFINER processing into the sp_process_definer().  Call this
  function for CREATE EVENT/ALTER EVENT, as well as for CREATE
  PROCEDURE/FUNCTION.
sql/sql_yacc.yy:
  Add 'alter DEFINER=... event', update rule references accordingly.
2007-02-02 20:43:33 +03:00
unknown
35fdeff81f BUG#25211: events_bugs.test fails on sapsrv1
The problem was that the events_bugs test could randomly fail due to
races in the test case.

The solution is to replace fixed sleeps with reliable polling of a
certain state to settle.  For that, a new auxiliary script
include/wait_condition.inc is used, that allows waiting for a given
query to return true.


mysql-test/include/wait_until_rows_count.inc:
  Script is rewritten using new include/wait_condition.inc.
mysql-test/r/events_bugs.result:
  Update result: add missing quotation mark.
mysql-test/t/events_bugs.test:
  Replace --sleep with the reliable waiting for a certain state.
mysql-test/include/wait_condition.inc:
  New BitKeeper file ``mysql-test/include/wait_condition.inc''
2007-01-19 18:33:48 +03:00
unknown
63030d767c Better fix for bug#22830
Events: crash with procedure which alters events with function

Post-review CS

This fix also changes the handling of KILL command combined with
subquery. It changes the error message given back to "not supported",
from parse error. The error for CREATE|ALTER EVENT has also been changed
to generate "not supported yet" instead of parse error.
In case of a SP call, the error is "not supported yet". This change
cleans the parser from code which should not belong to there. Still
LEX::expr_allows_subselect is existant because it simplifies the handling
 of SQLCOM_HA_READ which forbids subselects.


mysql-test/r/events_bugs.result:
  update resut
mysql-test/r/events_grant.result:
  update result
mysql-test/r/kill.result:
  the error message has been changed for KILL
mysql-test/t/events_bugs.test:
  Update old tests with the new emitted error
  
  Add a test case for
  BUG#22830 Events: crash with procedure which alters events with function
mysql-test/t/events_grant.test:
  add ORDER BY clause to keep the result deterministic.
mysql-test/t/kill.test:
  use name of the error, and change the error
  from parse error, to not supported
sql/sql_lex.cc:
  Add an auxiliary function that checks whether SP and/or
  tables are used in the statement. This function is helpful for
  statements that cannot handle subqueries ans SP calls. Adding out
  of the parser cleans the latter of handling of special cases and
  letting it do its job of parsing.
sql/sql_lex.h:
  helper function to check whether a table or SP was used
sql/sql_parse.cc:
  Use LEX::table_or_sp_used() for SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT
  and SQLCOM_KILL. SQLCOM_DROP event does not use `expr` rule and thus a check is
  not needed.
sql/sql_yacc.yy:
  Remove usage of LEX::expr_allows_subselect for CREATE|ALTER EVENT
  and KILL. There is only one left occurence - SQLCOM_HAREAD, but it 
  adds one table to the list of tables
2006-11-02 13:51:43 +01:00
unknown
6c9400b930 Fix for bug#22397 Events: crash with procedure which alters events
ALTER EVENT in stored procedure body led to a crash during the
procedure call. Affected was only ALTER EVENT which changed the
interval of the event. No problems with AT, STARTS, ENDS and so on.



mysql-test/r/events_bugs.result:
  fix result
mysql-test/t/events_bugs.test:
  add test case for bug 22397 : Events, crash with procedure which alters body
sql/event_data_objects.cc:
  fix copy&paste error in code, which resulted in bug#22397
  Events: crash with procedure which alters body
2006-09-25 16:49:25 +02:00
unknown
53267edaf6 fix build 2006-09-08 00:49:37 +02:00
unknown
da4734c3bc WL#3337 (Event scheduler new architecture)
This is a post-review patch.

Fixes the typelib implementation, available only in 5.1.11.

--event-scheduler cmdline : DISABLED | ON | OFF | 0 | 1
DISABLED - makes the scheduler unavailable during the server run
(ON|1)-  When the server is started the scheduler will be started. It can
         be stopped and restarted by setting appropriate values to
         GLOBAL event_scheduler
(OFF|0)- When the server is started, the scheduler won't be started. It
         can be started and again stopped by setting appropriate values to
         GLOBAL event_scheduler. _DEFAULT_ value

The GLOBAL variable event_scheduler can have the following values:
OFF | ON | 0 | 1
DISABLED is not possible and every attempt will end with an error that
it's not a valid value for the variable.
OFF | 0 - This is the pre-5.1.11 behavior - The scheduler stops, if not
          already stopped, and can be started again  by setting
          the value of the variable to ON|1.
ON | 1  - This is the pre-5.1.11 behavior - The scheduler starts, if not
          already started, and can be stopped again by setting the value
          of the variable to OFF|0.


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_restart_phase1.result:
  update result
mysql-test/r/events_restart_phase3.result:
  update result
mysql-test/r/events_scheduling.result:
  update result
mysql-test/r/events_stress.result:
  update result
mysql-test/t/events.test:
  update test:
  2 -> off
  1 -> on
mysql-test/t/events_bugs.test:
  update test:
  2 -> off
  1 -> on
mysql-test/t/events_logs_tests.test:
  update test:
  2 -> off
  1 -> on
mysql-test/t/events_restart_phase1.test:
  update test:
  2 -> off
  1 -> on
mysql-test/t/events_restart_phase2-master.opt:
  update master file : 1 => on
mysql-test/t/events_scheduling.test:
  update test:
  2 -> off
  1 -> on
  
  add tests for event_scheduler global variable representation from
  SHOW VARIABLES.
mysql-test/t/events_stress.test:
  update test:
  2 -> off
  1 -> on
sql/events.cc:
  Implement two different TYPELIBs for --event-scheduler cmd line
  option and for GLOBAL variable event_scheduler
  
  --event-scheduler cmdline : DISABLED | ON | OFF | 0 | 1
  DISABLED - makes the scheduler unavailable during the server run
  (ON|1)-  When the server is started the scheduler will be started. It can
           be stopped and restarted by setting appropriate values to
           GLOBAL event_scheduler
  (OFF|0)- When the server is started, the scheduler won't be started. It
           can be started and again stopped by setting appropriate values to
           GLOBAL event_scheduler. _DEFAULT_ value
  
  The GLOBAL variable event_scheduler can have the following values:
  OFF | ON | 0 | 1
  DISABLED is not possible and every attempt will end with an error that
  it's not a valid value for the variable.
  OFF | 0 - This is the pre-5.1.11 behavior - The scheduler stops, if not
            already stopped, and can be started again  by setting
            the value of the variable to ON|1.
  ON | 1  - This is the pre-5.1.11 behavior - The scheduler starts, if not
            already started, and can be stopped again by setting the value
            of the variable to OFF|0.
sql/events.h:
  additional TYPELIB for GLOBAL event_scheduler
sql/mysqld.cc:
  --event-scheduler should be checked against a TYPELIB and
  therefore should be GET_STR, as well as we make the parameter optional.
  When not provided OFF|0 is used.
sql/set_var.cc:
  Implement typelib for event_scheduler variable.
  If allows both INT_RESULT -> 0 | 1 
  and STRING_RESULT -> OFF | ON
  The variable is shown as DISABLED | ON | OFF
sql/set_var.h:
  Implement typelib, which expects both STRING and INT,
  for event_scheduler.
2006-09-01 13:08:44 +02:00
unknown
e5a2cb50fa post-merge and testing fixes
mysql-test/r/events_bugs.result:
  update results after merge
mysql-test/t/events.test:
  num to name
mysql-test/t/events_bugs.test:
  num to name
sql/sql_yacc.yy:
  post-merge fixes regarding init_sp_name
  put back code which I unintentionally removed during merg
sql/share/errmsg.txt:
  add the message back
2006-08-15 00:50:26 +02:00
unknown
66fb56f115 Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-wl3337
into  example.com:/work/mysql-5.1-runtime-wl3337


BitKeeper/etc/ignore:
  auto-union
client/mysqltest.c:
  Auto merged
libmysqld/Makefile.am:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/sp_notembedded.result:
  Auto merged
sql/CMakeLists.txt:
  Auto merged
sql/Makefile.am:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/share/errmsg.txt:
  C
mysql-test/r/events_bugs.result:
  update result
  manual merge
mysql-test/r/ps_1general.result:
  update result
  manual merge
sql/sql_yacc.yy:
  manual merge
2006-08-14 15:26:59 +02:00
unknown
21e75cb081 Manual merge 5.0->5.1. Post-merge fixes.
client/mysqldump.c:
  A post-merge fix - 'sock' was renamed to 'mysql'
mysql-test/r/events_bugs.result:
  A post merge fix: now we strip rear comments from the query before
  it gets into the log.
mysql-test/r/func_group.result:
  A post merge fix: default clause is now printed uppercase.
mysql-test/r/im_life_cycle.result:
  Fix my mistake in manual resolve.
mysql-test/r/mysqlcheck.result:
  use test; - after we drop client_test_db there is no current database.
  This cleanup is present in 5.1 only, but the test that was added in 
  5.0 assumes there is a current database, test.
mysql-test/r/mysqldump.result:
  Ignore results of execution of mysqldump: we can't rely on 
  MASTER_LOG_POS in test results, it's different for statement
  and row level logging.
mysql-test/r/mysqlshow.result:
  A post-merge fix: information schema contains a few more tables
  in 5.1
mysql-test/r/mysqltest.result:
  A post merge fix: add 5.1 test end separator.
mysql-test/r/ndb_basic.result:
  A post-merge fix: add test end separators.
mysql-test/r/rpl_switch_stm_row_mixed.result:
  A post merge fix: length of varbinary column is now 3 times less.
  Assuming a side effect of some other change. Length of any
  field is not relevant in this test.
mysql-test/r/rpl_view.result:
  Add an end of test marker.
mysql-test/r/show_check.result:
  Remove duplicate results. Add results from a merged test case.
mysql-test/r/sp-error.result:
  Add test end separators.
mysql-test/r/sp-security.result:
  Post-merge fix: use test after the current database is dropped.
mysql-test/r/sp.result:
  Remove a duplicate result (bad merge that left a copy of
  the test case for Bug#19862 in the test suite).
mysql-test/r/strict.result:
  An after-merge fix for a new test case: in 5.1 we issue a more accurate
  error message: "Incorrect value" instead of "Truncated value". I reason
  it so that in case of an error nothing is truncated, really.
  Also found similar changes in other test cases.
mysql-test/r/type_datetime.result:
  Fix the text of an error.
mysql-test/r/union.result:
  A post-merge fix: CHARACTER SET is now uppercase.
mysql-test/t/mysqlcheck.test:
  A post-merge fix: use test, after current database is dropped, there
  is no current database.
mysql-test/t/mysqldump.test:
  Disable result log: it's dependent on binlog position.
mysql-test/t/sp-security.test:
  use test
sql/item_sum.cc:
  Adjust the call to the constructor after the merge.
sql/sp_head.cc:
  Add a missing DBUG_VOID_RETURN, move security checks out of
  execute_trigger to Table_triggers_list: in 5.1 we check for
  TRIGGER privilege, not SUPER privilege to execute triggers, so these
  checks lack table context inside execute_trigger and have to be
  performed when we have table object on hand.
sql/sql_db.cc:
  A post-merge fix: adjust load_db_opt_by_name and check_db_dir_existence
  (new functions added in 5.0) to be tablename-to-filename encoding 
  friendly.
sql/sql_lex.cc:
  A post-merge fix: make skip_rear_comments operate on const uchar *s.
sql/sql_lex.h:
  A post-merge fix.
sql/sql_show.cc:
  A post-merge fix: fix a bad merge, rename orig_sql_command -> sql_command.
sql/sql_trigger.cc:
  A post-merge fix: move security checks to process_triggers
  from execute_trigger.
sql/sql_view.cc:
  Adjust to the new signature of skip_rear_comments.
sql/sql_yacc.yy:
  Adjust to the new signature of init_strings.
2006-08-14 13:27:11 +04:00
unknown
e69e640f2e WL#3337 (Events new architecture)
Small updates before patch submit.


client/mysqltest.c:
  allow --valgrind option to mysqltest so one can be able to detect
  whether the test is running under valgrind by having $VALGRIND_TEST,
  similar to BIG_TEST, in the test file.
mysql-test/mysql-test-run.pl:
  If the test suite is running under valgrind start mysqltest with --valgrind
  to inform that we run valgrind. mysqltest will provide $VALGRIND_TEST for the
  test cases.
mysql-test/r/events_bugs.result:
  update result
mysql-test/r/events_scheduling.result:
  update result
mysql-test/t/events.test:
  Increase times or the test will fail under valgrind
mysql-test/t/events_bugs.test:
  Increase times or the test will fail under valgrind
mysql-test/t/events_scheduling.test:
  Remove faulty test
  Disable the test case for valgrind
sql/event_data_objects.cc:
  count the number of executions
sql/event_data_objects.h:
  flags is not used at all
  add execution_count to count the number of executions
sql/event_db_repository.cc:
  Initialize wherever needed.
  Add a comment regarding valgrind warning.
sql/event_queue.cc:
  more debug info in the trace log
sql/event_scheduler.cc:
  Use macro COND_STATE_WAIT() in all cases we need waiting
  on condition. Hence, we can trace locking, attemption to lock
  and more with SHOW SCHEDULER STATUS
sql/event_scheduler.h:
  Change the declaration of cond_wait to accept THD
sql/events.cc:
  fix memory leak. Destroy event_queue
mysql-test/include/not_valgrind.inc:
  New BitKeeper file ``mysql-test/include/not_valgrind.inc''
mysql-test/r/not_valgrind.require:
  New BitKeeper file ``mysql-test/r/not_valgrind.require''
2006-07-17 16:52:45 +02:00