- 24 May, 2005 6 commits
-
-
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
after recovery.
-
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 18 commits
-
-
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
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
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 7 commits
-
-
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()
-
unknown authored
This is a second patch needing another review. The first patch didn't solve the entire problem. open and fopen on Windows will still open files like "com1.sym" when they shouldn't. This patch checks that the file exists before trying to open it. mysys/my_fopen.c: on Windows, if we are not creating a file the we call my_access to make sure the file exists before trying to open it. mysys/my_open.c: on Windows, if we are not creating a file the we call my_access to make sure the file exists before trying to open it.
-
unknown authored
The natural InnoDB type for NEWDECIMAL is FIXBINARY, not BINARY, since there probably is no benefit from stripping trailing bytes 0x20; note that tables created with 5.0.6 and containing DECIMAL do not need to be rebuilt, as BINARY works as well; note that because of Jani's fix to bug 10465, tables created with 5.0.? - 5.0.5 DO NEED TO BE REBUILT if they contain DECIMAL sql/ha_innodb.cc: The natural InnoDB type for NEWDECIMAL is FIXBINARY, not BINARY, since there probably is no benefit from stripping trailing bytes 0x20; note that tables created with 5.0.6 and containing DECIMAL do not need to be rebuilt, as BINARY works as well; note that because of Jani's fix to bug 10465, tables created with 5.0.? - 5.0.5 DO NEED TO BE REBUILT if they contain DECIMAL
-
unknown authored
Added test cases for bug #9938. item.h: Fixed bug #9938: missing method not_null_tables for Item_ref. sql/item.h: Fixed bug #9938: missing method not_null_tables for Item_ref. mysql-test/t/join_outer.test: Added test cases for bug #9938.
-
unknown authored
Added missing comment for fix of #10561. sql/sql_select.cc: Added missing comment for fix of #10561.
-
unknown authored
Post review corrections for optimization request #10561. sql/opt_range.cc: Post review corrections for optimization request #10561.
-
unknown authored
Added test cases for optimization request #10561. opt_range.cc, sql_select.cc: Fixed bug #10561: an optimization request to allow range analysis for NOT IN and NOT BETWEEN. sql/sql_select.cc: Fixed bug #10561: an optimization request to allow range analysis for NOT IN and NOT BETWEEN. sql/opt_range.cc: Fixed bug #10561: an optimization request to allow range analysis for NOT IN and NOT BETWEEN. mysql-test/t/range.test: Added test cases for optimization request #10561. mysql-test/r/range.result: Added test cases for optimization request #10561.
-
- 20 May, 2005 7 commits
-
-
unknown authored
into mdk10.(none):/home/reggie/bk/mysql-5.0
-
unknown authored
-
unknown authored
VC++Files/mysys/mysys.dsp: Auto merged include/my_sys.h: Auto merged sql/sql_db.cc: Auto merged
-
unknown authored
into mdk10.(none):/home/reggie/bk/mysql-5.0 sql/spatial.cc: Auto merged
-
unknown authored
The problem was that on Windows the access method indicates that access to file such as "com1" and "lpt1" is allowed (since they are device names) and this causes mysql to attempt to open them as databases or tables. The fix was to write our own my_access method that uses other Win32 functions to determine if the given argument is indeed a file and has to requested mode. VC++Files/mysys/mysys.dsp: added my_access VC++Files/mysys/mysys_ia64.dsp: added my_access.c include/my_sys.h: if on windows, we use my_access. if not on windows, then my_access points to the native access method mysys/Makefile.am: added my_access to mysys build file mysys/mf_pack.c: changed call to access to my_access sql/sql_db.cc: changed call to access to my_access
-
unknown authored
extra/yassl/include/yassl_types.hpp: A fix for Sun Forte 7 extra/yassl/mySTL/helpers.hpp: Better comment for the previous fix. extra/yassl/mySTL/list.hpp: A fix for Sun Forte 7
-
unknown authored
into mysql.com:/home/pem/work/mysql-5.0
-