- 30 May, 2005 1 commit
-
-
unknown authored
"the server side preparedStatement error for LIMIT placeholder", which moves all uses of LIMIT clause from PREPARE to OPTIMIZE and later steps. After-review fixes. mysql-test/r/group_min_max.result: Test results fixed for EXPLAINs when using GROUP_MIN_MAX access plan. sql/item_subselect.cc: Move setting of the internal LIMIT used for IN/ALL/ANY/EXISTS subqueries to one place: Item_exists_subselect::fix_length_and_dec(). This implies that unit->select_limit_cnt is not set until the item is fixed. This is OK, as now LIMIT values are not used until JOIN::optimize. sql/mysql_priv.h: setup_tables no longer needs a special flag for the case when it's called from JOIN::reinit() (we don't need to call setup_tables between two executions of a correlated subquery). sql/opt_range.cc: Fix a glitch in GROUP_MIN_MAX access plan: we should use table metadata, not field data, to evaluate max_used_key_length, which is then used for explain. sql/sp.cc: - setup_tables signature changed. sql/sql_base.cc: - setup_tables no longer needs a special mode for subqueries. Unused checks were removed. sql/sql_delete.cc: - setup_tables signature changed sql/sql_help.cc: - setup_tables signature changed sql/sql_insert.cc: - setup_tables signature changed sql/sql_lex.cc: Consolidate setting of internal LIMIT for IN/ALL/ANY/EXISTS subqeries in one place, and hence remove it from st_select_lex::test_limit(). sql/sql_lex.h: Cleanup signature of st_select_lex_unit::init_prepare_fake_select_lex(). sql/sql_load.cc: - setup_tables signature changed sql/sql_olap.cc: - setup_tables signature changed sql/sql_parse.cc: - st_select_lex_unit::set_limit() signature changed sql/sql_select.cc: Move setting of JOIN::select_limit from JOIN::prepare to JOIN::optimize. At prepare, limit is unknown yet. Remove excessive cleanups from JOIN::reinit which were overwriting join->join_tab[i]->table->used_keys. This fixes the bug which was triggered by the change in item_subselect.cc. sql/sql_union.cc: Class st_select_lex_unit was changed to avoid calls to st_select_lex_unit::set_limit from places where it may be unknown. Now unit->select_limit_cnt is set at ::exec(). st_select_lex_unit::init_prepare_fake_select_lex(): - move out set_limit functionality - remove a few lines of dead code. st_select_lex_unit::prepare(): - now we don't call set_limit at the time of prepare, so the value of unit->select_limit_cnt may be unknown here. Use sl->select_limit instead. st_select_lex_unit::exec(): - cleanup - call set_limit explicitly as it has been moved out of init_prepare_fake_select_lex. sql/sql_update.cc: - setup_tables signature changed
-
- 24 May, 2005 15 commits
-
-
unknown authored
into xiphis.org:/usr/home/antony/work2/p3-bug7241.6
-
unknown authored
-
unknown authored
into mysql.com:/home/dlenev/src/mysql-5.0-bg5860
-
unknown authored
into mysql.com:/home/svoj/devel/mysql/yassl-mysql-5.0
-
unknown authored
-
unknown authored
sql/item.cc: Auto merged sql/item.h: Auto merged sql/mysql_priv.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Manual merge sql/sql_update.cc: Manual merge
-
unknown authored
#5860 "Multi-table UPDATE does not activate update triggers" #6812 "Triggers are not activated for INSERT ... SELECT" #8755 "Trigger is not activated by LOAD DATA". This patch also implements proper handling of triggers for special forms of insert like REPLACE or INSERT ... ON DUPLICATE KEY UPDATE. Also now we don't call after trigger in case when we have failed to inserted/update or delete row. Trigger failure should stop statement execution. I have not properly tested handling of errors which happen inside of triggers in this patch, since it is simplier to do this once we will be able to access tables from triggers. mysql-test/r/trigger.result: Added tests for triggers behavior for various non-standard forms of INSERT such as REPLACE and INSERT ... ON DUPLICATE KEY UPDATE. Also added tests for bugs #5860 "Multi-table UPDATE does not activate update triggers", #6812 "Triggers are not activated for INSERT ... SELECT" and #8755 "Trigger is not activated by LOAD DATA". mysql-test/t/trigger.test: Added tests for triggers behavior for various non-standard forms of INSERT such as REPLACE and INSERT ... ON DUPLICATE KEY UPDATE. Also added tests for bugs #5860 "Multi-table UPDATE does not activate update triggers", #6812 "Triggers are not activated for INSERT ... SELECT" and #8755 "Trigger is not activated by LOAD DATA". sql/item.cc: Since it turned out that at trigger loading time we can't say in which buffer TABLE::record[0] or record[1] old version of row will be stored we have to change our approach to binding of Item_trigger_field to Field instances. Now after trigger parsing (in Item_trigger_field::setup_table()) we only find index of proper Field in the TABLE::field array. Then before trigger is invoked we set Table_triggers_list::old_field/new_field so they point to arrays holding Field instances bound to buffers with proper row versions. And as last step in Item_trigger_field::fix_fields() we get pointer to Field from those arrays using saved field index. Item_trigger_field::setup_field()/fix_fields() were changed to implement this approach. sql/item.h: Since it turned out that at trigger loading time we can't say in which buffer TABLE::record[0] or record[1] old version of row will be stored we have to change our approach to binding of Item_trigger_field to Field instances. Now after trigger parsing (in Item_trigger_field::setup_table()) we only find index of proper Field in the TABLE::field array. Then before trigger is invoked we set Table_triggers_list::old_field/new_field so they point to arrays holding Field instances bound to buffers with proper row versions. And as last step in Item_trigger_field::fix_fields() we get pointer to Field from those arrays using saved field index. Item_trigger_field: - Added field_idx member to store index of Field object corresponding to this Item in TABLE::field array. - Added triggers member to be able to access to parent Table_trigger_list object from fix_fields() method. - setup_field() no longer needs to know for which type of event this trigger is, since it does not make decision Field for which buffer (record[0] or record[1] is appropriate for this Item_trigger_field) sql/mysql_priv.h: Added fill_record_n_invoke_before_triggers() methods. They are simple wrappers around fill_record() which invoke proper before trigger right after filling record with values. sql/sql_base.cc: Added fill_record_n_invoke_before_triggers() methods. They are simple wrappers around fill_record() which invoke proper before trigger right after filling record with values. sql/sql_delete.cc: mysql_delete(): Now we stop statement execution if one of triggers failed, we also don't execute after delete trigger if we failed to delete row from the table (We also pass information about which buffer contains old version of row to process_triggers()). multi_delete::send_data()/do_deletes(): Now we also invoke triggers in case of multi-delete. sql/sql_insert.cc: mysql_insert(): Moved invocation of before triggers to fill_record_n_invoke_before_triggers() method. After triggers are now executed as part of write_record(). (as nice side effect now we also stop statement execution if one of triggers fail). write_record(): Invoke after insert trigger after performing insert. Also invoke proper triggers if insert is converted to update or conflicting row is deleted. Cleaned up error handling a bit - no sense to report error via handler::print_error if it was not generated by handler method and was reported before. Also now we will execute after trigger only if we really have written row to the table. select_insert::send_data()/store_values(): We should also execute INSERT triggers for INSERT ... SELECT statement. sql/sql_load.cc: read_fixed_length()/read_sep_field(): We should execute INSERT triggers when processing LOAD DATA statement. Small cleanup in auto-increment related code. Also moved check for thd->killed which is used to abort LOAD DATA in case of problems in 'traditional' mode to better place.. sql/sql_trigger.cc: Since it turned out that at trigger loading time we can't say in which buffer TABLE::record[0] or record[1] old version of row will be stored we have to change our approach to binding of Item_trigger_field to Field instances. Now after trigger parsing (in Item_trigger_field::setup_table()) we only find index of proper Field in the TABLE::field array. Then before trigger is invoked we set Table_triggers_list::old_field/new_field so they point to arrays holding Field instances bound to buffers with proper row versions. And as last step in Item_trigger_field::fix_fields() we get pointer to Field from those arrays using saved field index. Table_triggers_list methods were changed to implement this approach (see also comments for sql_trigger.h). sql/sql_trigger.h: Since it turned out that at trigger loading time we can't say in which buffer TABLE::record[0] or record[1] old version of row will be stored we have to change our approach to binding of Item_trigger_field to Field instances. Now after trigger parsing (in Item_trigger_field::setup_table()) we only find index of proper Field in the TABLE::field array. Then before trigger is invoked we set Table_triggers_list::old_field/new_field so they point to arrays holding Field instances bound to buffers with proper row versions. And as last step in Item_trigger_field::fix_fields() we get pointer to Field from those arrays using saved field index. Changed Table_triggers_list to implement this new approach: - Added record1_field member to store array of Field objects bound to TABLE::record[1] buffer (instead of existing old_field member) - Added new_field member and changed meaning of old_field member. During trigger execution they should point to arrays of Field objects bound to buffers holding new and old versions of row respectively. - Added 'table' member to be able to get access to TABLE instance (for which this trigger list object was created) from process_triggers() method. - Now process_triggers() method sets old_field and new_field members properly before executing triggers body (basing on new old_row_is_record1 parameter value). - Renamed prepare_old_row_accessors_method() to prepare_record1_accessors() Also added has_before_update_triggers() method which allows to check whenever any before update triggers exist for table. sql/sql_update.cc: mysql_update(): Now we invoke before triggers in fill_record_n_invoke_before_triggers() method. Also now we abort statement execution when one of triggers fail. safe_update_on_fly(): When we are trying to understand if we can update first table in multi update on the fly we should take into account that BEFORE UPDATE trigger can change field values. multi_update::send_data()/do_updates() We should execute proper triggers when doing multi-update (in both cases when we do it on the fly and using temporary tables).
-
unknown authored
mysql-test/r/lock.result: Auto merged mysql-test/r/rpl_log.result: Auto merged mysql-test/t/lock.test: Auto merged mysql-test/r/rpl_rotate_logs.result: SCCS merged sql/sql_parse.cc: SCCS merged sql/sql_repl.cc: SCCS merged
-
unknown authored
into xiphis.org:/usr/home/antony/work2/p3-bug7241.5
-
unknown authored
-
unknown authored
after recovery.
-
unknown authored
Only acquire necessary write lock for multi-delete mysql-test/r/lock.result: Test for Bug#7241 mysql-test/t/lock.test: Test for Bug#7241 sql/sql_parse.cc: Bug#7241 Don't acquire write lock on all tables. Make sure to set lock_type on real table_list
-
unknown authored
into mysql.com:/home/gluh/MySQL/Merge/mysql-5.0
-
unknown authored
-
unknown authored
into mysql.com:/home/pem/work/mysql-5.0
-
- 23 May, 2005 21 commits
-
-
unknown authored
-
unknown authored
into bk-internal.mysql.com:/data0/bk/mysql-5.0 BitKeeper/etc/gone: auto-union BitKeeper/etc/logging_ok: auto-union mysql-test/r/lowercase_table.result: Auto merged mysql-test/t/lowercase_table.test: Auto merged mysys/my_open.c: Auto merged
-
unknown authored
BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
-
unknown authored
Memory leak in locally evalutated expressions during SP execution fixed by reusing allocated item slots when possible. Note: No test case added, since the test is a stress test that tries to make the machine to run out of memory. Second attempt, now tested with debug build, valgrind build, max (optimized) build, with and without --debug, --vagrind and --ps-protocol. Errors in trigger and view test with --debug in debug build where present before this patch, and likewise for valgrind warnings for view test in valgrind build with --ps-protocol. sql/item.cc: Init rsize in Item (for SP item reusal). sql/item.h: Addes special new operator for reuse of Items, for SP internal use only. sql/sp_head.cc: Reuse items assigned internally in SPs when possible. sql/sp_rcontext.cc: Reuse items assigned internally in SPs when possible. Moved the local variable assignment here (from sp_head) to avoid duplicated code. sql/sp_rcontext.h: New arg to sp_rcontext::set_item_eval() (and some coding style). sql/sql_class.cc: Adjusted call to new set_item_eval().
-
unknown authored
fixups of test case and comment formatting BitKeeper/deleted/.del-reserved_win_names-master.opt~e56da049a7ce9a5b: ***MISSING TEXT*** mysql-test/r/lowercase_table.result: added my test for bug #9148 to this test case mysql-test/t/lowercase_table.test: added my test for bug #9148 to this test case mysys/my_fopen.c: reformatted comments mysys/my_open.c: reformatted comments
-
unknown authored
Added BLACKHOLE and FEDERATED storage engines for max builds Some preparations for including yaSSL ha_federated.cc: Use local seach path for "mysql_priv.h" sql/ha_federated.cc: Use local seach path for "mysql_priv.h" VC++Files/sql/mysqld.dsp: Added BLACKHOLE and FEDERATED storage engines for max builds Some preparations for including yaSSL
-
unknown authored
-
unknown authored
sql/sql_lex.h: A comment.
-
unknown authored
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-tmp include/my_global.h: Auto merged ndb/src/cw/cpcd/Process.cpp: Auto merged strings/my_vsnprintf.c: Auto merged
-
unknown authored
into mdk10.(none):/home/reggie/bk/mysql-5.0
-
unknown authored
include/my_global.h: Auto merged ndb/src/cw/cpcd/Process.cpp: Auto merged ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Auto merged strings/my_vsnprintf.c: Auto merged
-
unknown authored
This final cset is to fix a syntax problem in ha_myisammrg.cc where a / was left out of a format string. It also adds a check in has_path to avoid a possible redundant comparison. ha_myisammrg.cc: Replaced missing / in format string my_getwd.c: Added test to see if FN_LIBCHAR != '/' before doing comparison to avoid redundant comparison mysys/my_getwd.c: Added test to see if FN_LIBCHAR != '/' before doing comparison to avoid redundant comparison sql/ha_myisammrg.cc: Replaced missing / in format string
-
unknown authored
into mdk10.(none):/home/reggie/bk/mysql-4.1
-
unknown authored
This cset is to roll out the cset applied earlier from Ingo. This bug has been fixed with a different cset. sql/ha_myisammrg.cc: removed the patch applied earlier strings/my_vsnprintf.c: removed the patch applied earlier. The patch was to add %c ability. Monty has already done this.
-
unknown authored
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-tmp VC++Files/mysys/mysys.dsp: Auto merged include/my_global.h: Auto merged myisam/rt_split.c: Auto merged sql/field_conv.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_select.cc: Auto merged strings/my_vsnprintf.c: Auto merged
-
unknown authored
include/my_global.h: icc does not define __ICC when emulating gcc. Use __INTEL_COMPILER to check for icc. ndb/src/cw/cpcd/Process.cpp: Remove rlimit64 ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Remove dirent64
-
unknown authored
This is a replacement for the original patch given by Ingo. This one comes from Monty. The problem is that merge files now use unix style pathnames on all platforms. The merge file open code was not properly converting those pathnames back to non-unix when necessary. myisammrg/myrg_open.c: use fn_format to convert pathnames if the files in the merge file have a pathname mysys/my_getwd.c: add a test for '/' in the code that determines if a string inlucdes a pathname
-
unknown authored
They were both undocumented and not much useful. Removal has been agreed with Mark, Miguel and MikeZ. Removing winmysqladmin from the source (it was not included anymore in no Windows package). I'll do a test Windows noinstall.zip build before push. MikeZ just removed mysqlshutdown and mysqlwatch from the installer scripts. BitKeeper/deleted/.del-myshutdown.dsp~a8eee34a3d3ab679: Delete: VC++Files/mysqlshutdown/myshutdown.dsp BitKeeper/deleted/.del-myshutdown_ia64.dsp~dd2ad23d744ba1ba: Delete: VC++Files/mysqlshutdown/myshutdown_ia64.dsp BitKeeper/deleted/.del-mysql.ico~d4c55da4e911ced7: Delete: VC++Files/mysqlshutdown/mysql.ico BitKeeper/deleted/.del-mysqlshutdown.c~35d5feec4507d810: Delete: VC++Files/mysqlshutdown/mysqlshutdown.c BitKeeper/deleted/.del-mysqlshutdown.dsp~27db1e088d39987c: Delete: VC++Files/mysqlshutdown/mysqlshutdown.dsp BitKeeper/deleted/.del-mysqlshutdown.rc~454359c66381843c: Delete: VC++Files/mysqlshutdown/mysqlshutdown.rc BitKeeper/deleted/.del-mysqlshutdown_ia64.dsp~53fe7127af678bc: Delete: VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp BitKeeper/deleted/.del-mysqlwatch.c~de504821ede1cb8: Delete: VC++Files/mysqlwatch/mysqlwatch.c BitKeeper/deleted/.del-mysqlwatch.dsp~4699ddfb6ed23a6d: Delete: VC++Files/mysqlwatch/mysqlwatch.dsp BitKeeper/deleted/.del-mysqlwatch_ia64.dsp~1a11ce58f66a493: Delete: VC++Files/mysqlwatch/mysqlwatch_ia64.dsp BitKeeper/deleted/.del-db.cpp~6bbc3687ff8a2913: Delete: VC++Files/winmysqladmin/db.cpp BitKeeper/deleted/.del-db.h~e38deaf45dffa24d: Delete: VC++Files/winmysqladmin/db.h BitKeeper/deleted/.del-initsetup.cpp~b988f9ab7dbe4e92: Delete: VC++Files/winmysqladmin/initsetup.cpp BitKeeper/deleted/.del-initsetup.h~bc2a39769765e1a5: Delete: VC++Files/winmysqladmin/initsetup.h BitKeeper/deleted/.del-main.cpp~f822deb513ce0250: Delete: VC++Files/winmysqladmin/main.cpp BitKeeper/deleted/.del-Goahead.ico~805e753b7f13c6b7: Delete: VC++Files/winmysqladmin/images/Goahead.ico BitKeeper/deleted/.del-main.h~d17e73cf0b0cbf8: Delete: VC++Files/winmysqladmin/main.h BitKeeper/deleted/.del-mysql.h~a538c356e526804b: Delete: VC++Files/winmysqladmin/mysql.h BitKeeper/deleted/.del-mysql_com.h~8828acc269ca5036: Delete: VC++Files/winmysqladmin/mysql_com.h BitKeeper/deleted/.del-mysql_version.h~674dd1127ee25880: Delete: VC++Files/winmysqladmin/mysql_version.h BitKeeper/deleted/.del-winmysqladmin.cpp~bfac61f49813a983: Delete: VC++Files/winmysqladmin/winmysqladmin.cpp BitKeeper/deleted/.del-HELP.ICO~6b91d6eff4a7b11e: Delete: VC++Files/winmysqladmin/images/HELP.ICO BitKeeper/deleted/.del-INFO.ICO~b1eb08e87e0c1c3e: Delete: VC++Files/winmysqladmin/images/INFO.ICO BitKeeper/deleted/.del-Info.bmp~9c3c5afea29fa9b7: Delete: VC++Files/winmysqladmin/images/Info.bmp BitKeeper/deleted/.del-MYINI.ICO~91c77cc71d665f4: Delete: VC++Files/winmysqladmin/images/MYINI.ICO BitKeeper/deleted/.del-Myini.bmp~6cea36edbb94df3a: Delete: VC++Files/winmysqladmin/images/Myini.bmp BitKeeper/deleted/.del-Noentry.ico~6791fac163575069: Delete: VC++Files/winmysqladmin/images/Noentry.ico BitKeeper/deleted/.del-SETUP.BMP~43bd1e614fc7e5d5: Delete: VC++Files/winmysqladmin/images/SETUP.BMP BitKeeper/deleted/.del-Setup 16.bmp~9a9bf24a5dd952f3: Delete: VC++Files/winmysqladmin/images/Setup 16.bmp BitKeeper/deleted/.del-Table.ico~d64bf78e407b5e50: Delete: VC++Files/winmysqladmin/images/Table.ico BitKeeper/deleted/.del-Working.ico~f5cf304a7b6e592c: Delete: VC++Files/winmysqladmin/images/Working.ico BitKeeper/deleted/.del-database.ico~df8562312d9d9ed8: Delete: VC++Files/winmysqladmin/images/database.ico BitKeeper/deleted/.del-find.ico~44644ca5bab7901e: Delete: VC++Files/winmysqladmin/images/find.ico BitKeeper/deleted/.del-green.ico~88749a9a4ff83d25: Delete: VC++Files/winmysqladmin/images/green.ico BitKeeper/deleted/.del-help.bmp~bb6ac08cf7ab60d7: Delete: VC++Files/winmysqladmin/images/help.bmp BitKeeper/deleted/.del-initsetup.cpp~6704e992d966647f: Delete: VC++Files/winmysqladmin/images/initsetup.cpp BitKeeper/deleted/.del-killdb.ico~1043773bac9da67c: Delete: VC++Files/winmysqladmin/images/killdb.ico BitKeeper/deleted/.del-logo.ico~f00b08cd64695232: Delete: VC++Files/winmysqladmin/images/logo.ico BitKeeper/deleted/.del-multitrg.ico~52f787d7d9509533: Delete: VC++Files/winmysqladmin/images/multitrg.ico BitKeeper/deleted/.del-mysql-07.bmp~c157a2c3573b5c27: Delete: VC++Files/winmysqladmin/images/mysql-07.bmp BitKeeper/deleted/.del-mysql-17.bmp~99b3c90f96a9964b: Delete: VC++Files/winmysqladmin/images/mysql-17.bmp BitKeeper/deleted/.del-mysql.BMP~b58fe4f0c416291: Delete: VC++Files/winmysqladmin/images/mysql.BMP BitKeeper/deleted/.del-red.ico~179f5587e5a706c9: Delete: VC++Files/winmysqladmin/images/red.ico BitKeeper/deleted/.del-red22.BMP~bc47efefee4a5a86: Delete: VC++Files/winmysqladmin/images/red22.BMP BitKeeper/deleted/.del-see.bmp~c6863c3564387841: Delete: VC++Files/winmysqladmin/images/see.bmp VC++Files/mysql.dsw: removing mysqlshutdown and mysqlwatch VC++Files/mysql_ia64.dsw: removing mysqlshutdown and mysqlwatch
-
unknown authored
-
unknown authored
include/my_global.h: Look for __INTEL_COMPILER to detect icc
-
unknown authored
ndb/src/cw/cpcd/Process.cpp: Remove ifdef for icc Shouldn't need to define rlimit64
-
- 22 May, 2005 2 commits
-
-
unknown authored
ndb/src/ndbapi/NdbDictionaryImpl.cpp: fix access to freed memory
-
unknown authored
Check _LONGLONG_TYPE as well, to define 'word64', to make it work on Solaris 10 x86_64. Can't assume all x86_64 share the same assembler syntax. For now disabled assembler for x86_64 and Solaris. extra/yassl/taocrypt/include/misc.hpp: Check _LONGLONG_TYPE as well, to define 'word64', to make it work on Solaris 10 x86_64. Can't assume all x86_64 share the same assembler syntax. For now disabled assembler for x86_64 and Solaris.
-
- 21 May, 2005 1 commit
-
-
unknown authored
Use MY_STAT to declare argument to my_fstat() des_key_file.cc: Use local seach path for "mysql_priv.h" mysys.dsp, libmysqld.dsp, libmysql.dsp: New file needed, "../mysys/default_modify.c" VC++Files/libmysql/libmysql.dsp: New file needed, "../mysys/default_modify.c" VC++Files/libmysqld/libmysqld.dsp: New file needed, "../mysys/default_modify.c" VC++Files/mysys/mysys.dsp: New file needed, "../mysys/default_modify.c" sql/des_key_file.cc: Use local seach path for "mysql_priv.h" mysys/default_modify.c: Use MY_STAT to declare argument to my_fstat()
-