- 26 Oct, 2011 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 25 Oct, 2011 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
In the ON UPDATE CASCADE clause of FOREIGN KEY constraints, the calculated update vector was not fully initialized. This bug was introduced in the InnoDB Plugin when implementing support for ROW_FORMAT=DYNAMIC. Additionally, the data type information was not initialized, but apparently it has never been needed in this case. Nevertheless, it is not good programming practice to pass uninitialized values around. calc_row_difference(): Declare the update field uninitialized in Valgrind. Copy the data type information as well, except when the field is SQL NULL. In the built-in InnoDB, initialize ufield->extern_storage = FALSE (an initialization bug that had gone unnoticed this far). The InnoDB Plugin and later have this flag to dfield_t and have always initialized it properly. row_ins_cascade_calc_update_vec(): Reduce the scope of some pointers. Initialize orig_len. (This caused the bug in InnoDB Plugin and later.) row_ins_foreign_check_on_constraint(): Simplify a condition. Declare the update vector uninitialized. rb:771 approved by Jimmy Yang
-
Vasil Dimov authored
-
Vasil Dimov authored
PARENT FOR OTHER ONE Do not try to lookup key_nr'th key in 'table' because there may not be such a key there. key_nr is the number of the key in the _child_ table name, not in the parent table. Instead just print the fields of the record that are covered by the first key defined on the parent table. This bug gets a better fix in MySQL 5.6, which is too risky for 5.1 and 5.5. Approved by: Jon Olav Hauglid (via IM)
-
- 24 Oct, 2011 5 commits
-
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Nirbhay Choubey authored
-
Nirbhay Choubey authored
Fixed a misplaced parenthesis, injected due to syncing from libedit CVS head.
-
- 23 Oct, 2011 1 commit
-
-
Dmitry Lenev authored
NEW_FRM_MEM WITHOUT NEEDING TO". During the process of opening tables for a statement, we allocated memory which was used only during view loading even in cases when the statement didn't use any views. Such an unnecessary allocation (and corresponding freeing) might have caused significant performance overhead in some workloads. For example, it caused up to 15% slowdown in a simple stored routine calculating Fibonacci's numbers. This memory was pre-allocated as part of "new_frm_mem" MEM_ROOT initialization at the beginning of open_tables(). This patch addresses this issue by turning off memory pre-allocation during initialization for this MEM_ROOT. Now, memory on this root will be allocated only at the point when the first .FRM for a view is opened. The patch doesn't contain a test case since it is hard to test the performance improvements or the absence of memory allocation in our test framework.
-
- 22 Oct, 2011 1 commit
-
-
Ashish Agarwal authored
TESTS: CRASH, CORRUPTION, 4G MEMOR Issue: Valgrind errors due to checksum and optimize query against archive tables with null columns. Table record buffer was not initialized. Solution: Initialize the record buffer.
-
- 21 Oct, 2011 7 commits
-
-
Nirbhay Choubey authored
-
Nirbhay Choubey authored
BREAKS SOURCE RELEASE BUILD Some of the required files were not getting copied while performing 'make dist' and hence the build failed for the created distribution source. Added the missing files to Makefile.am.
-
Ashish Agarwal authored
TESTS: CRASH, CORRUPTION, 4G MEMOR Issue: Valgrind errors due to checksum and optimize query angaist archive tables with null columns. Table record buffer was not initialized. Solution: Initialize the record buffer.
-
Sergey Vojtovich authored
-
Sergey Vojtovich authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
btr_record_not_null_field_in_rec(): Remove the parameter rec. Use rec_offs_nth_sql_null() instead of rec_get_nth_field(). rb:788 approved by Jimmy Yang
-
- 20 Oct, 2011 3 commits
-
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Sergey Vojtovich authored
USING MYISAM_USE_MMAP ON WINDOWS When OPTIMIZE/REPAIR TABLE is switching to new data file, old data file is removed while memory mapping is still active. With 5.1 implementation of nt_share_delete() it is not permitted to remove mmaped file. This fix disables memory mapping for mi_repair() operations. mysql-test/r/myisam.result: A test case for BUG#11757032. mysql-test/t/myisam.test: A test case for BUG#11757032. storage/myisam/ha_myisam.cc: mi_repair*() functions family use file I/O even if memory mapping is available. Since mixing mmap I/O and file I/O may cause various artifacts, memory mapping must be disabled. storage/myisam/mi_delete_all.c: Clean-up: do not attempt to remap file after truncate, since there is nothing to map.
-
- 19 Oct, 2011 7 commits
-
-
Bjorn Munch authored
-
Sergey Glukhov authored
The assertion in innodb is triggered in this way: 1. mysql server does lookup on the primary key with full key, innodb decides to not store cursor position because "any index_next/prev call will return EOF anyway" 2. server asks innodb to return any next record in the index and the assertion is triggered because no cursor position is stored. It happens when a unique search (match_mode=ROW_SEL_EXACT) in the clustered index is performed. InnoDB has never stored the cursor position after a unique key lookup in the clustered index because storing the position is an expensive operation. The bug was introduced by WL3220 'Loose index scan for aggregate functions'. The fix is to disallow loose index scan optimization for AGG_FUNC(DISTINCT ...) if GROUP_MIN_MAX quick select uses clustered key. mysql-test/r/group_min_max_innodb.result: test case mysql-test/t/group_min_max_innodb.test: test case sql/opt_range.cc: disallow loose index scan optimization for AGG_FUNC(DISTINCT ...) if GROUP_MIN_MAX quick select uses clustered key.
-
Joerg Bruehe authored
-
Bjorn Munch authored
-
unknown authored
modified function do_get_error in mysqltest.cc to handle multiple variable passed added test case to mysqltest.test to verify handling to multiple errors passed
-
Tatjana Azundris Nuernberg authored
-
Tatjana Azundris Nuernberg authored
sql/sp_head.cc: alignment-safe copy sql/sql_cache.cc: alignment-safe copy sql/sql_parse.cc: alignment-safe copy
-
- 18 Oct, 2011 2 commits
-
-
Nirbhay Choubey authored
-
Nirbhay Choubey authored
WITH LIBEDIT Libedit won't build on platforms that do not provide "sys/cdefs.h". Removed the inclusion of cdefs.h from all files other that sys.h, which includes this file only when the header is found while configuring.
-
- 17 Oct, 2011 2 commits
-
-
unknown authored
This patch corrects a defect whereby the bootstrap_server() method was returning 0 instead of the error code generated. The code has been changed to return the correct value returned from the bootstrap command.
-
unknown authored
This patch corrects a defect in the building of the DELETE commands for disabling a plugin whereby only the original plugin data was deleted. If there were other plugins, the delete did not remove the rows. The code has been changed to remove all rows from the mysql.plugin table that were inserted when the plugin was loaded. The test has also been changed to correctly identify if all rows have been deleted.
-
- 14 Oct, 2011 4 commits
-
-
Alfranio Correia authored
warnings are converted to errors, the compiler complains about the fact that binlog_can_be_corrupted is defined but never used. We need to check if this is a dead code or if someone removed any code by mistake.
-
Tor Didriksen authored
-
Tor Didriksen authored
-
Tor Didriksen authored
Buffer over-run on all platforms, crash on windows, wrong result on other platforms, when rounding numbers which start with 999999999 and have precision = 9 or 18 or 27 or 36 ... mysql-test/r/type_newdecimal.result: New test cases. mysql-test/t/type_newdecimal.test: New test cases. sql/my_decimal.h: Add sanity checking code, to catch buffer over/under-run. strings/decimal.c: The original initialization of intg1 (add 1 if buf[0] == DIG_MAX) will set p1 to point outside the buffer, and the loop to copy the original value while (buf0 < p0) *(--p1) = *(--p0); will overwrite memory outside the my_decimal object.
-