- 07 May, 2013 3 commits
-
-
Sergey Glukhov authored
-
Sergey Glukhov authored
The problem happened due to broken left expression in Item_in_optimizer object. In case of the bug left expression is runtime created Item_outer_ref item which is deleted at the end of the statement and one of Item_in_optimizer arguments becomes bad when re-executed. The fix is to use real_item() instead of original left expression. Note: It feels a bit weird that after preparing, the field is directly part of the generated Item_func_eq, whereas in execution it is replaced with an Item_outer_ref wrapper object.
-
Sujatha Sivakumar authored
TRANSACTION ROLLBACK Problem: ======= "prepare_commit_mutex" is acquired during "innobase_xa_prepare" and it is freed only in "innobase_commit". After prepare, if the commit operation fails the transaction is rolled back but the mutex is not released. Analysis: ======== During transaction commit process transaction is prepared and the "prepare_commit_mutex" is acquired to preserve the order of commit. After prepare write to binlog is initiated. File: sql/handler.cc if (error || (is_real_trans && xid && -----> (error= !(cookie= tc_log->log_xid(thd, xid))))) { ha_rollback_trans(thd, all); In the above code "tc_log->log_xid" operation fails. When the write to binlog fails the transaction is rolled back with out freeing the mutex. A subsequent "INSERT" operation tries to acquire the same mutex during its commit process and the server aborts. Fix: === "prepare_commit_mutex" is freed during "innobase_rollback".
-
- 06 May, 2013 6 commits
-
-
Annamalai Gurusami authored
-
Jon Olav Hauglid authored
The problem was that if UPDATE with subselect caused a deadlock inside InnoDB, this deadlock was not properly handled by the SQL layer. This meant that the SQL layer would try to unlock the row after InnoDB had rolled back the transaction. This caused an assertion inside InnoDB. This patch fixes the problem by checking for errors reported by SQL_SELECT::skip_record() and not calling unlock_row() if any errors have been reported. This bug is similar to Bug#13586591, but for UPDATE rather than DELETE. Similar issues in filesort/opt_range/ sql_select will be investigated and handled in the scope of Bug#16767929
-
Annamalai Gurusami authored
Bug #16754901 PARS_INFO_FREE NOT CALLED IN DICT_CREATE_ADD_FOREIGN_TO_DICTIONARY Problem: There are two situations here. The constraint name is explicitly given by the user and the constraint name is automatically generated by InnoDB. In the case of generated constraint name, it is formed by adding table name as prefix. The table names are stored internally in my_charset_filename. In the case of constraint name explicitly given by the user, it is stored in UTF8 format itself. So, in some situations the constraint name is in utf8 and in some situations it is in my_charset_filename format. Hence this problem. Solution: Always store the foreign key constraint name in UTF-8 even when automatically generated. Bug #16754901 PARS_INFO_FREE NOT CALLED IN DICT_CREATE_ADD_FOREIGN_TO_DICTIONARY Problem: There was a memory leak in the function dict_create_add_foreign_to_dictionary(). The allocated pars_info_t object is not freed in the error code path. Solution: Allocate the pars_info_t object after the error checking. rb#2368 in review
-
Murthy Narkedimilli authored
-
murthy.narkedimilli@oracle.com authored
-
balasubramanian.kandasamy@oracle.com authored
-
- 03 May, 2013 1 commit
-
-
mysql-builder@oracle.com authored
No commit message
-
- 30 Apr, 2013 5 commits
-
-
michael.izioumtchenko@oracle.com authored
-
michael.izioumtchenko@oracle.com authored
eliminate a race condition over recv_sys->n_addrs which might result in a database corruption in recovery, without reporting a recovery error. recv_recover_page_func(): move the code segment that decrements recv_sys->n_addrs to the end of the function, after the call to mtr_commit() rb://2282 approved by Inaam
-
Neeraj Bisht authored
GROUP BY, MYISAM Merge fix for Bug#16222245 from mysql-5.1 to mysql-5.5
-
Neeraj Bisht authored
GROUP BY, MYISAM Problem:- In a query, where we are using loose index scan optimization and we have MIN() causes segmentation fault(where table row length is less then key_length). Analysis: While using loose index scan for MIN(), we call key_copy(), to copy the key data from record. This function is using temporary record buffer to store key data from the record buffer.But in case where the key length is greater then the buffer length, this will cause a segmentation fault. Solution: Give a proper buffer to store a key record.
-
Marko Mäkelä authored
After a clean shutdown, InnoDB will not check the *.ibd file headers, for maximum performance. This is unchanged before and after this patch. What this fix addresses is the case when crash recovery is needed. Previously, InnoDB could load a corrupted tablespace file. buf_page_is_corrupted(): Add the parameter check_lsn. fil_check_first_page(): New function, to perform a consistency check on the first page of a file. This can be overridden by setting innodb_force_recovery. fil_read_first_page(), fil_open_single_table_tablespace(), fil_load_single_table_tablespace(): Invoke fil_check_first_page(). open_or_create_data_files(): Check the status of fil_open_single_table_tablespace(). rb#2352 approved by Jimmy Yang
-
- 27 Apr, 2013 1 commit
-
-
Bill Qu authored
When logging to the binary log in row, updates and deletes to a BLACKHOLE engine table are skipped. It is impossible to log binary log in row format for updates and deletes to a BLACKHOLE engine table, as no row events can be generated in these cases. After fix, generate a warning for UPDATE/DELETE statements that modify a BLACKHOLE table, as row events are not logged in row format.
-
- 25 Apr, 2013 1 commit
-
-
Venkatesh Duggirala authored
SINGLE DATABASE; MYSQLBINLOG Problem: If last subevent inside a RBR event is skipped while replaying a binary log using mysqlbinlog with --database=... option, generated output is missing end marker('/*!*/;) for that RBR event. Thence causing syntax error while replaying the generated output. Fix: Append end marker ('/*!*/;) if the last subevent is getting skipped. Append end marker if the last subevent is getting skipped.
-
- 24 Apr, 2013 6 commits
-
-
Georgi Kodinov authored
MYSQL_READ_DEFAULT_FILE Parsing of the plugin-dir config file option was not working due to a typo. Fixed the typo. No test case can be added due to lack of support for defaults-exitra-file testing in mysql-test-run.pl. Thanks to Sinisa for contributing the fix.
-
mysql-builder@oracle.com authored
No commit message
-
mysql-builder@oracle.com authored
No commit message
-
Annamalai Gurusami authored
-
Annamalai Gurusami authored
OPENING MISSING PARTITION In the ha_innobase::open() call, for normal tables, there is no retry logic. But for partitioned tables, there is a retry logic introduced as fix for: http://bugs.mysql.com/bug.php?id=33349 https://support.mysql.com/view.php?id=21080 The Bug#33349, does not provide sufficient information to analyze the original problem. The original problem reported by bug#33349 is also minor (just an annoyance and no loss of functionality). Most importantly, the retry logic has been introduced without any associated test case. So we are removing the retry logic for partitioned tables. When the original problem occurs, a different solution will be explored.
-
Annamalai Gurusami authored
-
- 22 Apr, 2013 2 commits
-
-
Murthy Narkedimilli authored
-
murthy.narkedimilli@oracle.com authored
-
- 20 Apr, 2013 2 commits
-
-
Neeraj Bisht authored
Problem: In query like select 1 from .. order by match .. against ...; causes a debug assert failue. Analysis: In union type query like (select * from order by a) order by b; or (select * from order by a) union (select * from order by b); We skip resolving of order by a for 1st query and order by of a and b in 2nd query. This means that, in case when our order by have Item_func_match class, we skip resolving it. But we maintain a ft_func_list and at the time of optimization, when we Perform FULLTEXT search before all regular searches on the bases of the list we call Item_func_match::init_search() which will cause debug assert as the item is not resolved. Solution: We will skip execution if the item is not fixed and we will not fix index(Item_func_match::fix_index()) for which Item_func_match::fix_field() is not called so that on later changes we can check the dependency on fix field. bz
-
Neeraj Bisht authored
Problem: In query like select 1 from .. order by match .. against ...; causes a debug assert failue. Analysis: In union type query like (select * from order by a) order by b; or (select * from order by a) union (select * from order by b); We skip resolving of order by a for 1st query and order by of a and b in 2nd query. This means that, in case when our order by have Item_func_match class, we skip resolving it. But we maintain a ft_func_list and at the time of optimization, when we Perform FULLTEXT search before all regular searches on the bases of the list we call Item_func_match::init_search() which will cause debug assert as the item is not resolved. Solution: We will skip execution if the item is not fixed and we will not fix index(Item_func_match::fix_index()) for which Item_func_match::fix_field() is not called so that on later changes we can check the dependency on fix field.
-
- 18 Apr, 2013 1 commit
-
-
balasubramanian.kandasamy@oracle.com authored
-
- 17 Apr, 2013 1 commit
-
-
Tor Didriksen authored
Zero out the entire struct, rather than the first sizeof(void*) bytes.
-
- 16 Apr, 2013 3 commits
-
-
sayantan dutta authored
-
Murthy Narkedimilli authored
-
Murthy Narkedimilli authored
-
- 14 Apr, 2013 2 commits
-
-
Chaithra Gopalareddy authored
-
Chaithra Gopalareddy authored
!TABLES->NEXT_NAME_RESOLUTION_TABLE) || !TAB Problem: The context info of select query gets corrupted when a query with group_concat having order by is present in an order by clause of the select query. As a result, server crashes with an assert. Analysis: While parsing order by for group_concat, it is presumed that it is always present before the actual order by for the select query. As a result, parser uses select->order_list to populate the order by items of group_concat and creates a select->gorder_list to which select->order_list is copied onto. Once this is done, it empties the select->order_list. In the case presented in the bugpage, as order by is already parsed when group_concat's order by is encountered, parser presumes that it is the second order by in the select query and creates fake_lex_unit which results in the change of context info. Solution: Make group_concat's order by parsing independent of the select
-
- 12 Apr, 2013 3 commits
-
-
Balasubramanian Kandasamy authored
-
Venkatesh Duggirala authored
WITH A PORT NUMBER ENCLOSED IN QUOTES Problem: mysqldump --dump-slave --include-master-host-port prints the CHANGE MASTER command in the generated logical backup. The PORT number that is generated with this command is a string and should be an integer. Fix: Remove the Enclosed quotes for port number.
-
Jorgen Loland authored
PARTIAL INDEX Consider the following table definition: CREATE TABLE t ( my_col CHAR(10), ... INDEX my_idx (my_col(1)) ) The my_idx index is not able to distinguish between rows with equal first-character my_col-values (e.g. "f", "foo", "fee"). Prior to this CS, the range optimizer would translate "WHERE my_col NOT IN ('f', 'h')" into (optimizer trace syntax) "ranges": [ "NULL < my_col < f", "f < my_col" ] But this was not correct because the rows with values "foo" and "fee" would not belong to any of those ranges. However, the predicate "my_col != 'f' AND my_col != 'h'" would translate to "ranges": [ "NULL < my_col" ] because get_mm_leaf() changes from "<" to "<=" for partial keyparts. This CS changes the range optimizer implementation for NOT IN to behave like a conjunction of NOT EQUAL: it replaces "<" with "<=" for all but the first range when the keypart is partial.
-
- 11 Apr, 2013 1 commit
-
-
bin.x.su@oracle.com authored
Solution:Set diff_time to 0 if finish_time < start_time
-
- 10 Apr, 2013 2 commits
-
-
Tor Didriksen authored
Add execute bit for scripts: - in build directory - in install directory
-
Thayumanavar authored
DESCRIPTION AND FIX: DBUG_EXPLAIN result in buffer overflow when the DEBUG variable values length exceed 255. In _db_explain_ function which call macro str_to_buf incorrectly passes the length of buf avaliable to strnmov as len+1. The fix calculates the avaliable space in buf and passes it to strnxmov.
-