summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Placement change:Joerg Bruehe2012-11-0723-2/+2
| | | | | Top level "SPECIFIC-ULN/" was inappropriate, put the files to create RPMs for ULN into "packaging/rpm-uln/".
* Bug#14466617 - INVALID WRITES AND/OR CRASH WITH USERPraveenkumar Hulakund2012-11-077-54/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VARIABLES Analysis: ------------- After executing the query, new value of the user defined variables are set in the function "select_dumpvar::send_data". "select_dumpvar::send_data" first calls function "Item_func_set_user_var::save_item_result()". This function checks the nullness of the Item_field passed as parameter to it and saves it. The nullness of item is stored with arg[0]'s null_value flag. Then "select_dumpvar::send_data" calls "Item_func_set_user_var::update()" which notices null result that was saved and calls "Item_func_set_user_var:: update_hash". But here null_value is not set and args[0] is different from that given to function "Item_func_set_user_var:: set_item_result()". This causes "Item_func_set_user_var:: update_hash" function to believe that its getting non-null value. "user_var_entry::length" set to 0 and hence "user_var_entry::value" is made to point to extra_area allocated in "user_var_entry". And "Item_func_set_user_var::update_hash" tries to write at memory beyond extra_area for result type DECIMAL. Because of this invalid write issue is reported by Valgrind. Before this bug was introduced, we avoided this problem by creating "Item_func_set_user_var" object with the same Item_field as arg[0] and as parameter to Item_func_set_user_var::save_item_result(). But now they are refering to different args[0]. Because of this null_value flag set in parameter Item_field in function "Item_func_set_user_var::save_item_result()" is not reflected in "Item_func_set_user_var" object. Fix: ------------ This issue is reported on versions 5.5.24. Issue does not exists in 5.5.23, 5.1, 5.6 and trunk. This issue was introduced by revid:georgi.kodinov@oracle.com-20120309130449-82e3bs5v3et1x0ef (fix for bug #12408412), which was pushed into 5.5 and later releases. This patch has later been reversed in 5.6 and trunk by revid:norvald.ryeng@oracle.com-20121010135242-xj34gg73h04hrmyh (fix for bug #14664077). Backported this patch in 5.5 also to fix this issue.
* (no commit message)mysql-builder@oracle.com2012-11-070-0/+0
|
* Bug #11759445: CAN'T DELETE ROWS FROM MEMORY TABLE WITH HASH KEY.Venkata Sidagam2012-11-071-4/+14
|\ | | | | Merging from 5.1 to 5.5
| * Bug #11759445: CAN'T DELETE ROWS FROM MEMORY TABLE WITH HASH KEY.Venkata Sidagam2012-11-071-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Brief description: After insert some rows to MEMORY table with HASH key some rows can't be deleted in one step. Problem Analysis/solution: info->current_ptr will have the information about the current hash pointer from where we can traverse to the list to get all the remaining tuples. In hp_delete_key we are updating info->current_ptr with the last_pos based on the flag parameter(which is the keydef and last index are same). As part of the fix we are making it to zero only when the code flow reaches to the end of the function hp_delete_key() it means that the next record which has to get deleted will be at the starting of the list so, that in the next call to read record(heap_rnext()) will take line number 100 path instead of 102 path, please see the below code in file hp_rnext.c, function heap_rnext(). 99 else if (!info->current_ptr) /* Deleted or first call */ 100 pos= hp_search(info, keyinfo, info->lastkey, 0); 101 else 102 pos= hp_search(info, keyinfo, info->lastkey, 1); with that change the hp_search() will update the info->current_ptr with the record which needs to be deleted.
* | Bug#11751825 - OPTIMIZE PARTITION RECREATES FULL TABLE INSTEAD JUST PARTITIONAditya A2012-11-061-4/+24
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROBLEM ------- optimize on partiton will recreate the whole table instead of just partition. ANALYSIS -------- At present innodb doesn't support optimize option ,so we do a rebuild of the whole table and then call analyze() on the table.Presently for any optimize() option (on table or partition) we display the following info to the user "Table does not support optimize, doing recreate + analyze instead". FIX --- It was decided for GA versions(5.1 and 5.5) whenever the user tries to optimize a partition(s) we will will display the following info the user "Table does not support optimize on partitions. All partitions will be rebuilt and analyzed." Earlier partitions were not analyzed.Now all partitions will be analyzed. If the user wants to optimize the whole table ,we will display the previous info to the user. i.e "Table does not support optimize, doing recreate + analyze instead" For 5.6+ versions we will raise a new bug to support optimize() options in innodb.
| * Bug#11751825 - OPTIMIZE PARTITION RECREATES FULL TABLE INSTEAD JUST PARTITIONAditya A2012-11-061-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROBLEM ------- optimize on partiton will recreate the whole table instead of just partition. ANALYSIS -------- At present innodb doesn't support optimize option ,so we do a rebuild of the whole table and then call analyze() on the table.Presently for any optimize() option (on table or partition) we display the following info to the user "Table does not support optimize, doing recreate + analyze instead". FIX --- It was decided for GA versions(5.1 and 5.5) whenever the user tries to optimize a partition(s) we will will display the following info the user "Table does not support optimize on partitions. All partitions will be rebuilt and analyzed." Earlier partitions were not analyzed.Now all partitions will be analyzed. If the user wants to optimize the whole table ,we will display the previous info to the user. i.e "Table does not support optimize, doing recreate + analyze instead" For 5.6+ versions we will raise a new bug to support optimize() options in innodb.
* | (no commit message)mysql-builder@oracle.com2012-11-050-0/+0
| |
* | Version change upmerge - emptyJoerg Bruehe2012-11-050-0/+0
|\ \ | |/
| * Raise version number after cloning 5.1.67akhil.mohan@oracle.com2012-11-051-1/+1
| |
* | Raise version number after cloning 5.5.29hery.ramilison@oracle.com2012-11-031-1/+1
| |
* | merge 5.1 => 5.5Tor Didriksen2012-11-012-1/+2
|\ \ | |/
| * Bug#14840488 VALGRIND ERRORS IN MYSQL_CLIENT_TESTTor Didriksen2012-11-012-1/+2
| | | | | | | | | | Add missing DBUG_RETURNs, otherwise the debug-stack gets messed up, and _db_enter_ and _db_exit_ will access data outside the current stack frame.
* | BUG#13556441: CHECK AND REPAIR TABLE SHOULD BE MORE ROBUST [4]Venkata Sidagam2012-10-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem description: mysql server crashes when we run repair table on currupted table. Analysis: The problem with this bug seem to be key_reflength out of bounds (186 according to debugger). We read this value from meta-data segment of .MYI file while doing mi_open(). If you look into _mi_kpointer() you can see that the upper limit for key_reflength is 7. Solution: In mi_open() there is a line like: if (share->base.keystart > 65535 || share->base.rec_reflength > 8) we should verify key_reflength here as well.
* | BUG#14485479: Merge into mysql-5.5 branchAshish Agarwal2012-10-313-2/+26
|\ \
| * | BUG#14485479: INSTALL AUDIT PLUGIN HANGS IF WE TRY TOAshish Agarwal2012-10-313-2/+26
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DISABLE AND ENABLED DURING DDL OPERATION PROBLEM: Same thread trying to acquire the same mutex second time leads to hang/server crash. While [un]installing audit_log plugin a thread acquires the LOCK_plugin mutex and after successful initialization tries to write in mysql.plugin table. It holds this mutex for a long time. If some how plugin table is corrupted then a write to plugin table will throw an error, thread try to log this error in the audit_log plugin, doing so it tries to acquire the mutex again and results is server hang/crash. SOLUTION: Releasing the LOCK_plugin mutex before writing in mysql.plugin table. We dont need to hold this mutex as thread already acquired a TL_WRITE lock on mysql.plugin table.
* | BUG#11754894: MYISAMCHK ERROR HAS INCORRECT REFERENCE Anirudh Mangipudi2012-10-300-0/+0
|\ \ | |/ | | | | TO MYISAM_SORT_BUFFER_SIZE Null Merge from 5.1 to 5.5
| * BUG#11754894: MYISAMCHK ERROR HAS INCORRECT REFERENCE Anirudh Mangipudi2012-10-301-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | TO 'MYISAM_SORT_BUFFER_SIZE' Problem: 'myisam_sort_buffer_size' is a parameter used by mysqld program only whereas 'sort_buffer_size' is used by mysqld and myisamchk programs. But the error message printed when myisamchk program is run with insufficient buffer size is myisam_sort_buffer_size is too small which may mislead to the server parameter myisam_sort_buffer_size. SOLUTION: A parameter 'myisam_sort_buffer_size' is added as an alias for 'sort_buffer_size' and the 'sort_buffer_size' parameter is marked as deprecated. So myisamchk also has both the parameters with the same role.
* | BUG#11754894: MYISAMCHK ERROR HAS INCORRECT REFERENCE Anirudh Mangipudi2012-10-301-1/+8
|\ \ | | | | | | | | | TO 'MYISAM_SORT_BUFFER_SIZE' Merging from 5.1 to 5.5
| * | BUG#11754894: MYISAMCHK ERROR HAS INCORRECT REFERENCE Anirudh Mangipudi2012-10-301-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TO 'MYISAM_SORT_BUFFER_SIZE' Problem: 'myisam_sort_buffer_size' is a parameter used by mysqld program only whereas 'sort_buffer_size' is used by mysqld and myisamchk programs. But the error message printed when myisamchk program is run with insufficient buffer size is myisam_sort_buffer_size is too small which may mislead to the server parameter myisam_sort_buffer_size. SOLUTION: A parameter 'myisam_sort_buffer_size' is added as an alias for 'sort_buffer_size' and the 'sort_buffer_size' parameter is marked as deprecated. So myisamchk also has both the parameters with the same role.
* | | BUG#14659685: main.mysqlbinlog_row_myisam.test ↵Shivji Kumar Jha2012-10-3016-2/+2
|\ \ \ | | |/ | |/| | | | | | | main.mysqlbinlog_row_innodb.test are skipped merge from 5.1 into 5.5
| * | BUG#14659685 - main.mysqlbinlog_row_myisam andShivji Kumar Jha2012-10-3016-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | main.mysqlbinlog_row_innodb are skipped by mtr === Problem === The following tests are wrongly placed in main suite and as a result these are not run with proper binlog format combinations. Some are always skipped by mtr. 1) mysqlbinlog_row_myisam 2) mysqlbinlog_row_innodb 3) mysqlbinlog_row.test 4) mysqlbinlog_row_trans.test 5) mysqlbinlog-cp932 6) mysqlbinlog2 7) mysqlbinlog_base64 === Background === mtr runs the tests placed in main suite with binlog format=stmt. Those that need to be tested against binlog format=row or mixed or more than one binlog format and require only one mysql server are placed in binlog suite. mtr runs tests in binlog suite with all three binlog formats(stmt,row and mixed). === Fix === 1) Moved the test listed in problem section above to binlog suite. 2) Added prefix "binlog_" to the name of each test case moved. Renamed the coresponding result files and option files accordingly.
* | | (no commit message)mysql-builder@oracle.com2012-10-290-0/+0
| | |
* | | (no commit message)mysql-builder@oracle.com2012-10-290-0/+0
|\ \ \ | |/ /
| * | (no commit message)mysql-builder@oracle.com2012-10-290-0/+0
| | |
* | | (no commit message)mysql-builder@oracle.com2012-10-290-0/+0
| | |
* | | Merge from 5.1.Alexander Nozdrin2012-10-292-9/+11
|\ \ \ | |/ /
| * | Fix sp_notembedded.test.Alexander Nozdrin2012-10-292-11/+11
| | |
* | | Bug#14737559 BZR JOIN PLUGIN TREES INTO INTERNAL/PLUGINTor Didriksen2012-10-244-1/+7
| | | | | | | | | | | | | | | Part three: Fix some search paths.
* | | local mergeTor Didriksen2012-10-2312-32/+170
|\ \ \
| * | | Use MESSAGE(STATUS ...) as we don't want any popup from the build system.Tor Didriksen2012-10-232-2/+2
| | | |
| * | | Merge mysql-5.1 to mysql-5.5.Marko Mäkelä2012-10-221-1/+5
| |\ \ \ | | |/ /
| | * | Backport from 5.6: Bug#14769820 ASSERT FLEN == LENMarko Mäkelä2012-10-221-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IN ALTER TABLE ... ADD UNIQUE KEY A bogus debug assertion failure occurred when reporting a duplicate key on a column prefix of a CHAR column. This is a regression from Bug#14729221 IN-PLACE ALTER TABLE REPORTS '' INSTEAD OF REAL DUPLICATE VALUE FOR PREFIX KEYS. The assertion is only present when UNIV_DEBUG is defined (which it is in debug builds starting from MySQL 5.5). It is a case of overasserting. Fix approved by Inaam Rana on IM.
| * | | BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-212-9/+16
| |\ \ \ | | |/ / | | | | Merge from mysql-5.1 into mysql-5.5.
| | * | BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-212-9/+16
| | | | | | | | | | | | | | | | Moved explicit instantiation of available_buffer and valid_buffer_range template functions to sql/log_event.cc.
| * | | BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-210-0/+0
| |\ \ \ | | |/ / | | | | Null merge from mysql-5.1 into mysql-5.5.
| | * | BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-213-7/+86
| | |\ \ | | | | | | | | | | Merge bundle on mysql-5.1.
| * | \ \ BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-213-7/+86
| |\ \ \ \ | | | | | | | | | | | | Merge bundle on mysql-5.5.
| | * \ \ \ BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-123-7/+86
| | |\ \ \ \ | | | | |/ / | | | |/| | Merge from mysql-5.1 into mysql-5.5.
| | | * | | BUG#14629727: USER_VAR_EVENT IS MISSING RANGE CHECKSNuno Carvalho2012-10-123-7/+86
| | | | |/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug had two problems: P1) Reads out of bounds; P2) Writes out of bounds. PROBLEM P1 ---------- User_var_log_event unmarshalling from binlog was not performing range checks when using name_len and val_len variables to walk on event buffer. Added range checks to User_var_log_event unmarshalling to prevent unmarshalling errors. PROBLEM P2 ---------- User_var_log_event value was allocated on thread stack, what caused stack frame errors when User_var_log_event value was bigger than thread stack size. Currently value is allocated on heap memory.
| * | | | Fix formatting in 'INFO_BIN' on Windows - backport.Joerg Bruehe2012-10-191-3/+5
| | | | |
| * | | | Upmerge a backport - emptyJoerg Bruehe2012-10-190-0/+0
| |\ \ \ \ | | | |_|/ | | |/| |
| | * | | Automerge into main 5.1Joerg Bruehe2012-10-191-3/+18
| | |\ \ \
| | | * | | Backport this change from MySQL 5.5 to 5.1:Joerg Bruehe2012-09-111-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug #14181049: MYSQL_INSTALL_DB.PL CREATES EMPTY SYSTEM TABLES FOR MYSQL The script is different from what's used on unixes. It was not playing the table insertion script (mysql_system_tables_data.sql), although it was checking for the presence of this script. Fixed by re-enabling the lookup for this file and replaying it at bootstrap time. Note that on the Unixes "SELECT @@hostname" does return a fully qualified name, whereas on Windows it returns only a hostname. So by default we're filtering records in the mysql.user table until we ensure this is fixed. The change was coded in 5.5 by Georgi Kodinov <Georgi.Kodinov@Oracle.com>
| * | | | | Bug #14226171 EXCESSIVE ROW LOCKING WITH UPDATE IN 5.5.25Annamalai Gurusami2012-10-191-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a DML statement is issued, and if the index merge access method is chosen, then many rows from the storage engine will be locked because of the way the algorithm works. Many rows will be locked, but they will not be part of the final result set. To reduce the excessive locking, the locks of unmatched rows are released by this patch. This patch will affect only transactions with isolation level equal to or less stricter than READ COMMITTED. This is because of the behaviour of ha_innobase::unlock_row(). rb://1296 approved by jorgen and olav.
| * | | | | Bug#13726751 - 8 BYTE MEMORY LEAK IN DO_SAVE_BLOBNeeraj Bisht2012-10-181-7/+0
| |\ \ \ \ \ | | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem:- When we execute a query which has subquery with GROUP BY, ORDER BY and have a BLOB column,results a memory leak. Analysis:- In case of subquery, which have GROUP BY on BLOB and a ORDER BY on other field and BLOB is not a key. We allocate a tmp buffer to copy_field to take care of BLOB value.This copy_field value can have copies of its in two join(objects), so while freeing this copy_field we have to take care that it is not deleted twice. The double deletion of tmp_table_param.copy_field is handled by two patches. One by Kostja : revid:sp1r-konstantin@mysql.com-20050627101056-55153 Fix the broken test suite in -debug build. and other by Oleksandr revid:sp1r-bell@sanja.is.com.ua-20060118114857-19905 Excluded posibility of tmp_table_param.copy_field double deletion (BUG#14851). both of this patches are commited in different branch and while merging they both get placed,but there is no need for Kostja patch as Oleksandr patch handle this.
| | * | | | Bug#13726751 - 8 BYTE MEMORY LEAK IN DO_SAVE_BLOBNeeraj Bisht2012-10-181-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem:- When we execute a query which has subquery with GROUP BY, ORDER BY and have a BLOB column,results a memory leak. Analysis:- In case of subquery, which have GROUP BY on BLOB and a ORDER BY on other field and BLOB is not a key. We allocate a tmp buffer to copy_field to take care of BLOB value.This copy_field value can have copies of its in two join(objects), so while freeing this copy_field we have to take care that it is not deleted twice. The double deletion of tmp_table_param.copy_field is handled by two patches. One by Kostja : revid:sp1r-konstantin@mysql.com-20050627101056-55153 Fix the broken test suite in -debug build. and other by Oleksandr revid:sp1r-bell@sanja.is.com.ua-20060118114857-19905 Excluded posibility of tmp_table_param.copy_field double deletion (BUG#14851). both of this patches are commited in different branch and while merging they both get placed,but there is no need for Kostja patch as Oleksandr patch handle this.
| * | | | | Merge mysql-5.1 to mysql-5.5.Marko Mäkelä2012-10-181-7/+12
| |\ \ \ \ \ | | |/ / / /
| | * | | | Bug#14758405: ALTER TABLE: ADDING SERIAL NULL DATATYPE: ASSERTION:Marko Mäkelä2012-10-183-14/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | LEN <= SIZEOF(ULONGLONG) This bug was caught in the WL#6255 ALTER TABLE...ADD COLUMN in MySQL 5.6, but there is a bug in all InnoDB versions that support auto-increment columns. row_search_autoinc_read_column(): When reading the maximum value of the auto-increment column, and the column only contains NULL values, return 0. This corresponds to the case when the table is empty in row_search_max_autoinc(). rb:1415 approved by Sunny Bains
| * | | | | merge from mysql-5.1 -> mysql-5.5Krunal Bauskar krunal.bauskar@oracle.com2012-10-172-0/+148
| |\ \ \ \ \ | | |/ / / /