- 29 Jun, 2006 1 commit
-
-
unknown authored
Parsing of CREATE/ALTER EVENT statement was crashing because of early initialization done during parsing, instead in the after parsing phase. Moreover, we don't want SUBqueries in CREATE/ALTER EVENT therefore we disable them, though it is possible to make them work. It can be emulated inside SP with a cursor and SP variable (CREATE/ALTER EVENT can still accept variables as values). mysql-test/r/events_bugs.result: update result mysql-test/t/events_bugs.test: tests for bug#16384 sql/sql_yacc.yy: disallow subqueries when SQLCOM_CREATE_EVENT | SQLCOM_ALTER_EVENT The fix is not big, though lex->forbid_subqueries could have been introduced. Easier is just to set the sql_command and check in both rules where subqueries enter.
-
- 28 Jun, 2006 5 commits
-
-
unknown authored
This cut No 7 should finish the part of fixing the parsing of the events : - Event_timed is no more used during parsing. Less problems because it has a mutex. Event_parse_data class is used during parsing. It is suited only for this purpose. It's pretty lightweight - Late checking of data from parsing is being performed. This should solve the problems of nested events in SP or other events (for the situation of no nested bodies). Before if an ALTER EVENT was in a SP, then when the SP was compiled, and not executed, the actual init_xxx methods of Event_timed were called, which is wrong. - It could be a side effect of using a specialized class, but test events_stress is now 25% quicker. Cut No8 will start splitting Event_scheduler into 2 parts, the QUEUE will be moved to Event_queue. mysql-test/r/events.result: update result mysql-test/t/events.test: disabled is actually wrong, should be disable, but because of the early checking it was never parsed. sql/event_data_objects.cc: move add init_xxx methods from Event_timed to Event_parse_data Event_parse data does not need definer_user and definer_host in Event_timed::compile() do not use lex.et, well there is no more lex.et :) sql/event_data_objects.h: move parsing responsibilities from Event_timed to Event_parse_data sql/event_db_repository.cc: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/event_db_repository.h: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/event_scheduler.cc: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/event_scheduler.h: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/events.cc: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/events.h: No more Event_timed comes from parsing but Event_parse_data The initialization of Item*-s from parsing is done late, and not during the actual parsing. This is the right way to go because if an ALTER EVENT is inside a SP or CREATE EVENT it should not be executed (initialized) during parsing, as it was done. sql/sql_lex.cc: lex->et_compile_phase and lex->et are no more. Use lex->event_parse_data sql/sql_lex.h: lex->et_compile_phase and lex->et are no more. Use lex->event_parse_data sql/sql_parse.cc: lex->et_compile_phase and lex->et are no more. Use lex->event_parse_data ACL checks were moved inside the Events subsystem. Also ending of the transaction is performed only just before doing disk operation. Therefore only when needed. sql/sql_yacc.yy: lex->et and lex->et_parse_phase are no more Use the specialized for parsing Event_parse_data
-
unknown authored
-
unknown authored
sql/CMakeLists.txt: Auto merged sql/events.cc: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/sql_show.cc: SCCS merged
-
unknown authored
Cut 7 (refactoring) db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h sql/event_data_objects.cc: db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h sql/event_db_repository.cc: db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h sql/events.cc: db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h sql/events.h: db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h sql/mysqld.cc: db_repository is no more embedded in the Events singleton. Therefore a change to Events_db_repository won't mean recompile of all files in the server which include events.h
-
unknown authored
Cut number 6. Move code from sql_show.cc to event_db_repository.cc that more belongs to the latter. sql/event_db_repository.cc: move code that works with mysql.event from sql_show.cc to event_db_repository.cc . Route through Event_db_repository's interface which is proxied by class Events. The code relies on a function from sql_show.cc which does the actual storage in the schema table. I think it's better to leave the function there because the structure of I_S.EVENTS is defined in sql_show.cc sql/event_db_repository.h: I_S / SHOW EVENTS handling hooks sql/event_scheduler.cc: use the pointer to db_repository which Event_scheduler already has sql/events.cc: Put a comment to get_instance sql/events.h: callback for I_S (sql_show.cc) sql/sql_show.cc: move code that belongs more to Event_db_repository than to here. Use a callback of class Events. Only 1 function is left here, because it copies data into the actual rows of I_S.EVENTS and belongs to this file. sql/sql_show.h: export this function will be called from event_db_repository.cc
-
- 27 Jun, 2006 5 commits
-
-
unknown authored
5th cut, moved DB related code to Event_db_repository and updated accordingly the remanining code. Moved change/restore_security_context() to class THD Removed events_priv.h Next step is to reorganize create/update_event() and parsing for them. But probably some other refactoring could be done in the meanwhile. The changes so far pass the test suite. BitKeeper/deleted/.del-events_priv.h~2e8bce2cf35997df: Delete: sql/events_priv.h sql/Makefile.am: events_priv.h is no more sql/event_data_objects.cc: reorganize events code sql/event_data_objects.h: reorganize events code sql/event_db_repository.cc: reorganize events code sql/event_db_repository.h: reorganize events code sql/event_scheduler.cc: reorganize events code sql/event_scheduler.h: reorganize events code sql/events.cc: reorganize events code sql/events.h: reorganize events code sql/mysqld.cc: reorganize events code sql/set_var.cc: reorganize events code sql/sql_class.cc: add ::change_security_context() and restore_security_context() sql/sql_class.h: add ::change_security_context() and restore_security_context() sql/sql_db.cc: reorganize Events code sql/sql_parse.cc: reorganize Events code sql/sql_show.cc: reorganize Events code
-
unknown authored
the parsing. Next step will be to refactor of usage of Event_timed during Events::create_event() and Events::update_event(). Disallow: - CREATE EVENT ... DO CREATE EVENT ...; - ALTER EVENT ... DO CREATE EVENT ...; - CREATE EVENT ... DO ALTER EVENT DO ....; - CREATE PROCEDURE ... BEGIN CREATE EVENT ... END| Allowed: - CREATE EVENT ... DO DROP EVENT yyy; - CREATE EVENT ... DO ALTER EVENT yyy; (the nested ALTER EVENT can have anything but DO clause) - ALTER EVENT ... DO ALTER EVENT yyy; (the nested ALTER EVENT can have anything but DO clause) - ALTER EVENT ... DO DROP EVENT yyy; - CREATE PROCEDURE ... BEGIN ALTER EVENT ... END| (the nested ALTER EVENT can have anything but DO clause) - CREATE PROCEDURE ... BEGIN DROP EVENT ... END| mysql-test/r/events.result: update results mysql-test/r/events_bugs.result: update results mysql-test/t/events.test: use number as error, mysql-test-run does not like the name. will come back to this later, now it's enough to pass the test. disable nested events / events in SP, when the nested event has a body. If no body is provided, namely DROP EVENT or ALTER that changes the characteristics, then these are allowed. mysql-test/t/events_bugs.test: use number as error, mysql-test-run does not like the name. will come back to this later, now it's enough to pass the test. disable nested events / events in SP, when the nested event has a body. If no body is provided, namely DROP EVENT or ALTER that changes the characteristics, then these are allowed. sql/share/errmsg.txt: new message sql/sql_yacc.yy: refactor CREATE EVENT parsing to fit into the structure CREATE DEFINER=xxx EVENT The actual definer part is not used, but parsed, for now. Disable nested CREATE EVENTS, CREATE EVENT inside CREATE PROCEDURE. And an event DDL with body inside an ALTER. This stops the following : - CREATE EVENT ... DO CREATE EVENT ...; - ALTER EVENT ... DO CREATE EVENT ...; - CREATE EVENT ... DO ALTER EVENT DO ....; - CREATE PROCEDURE ... BEGIN CREATE EVENT ... END| This allows: - CREATE EVENT ... DO DROP EVENT yyy; - CREATE EVENT ... DO ALTER EVENT yyy; (the nested ALTER EVENT can have anything but DO clause) - ALTER EVENT ... DO ALTER EVENT yyy; (the nested ALTER EVENT can have anything but DO clause) - ALTER EVENT ... DO DROP EVENT yyy; - CREATE PROCEDURE ... BEGIN ALTER EVENT ... END| (the nested ALTER EVENT can have anything but DO clause) - CREATE PROCEDURE ... BEGIN DROP EVENT ... END|
-
unknown authored
Third cut to simplify parsing phase. Now DROP EVENT works. Overloaded few functions to be able to use either sp_name or pass two LEX_STRINGs instead of a Event_timed pointer. This is transitional and eventually the old functions will be removed. For now DROP EVENT also works, does not need anymore a parsing object (Event_timed) and definer initialization because everyone who has EVENT_ACL can drop events, and this is checked on execution time in sql_parse.cc from the security context, as it should be. sql/event_data_objects.cc: overload few functions sql/event_scheduler.cc: Event_scheduler::drop_event() actually does not need Event_timed object but just an identifier, hence pass only sp_name. Overloaded Event_scheduler::find_event() to work with sp_name object. Eventually the old version will be removed. This is being done as transitional step to be able to test frequently code. sql/event_scheduler.h: Event_scheduler::drop_event() actually does not need Event_timed object but just an identifier, hence pass only sp_name. Overloaded Event_scheduler::find_event() to work with sp_name object. Eventually the old version will be removed. This is being done as transitional step to be able to test frequently code. sql/events.cc: Change db_drop_event() not to use Event_timed, either coming from parsing or from Event_timed::drop, but use LEX_STRINGs. sp_name is not convinient because in Event_timed::drop a temporary object has to be created. Hence, dereference the sp_name in Events::drop_event() and pass the LEX_STRINGs. sql/events.h: Change db_drop_event() not to use Event_timed, either coming from parsing or from Event_timed::drop, but use LEX_STRINGs. sp_name is not convinient because in Event_timed::drop a temporary object has to be created. Hence, dereference the sp_name in Events::drop_event() and pass the LEX_STRINGs. sql/events_priv.h: Change db_drop_event() not to use Event_timed, either coming from parsing or from Event_timed::drop, but use LEX_STRINGs. sp_name is not convinient because in Event_timed::drop a temporary object has to be created. Hence, dereference the sp_name in Events::drop_event() and pass the LEX_STRINGs. sql/sql_parse.cc: SQLCOM_DROP_EVENT does not need lex->event_parse_data object and is more like SQLCOM_SHOW_CREATE_EVENT. Therefore, move it to the block that handles the latter. sql/sql_yacc.yy: DROP EVENT does not need a parsing object, just a name. Store it as lex->spname. Pretty similar handling to the one of SHOW CREATE EVENT.
-
unknown authored
Second cut of separating parsing phase from execution phase Separate Event_timed from parsing phase and introducing Event_parse_data. sql/event_data_objects.cc: second cut, copy Event_timed::init_body() to Event_parse_data::init_body() Init the body during parsing, everything else keep as a pointer to Item or some other pointer to use for later initialization. sql/event_data_objects.h: get the identifier as sp_name*, later will initialize our structures sql/events.cc: for easy transition add temporarily parse_data, later Event_timed *et will be removed. Do slow transition because Event_timed is so tightly integrated that a front-attack by removing things from this class was unsuccessful. Do things step by step by eliminating dependencies. Hence, the code could be checked with the current test suite too (early testing) sql/events.h: for easy transition add temporarily parse_data, later Event_timed *et will be removed. Do slow transition because Event_timed is so tightly integrated that a front-attack by removing things from this class was unsuccessful. Do things step by step by eliminating dependencies. Hence, the code could be checked with the current test suite too (early testing) BitKeeper/etc/ignore: Added libmysql/viosocket.o.6WmSJk libmysqld/event_data_objects.cc libmysqld/event_db_repository.cc libmysqld/event_queue.cc server-tools/instance-manager/net_serv.cc to the ignore list sql/share/errmsg.txt: remove this message, not used and needed for now sql/sql_lex.h: for easy transition add temporarily parse_data, later Event_timed *et will be removed. Do slow transition because Event_timed is so tightly integrated that a front-attack by removing things from this class was unsuccessful. Do things step by step by eliminating dependencies. Hence, the code could be checked with the current test suite too (early testing) sql/sql_parse.cc: for easy transition add temporarily parse_data, later Event_timed *et will be removed. Do slow transition because Event_timed is so tightly integrated that a front-attack by removing things from this class was unsuccessful. Do things step by step by eliminating dependencies. Hence, the code could be checked with the current test suite too (early testing) sql/sql_yacc.yy: for easy transition add temporarily parse_data, later Event_timed *et will be removed. Do slow transition because Event_timed is so tightly integrated that a front-attack by removing things from this class was unsuccessful. Do things step by step by eliminating dependencies. Hence, the code could be checked with the current test suite too (early testing)
-
unknown authored
Infrastructure built. Added the foreseen files and change Makefile.am/CMakeLists.txt accordingly. libmysqld/Makefile.am: add new files. this is first cut of WL3337u sql/CMakeLists.txt: add more files to build sql/Makefile.am: add new files. this is first cut of WL3337 sql/event_scheduler.cc: event_timed.h -> event_data_objects.h (WL#3337) sql/events.cc: event_timed.h -> event_data_objects.h (WL#3337) sql/share/errmsg.txt: new error message sql/event_data_objects.cc: event_timed.h -> event_data_objects.h (WL#3337) sql/event_data_objects.h: event_timed.h -> event_data_objects.h (WL#3337) sql/sql_parse.cc: event_timed.h -> event_data_objects.h (WL#3337) sql/sql_show.cc: event_timed.h -> event_data_objects.h (WL#3337) sql/sql_yacc.yy: event_timed.h -> event_data_objects.h (WL#3337)
-
- 26 Jun, 2006 9 commits
-
-
unknown authored
into mysql.com:/opt/local/work/mysql-5.1-runtime mysql-test/t/disabled.def: Auto merged mysql-test/t/events_stress.test: Auto merged
-
unknown authored
into mysql.com:/data0/mysql-5.1
-
unknown authored
into mysql.com:/opt/local/work/mysql-5.1-runtime mysql-test/r/sp-prelocking.result: Auto merged mysql-test/r/sp.result: Auto merged mysql-test/t/sp.test: Auto merged sql/sp_head.cc: Auto merged sql/sql_parse.cc: Auto merged storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged storage/ndb/src/ndbapi/ndberror.c: Auto merged strings/ctype-mb.c: Auto merged mysql-test/t/sp-prelocking.test: Manual merge.
-
unknown authored
into mysql.com:/opt/local/work/mysql-5.1-runtime mysql-test/r/information_schema.result: Auto merged sql/CMakeLists.txt: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/events.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/t/events_microsec.test: SCCS merged
-
unknown authored
into mysql.com:/usr/local/mysql/tmp-5.1
-
unknown authored
The 250 simultaneous events all accessing the same table caused the events_stress test to fail due to debug warnings about too many table waiters. Fixed by using three different tables. mysql-test/r/events_stress.result: Use three different MyISAM tables to avoid debug warnings about too many locks. mysql-test/t/events_stress.test: Use three different MyISAM tables to avoid debug warnings about too many locks.
-
unknown authored
into lmy004.:/work/mysql-5.1-runtime-bug16992 mysql-test/t/events.test: Auto merged mysql-test/t/events_grant.test: Auto merged sql/sql_show.cc: Auto merged
-
unknown authored
into mysql.com:/usr/local/mysql/tmp-5.1 sql/ha_ndbcluster_binlog.cc: Auto merged sql/sql_class.cc: Auto merged
-
unknown authored
into lmy004.:/work/mysql-5.1-runtime-bug18897 mysql-test/t/events_bugs.test: Auto merged sql/sql_parse.cc: Auto merged
-
- 25 Jun, 2006 4 commits
-
-
unknown authored
mysql-test/r/func_time.result: post-merge fix mysql-test/r/select.result: post-merge fix
-
unknown authored
into mysql.com:/home/emurphy/src/bk-clean/mysql-5.1 mysql-test/mysql-test-run.sh: Auto merged mysql-test/valgrind.supp: Auto merged mysql-test/r/func_str.result: Auto merged mysql-test/r/insert_select.result: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/t/func_time.test: Auto merged mysql-test/t/myisam.test: Auto merged mysql-test/t/select.test: Auto merged mysys/Makefile.am: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/mysqld.cc: Auto merged sql/opt_sum.cc: Auto merged sql/slave.cc: Auto merged sql/sql_select.cc: Auto merged storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged storage/ndb/src/ndbapi/ndberror.c: Auto merged include/Makefile.am: manual merge mysql-test/r/func_time.result: manual merge mysql-test/r/select.result: manual merge
-
unknown authored
Delete: scripts/make_win_src_distribution.sh Makefile.am: Unix and Windows now shares source package scripts/Makefile.am: Unix and Windows now shares source package BitKeeper/deleted/.del-make_win_src_distribution.sh~f80d8fca44e4e5f1: Delete: scripts/make_win_src_distribution.sh
-
unknown authored
Start test case with a dummy table create and drop. This ensures that NDB event subscription is properly set up before the real test starts, which otherwise could sometimes cause INSERT events to be lost. mysql-test/r/ndb_binlog_multi.result: Start test with dummy table create/drop to avoid a race. mysql-test/t/ndb_binlog_multi.test: Start test with dummy table create/drop to avoid a race.
-
- 24 Jun, 2006 4 commits
-
-
unknown authored
into mysql.com:/usr/local/mysql/tmp-5.1 mysql-test/t/wait_timeout.test: Auto merged
-
unknown authored
into mysql.com:/usr/local/mysql/tmp-5.1
-
unknown authored
Sometimes the helper connection (that is watching for the main connection to time out) would itself time out first, causing the test to fail. mysql-test/t/wait_timeout.test: Increase connection timeout in connection wait_con so we will not loose the connection that is watching for the real wait_timeout to trigger.
-
unknown authored
include/mysql/plugin.h: Fix compilation on non-GCC compilers. sql/CMakeLists.txt: Add missing file.
-
- 23 Jun, 2006 12 commits
-
-
unknown authored
into mysql.com:/data0/knielsen/tmp-5.1
-
unknown authored
-
unknown authored
into mysql.com:/home/emurphy/src/bk-clean/mysql-5.1 mysql-test/r/func_time.result: Auto merged sql/item_cmpfunc.cc: Auto merged mysql-test/r/lock_multi.result: manual merge mysql-test/t/lock_multi.test: manual merge sql/ha_innodb.cc: manual merge
-
unknown authored
alter event rename". ALTER EVENT ... RENAME statement hasn't checked privileges for the target database. It also caused server crashes when target database was not specified explicitly and there was no current database. This fix adds missing privilege check and check for the case when target database is not specified explicitly or implicitly. mysql-test/r/events_bugs.result: update result mysql-test/t/events_bugs.test: add test case for bug 18897 Events: unauthorized action possible with alter event rename: - test rename to db the user does not have access to - test rename when there is no selected db sql/sql_parse.cc: Additional check for the situation when no db is selected. CREATE EVENT abc and ALTER EVENT db.abc RENAME TO xyz, and DROP EVENT abc won't work if there is no selected DB.
-
unknown authored
into mysql.com:/home/cps/mysql/devel/5.1-curs-bug
-
unknown authored
BitKeeper/deleted/.del-sql_state.c~3b39d30b649690f3: Delete: server-tools/instance-manager/sql_state.c BitKeeper/deleted/.del-password.c~9d4b6a4c57887ac7: Delete: server-tools/instance-manager/password.c BitKeeper/deleted/.del-pack.c~4754cd15e3058c75: Delete: server-tools/instance-manager/pack.c BitKeeper/deleted/.del-net_serv.cc~120fb81d7e670308: Delete: server-tools/instance-manager/net_serv.cc
-
unknown authored
into mysql.com:/usr/local/mysql/tmp-5.1 server-tools/instance-manager/instance_options.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/mysqld.cc: Auto merged sql/rpl_injector.cc: Auto merged sql/rpl_injector.h: Auto merged
-
unknown authored
into mysql.com:/usr/local/mysql/mysql-5.1-vg-apr2 mysys/mf_dirname.c: Auto merged server-tools/instance-manager/instance_options.cc: Manual merge.
-
unknown authored
The problem was a call to convert_dirname() with a destination buffer that did not have room for the trailing slash added by that function. This could cause the instance manager to crash in some cases. mysys/mf_dirname.c: Clarify in comments that convert_dirname destination must be larger than source to accomodate a trailing slash. server-tools/instance-manager/instance_options.cc: Fix buffer overrun.
-
unknown authored
into mysql.com:/home/my/mysql-5.1 sql/handler.cc: Auto merged sql/log_event.cc: Auto merged
-
unknown authored
(Happens if main thread exists before kill_server thread, which is ok)
-
unknown authored
into lmy004.:/work/mysql-5.1-runtime-bug20624
-