------------------------------------------------------------
revno: 4868 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-04-05 09:04:03 +0300 message: Merge from mysql-5.6 to the 5.6.11 release clone. ------------------------------------------------------------ revno: 5006 revision-id: marko.makela@oracle.com-20130403124730-s8ixii9q152cchtz parent: ritheesh.vedire@oracle.com-20130403104310-53u66hzx3pvb0doa committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-04-03 15:47:30 +0300 message: Fix regression Bug#16544143 ENABLE PARTIAL ROLLBACK DURING ONLINE ALTER TABLE row_log_allocate(): Initialize the added fields. ------------------------------------------------------------ revno: 4867 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-04-05 09:02:38 +0300 message: Merge from mysql-5.6 to the 5.6.11 release clone. ------------------------------------------------------------ revno: 5004 revision-id: marko.makela@oracle.com-20130403072604-74qjf3rfp64s4mcv parent: marko.makela@oracle.com-20130403071833-jlm3cg66gua427yi committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-04-03 10:26:04 +0300 message: Bug#16544143 ENABLE PARTIAL ROLLBACK DURING ONLINE ALTER TABLE During table-copying online ALTER TABLE (such as ADD COLUMN, DROP COLUMN, ADD PRIMARY KEY, changing the ROW_FORMAT), we keep a log of concurrent INSERT and DELETE operations that modify the table data. Off-page columns (BLOBs) are not logged; instead, we just log the pointers as they are in the clustered index records. In order to avoid accessing stale BLOB pointers when applying the log, we used to suspend the purge of records that would free BLOBs, and keep track of user transactions that were rolled back. The bug is that a partial rollback is wrongly treated as a full rollback. That is, the remaining changes of a partially rolled back transaction (one that involved a statement rollback, or an explicit ROLLBACK TO SAVEPOINT) could be lost (rolled back) during the online ALTER TABLE. row_log_table_rollback(), row_log_t::trx_rb: Remove. We no longer keep track of transactions. We keep track of BLOB start pages instead. row_log_table_is_rollback(): Remove. The call in row_merge_insert_index_tuples() was made redundant in the fix of Bug#14712710 BOGUS DUPLICATE KEY ERROR DURING ONLINE ALTER TABLE (rb#1438) when row_merge_read_clustered_index() started to use REPEATABLE READ instead of READ UNCOMMITTED. row_log_t::blobs: A new member, a map from BLOB page numbers to byte offsets in the log. This keeps track of BLOBs freed and allocated during ALTER TABLE. If a previously freed BLOB page is allocated, the log apply must trust the BLOB page number starting from the log record of the new allocation. Example: A transaction inserted a BLOB starting at page 123. There was a partial rollback that undoes the insert, but the transaction remains active. So, we will insert (123,BLOB_FREED) to log->blobs. Later, another BLOB will be inserted at page 123, when log->tail.total=4567. We will replace the (123,BLOB_FREED) with (123,4567) in the log->blobs. The log record for inserting this BLOB would start at offset 4567. row_log_table_blob_free(), row_log_table_blob_alloc(): New functions, for updating row_log_t::blobs. row_log_table_close_func(), row_log_table_apply_op(): Update the new field row_log_buf_t::total. row_log_table_delete(): Add the parameter 'bool purge', to specify whether to log BLOB prefixes for updating secondary indexes. The flag will be set during a partial or full rollback. row_log_table_apply_convert_mrec(): Before accessing any BLOB data, check row_log_t::blobs if it is safe to do so. row_purge_remove_clust_if_poss_low(), row_purge_remove_clust_if_poss(), row_purge_del_mark(), row_purge_upd_exist_or_extern(): Do not suspend the purge if it would free BLOBs during online ALTER TABLE. Rely on the row_log_t::blobs. rec_print_comp(): Display the BLOB pointer when truncating a column. rb#2203 approved by Jimmy Yang ------------------------------------------------------------ revno: 4866 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-04-05 08:55:42 +0300 message: Merge from mysql-5.6 to the 5.6.11 release clone. ------------------------------------------------------------ revno: 5003 revision-id: marko.makela@oracle.com-20130403071833-jlm3cg66gua427yi parent: tor.didriksen@oracle.com-20130402143134-yzbal1l5aay0e42d committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-04-03 10:18:33 +0300 message: Bug#16586355 CORRUPTION IN ONLINE ALTER TABLE...ADD PRIMARY KEY(A,B), CHANGE A ... AFTER B row_log_table_get_pk() assigned the column mapping to the wrong variable. Refactor it to make the logic easier to follow. row_log_table_get_pk_old_col(): Get the old table column corresponding to a new table column. Returns NULL if the column was added to the new table. row_log_table_get_pk_col(): Retrieve the column value from the old table record (and optionally BLOB pages). rb#2274 approved by Jimmy Yang ------------------------------------------------------------ revno: 4865 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Tue 2013-03-26 14:08:38 +0200 message: Bug#16544336 INCONSISTENT ONLINE ADD PRIMARY KEY ON COLUMN PREFIX row_log_table_get_pk(): Invoke dtype_get_at_most_n_mbchars() to properly retrieve the column prefix. This bug affected online ALTER TABLE...ADD PRIMARY KEY where the new PRIMARY KEY included a column prefix. When the definition of primary key is changed, we must identify both the old and new PRIMARY KEY value of the row in the modification log. The bug was that we failed to cut the column prefix, and log apply would fail to find the row. This caused the log apply to skip DELETE operations, either as part of ROW_T_DELETE or as part of ROW_T_UPDATE (update can be treated as delete and insert). rb#2245 approved by Kevin Lewis ------------------------------------------------------------ revno: 4864 committer: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> branch nick: mysql-5.6.11-release timestamp: Mon 2013-03-25 13:58:56 +0100 message: Updated Release Engineering mail address ------------------------------------------------------------ revno: 4863 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-03-22 07:56:18 +0200 message: Bug#16503490 TABLE-COPYING ALTER TABLE MISTAKES PARTIAL ROLLBACK FOR FULL ROLLBACK During table-copying online ALTER TABLE (such as ADD COLUMN, DROP COLUMN, ADD PRIMARY KEY, changing the ROW_FORMAT), we keep a log of concurrent INSERT and DELETE operations that modify the table data. Off-page columns (BLOBs) are not logged; instead, we just log the pointers as they are in the clustered index records. In order to avoid accessing stale BLOB pointers when applying the log, we suspend the purge of records that would free BLOBs, and keep track of user transactions that were rolled back. The bug is that a partial rollback is wrongly treated as a full rollback. That is, the remaining changes of a partially rolled back transaction (one that involved a statement rollback, or an explicit ROLLBACK TO SAVEPOINT) could be lost (rolled back) during the online ALTER TABLE. This patch works around the problem in MySQL 5.6.11. We prohibit partial rollback during table-copying online ALTER TABLE. There are two forms of partial rollback. ROLLBACK TO SAVEPOINT will simply return an error 153, but it will not commit or roll back the transaction. The user has to explicitly commit or roll back. Statement rollback (such as when a duplicate key error is detected during an INSERT) will fake a deadlock and roll back the entire transaction. lock_tables_are_being_altered(): A predicate for checking if a transaction has locked any tables that are being processed by table-copying ALTER TABLE. This is similar to lock_table_has(), which is invoked for the transaction of the currently running thread, without acquiring any mutex. innobase_rollback_to_savepoint(): Return HA_ERR_NO_SAVEPOINT if online ALTER is active. row_mysql_handle_errors(): Fake a deadlock if online ALTER is active and we would be rolling back to a savepoint. We do not take index->lock for the dict_index_is_online_ddl() checks for performance reasons. The index cannot go away while there is a transaction holding locks on it. rb#2233 approved by Kevin Lewis ------------------------------------------------------------ revno: 4862 committer: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> branch nick: mysql-5.6.11-release timestamp: Thu 2013-03-21 14:47:33 +0100 message: Fixed SuSE Build issue ------------------------------------------------------------ revno: 4861 committer: Shaohua Wang <shaohua.wang@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-03-15 17:53:01 +0800 message: BUG#16495433-SEGV IN LOCK_GET_TYPE_LOW(),A RACE IN LOCK_WAIT_SUSPEND_THREAD() It's a race condition. We should protect "wait_lock" with lock_sys->mutex in lock_wait_suspend_thread. The definition of "wait_lock" notes about that. rb#2194 approved by Marko & Sunny. ------------------------------------------------------------ revno: 4860 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6.11-release timestamp: Thu 2013-03-14 14:08:55 +0000 message: BUG#16484323: REPLICATION W/GTIDS FAILS WITH ERROR 1778 WHEN RUNNING ANALYZE OR REPAIR TABLE After BUG#16062608 fix, when a command that causes a implicit commit but does not change data is executed when @@SESSION.GTID_NEXT is different from AUTOMATIC, a error is thrown saying that this command is not allowed. Commands ANALYZE and REPAIR TABLE, which cause a implicit commit, were not correctly identified as update queries, so when them were replicated slave raised the error. To fix this incorrect behaviour, ANALYZE and REPAIR TABLE commands are now identified as update queries. ------------------------------------------------------------ revno: 4859 committer: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> branch nick: mysql-5.6.11-release timestamp: Tue 2013-03-12 18:15:37 +0100 message: Updated Code for Bug#16235828 ------------------------------------------------------------ revno: 4858 committer: Jimmy Yang <jimmy.yang@oracle.com> branch nick: mysql-5.6.11-release timestamp: Tue 2013-03-12 20:39:51 +0800 message: port bug 16446108 - FTS CRASH from mysql-5.6 to mysql-5.1.11-release ------------------------------------------------------------ revno: 4857 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6.11-release timestamp: Tue 2013-03-12 12:56:31 +0200 message: Bug#16463505 PESSIMISTIC PAGE_ZIP_AVAILABLE() MAY CAUSE INFINITE PAGE SPLIT For a fresh insert, page_zip_available() was counting some fields twice. In the worst case, the compressed page size grows by PAGE_ZIP_DIR_SLOT_SIZE plus the size of the record that is being inserted. The size of the record already includes the fields that will be stored in the uncompressed portion of the compressed page. page_zip_get_trailer_len(): Remove the output parameter entry_size, because no caller is interested in it. page_zip_max_ins_size(), page_zip_available(): Assume that the page grows by PAGE_ZIP_DIR_SLOT_SIZE and the record size (which includes the fields that would be stored in the uncompressed portion of the page). rb#2169 approved by Sunny Bains ------------------------------------------------------------ revno: 4856 committer: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-03-08 13:56:17 +0100 message: Added fix for Bug16445097 ------------------------------------------------------------ revno: 4855 committer: Thayumanavar <thayumanavar.x.sachithanantha@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-03-08 16:06:54 +0530 message: Patch for Bug#16367483 ------------------------------------------------------------ revno: 4854 committer: Thayumanavar <thayumanavar.x.sachithanantha@oracle.com> branch nick: mysql-5.6.11-release timestamp: Fri 2013-03-08 15:49:29 +0530 message: Patch for bug#16448639 from 5.6 ------------------------------------------------------------ revno: 4853 committer: Jimmy Yang <jimmy.yang@oracle.com> branch nick: mysql-5.6.11-release timestamp: Tue 2013-03-05 20:26:44 +0800 message: Merge fix for Bug 16435855 to mysql-5.6.11-release ------------------------------------------------------------ revno: 4852 tags: clone-5.6.11-build committer: Shaohua Wang <shaohua.wang@oracle.com> branch nick: mysql-5.6-bug16429306 timestamp: Mon 2013-03-04 21:08:14 +0800 message: Bug#16429306 - CRASH IN FTS_AST_TERM_SET_WILDCARD Analysis & Solution the assert should be removed, we should deal with node list(FTS_AST_LIST) in fts_ast_term_set_wildcard. In this case, we should set wildcard to the tail node. rb:2114, approved by Jimmy. ------------------------------------------------------------ revno: 4851 committer: Shaohua Wang <shaohua.wang@oracle.com> branch nick: mysql-5.6-bug16373868 timestamp: Mon 2013-03-04 10:20:20 +0800 message: Fix "innodb_fts_stopword_charset" test failure in linux gcov. ------------------------------------------------------------ revno: 4850 [merge] committer: Kristofer Pettersson <kristofer.pettersson@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 14:23:07 +0100 message: automerge ------------------------------------------------------------ revno: 4848.1.9 committer: Jimmy Yang <jimmy.yang@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 20:25:26 +0800 message: Fix Bug #16419661 - INNODB FTS: ELIMINATE THE DELIMITER DURING FTS SEARCH. Also wrap in a fix for tests failure introduced by BUG #16373868 checkin rb://2107 approved by Sunny Bains ------------------------------------------------------------ revno: 4848.1.8 [merge] committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.6-merge timestamp: Fri 2013-03-01 13:45:40 +0100 message: Merge mysql-5.5 --> mysql-5.6 ------------------------------------------------------------ revno: 2875.435.2 [merge] tags: clone-5.5.31-build committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.5-bug16414644 timestamp: Fri 2013-03-01 12:10:09 +0100 message: L0ocal merge ------------------------------------------------------------ revno: 2875.435.1 committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.5-bug16414644 timestamp: Thu 2013-02-28 13:19:15 +0100 message: Bug#16414644 ASSERTION FAILED: SIZE == PFS_ALLOCATED_MEMORY Before this fix, the command SHOW ENGINE PERFORMANCE_SCHEMA STATUS could report wrong amount of memory allocated, when the amount of memory used exceeds 4GB. The problem is that size computations are not done using size_t, so that overflows do occur, truncating the results. This fix compute memory sizes properly with size_t. Tested manually. No test script provided, as the script would need to allocate too much memory for the test. ------------------------------------------------------------ revno: 4848.1.7 committer: Jimmy Yang <jimmy.yang@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 18:22:15 +0800 message: Fix Bug #16409494 - INNODB_FT_CONFIG TABLE DOES NOT APPEAR TO UPDATE rb://2102 approved by Sunny Bains ------------------------------------------------------------ revno: 4848.1.6 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 12:02:45 +0200 message: Correct a test result. ------------------------------------------------------------ revno: 4848.1.5 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 15:13:31 +0530 message: BUG#11753923-SQL THREAD CRASHES ON DISK FULL Merging fix from mysql-5.5 and extra change in mysql-5.6 The no_free_space warning message requires string type for third argument in this version and not integer type. ------------------------------------------------------------ revno: 2875.417.223 committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-03-01 15:01:32 +0530 message: BUG#11753923-SQL THREAD CRASHES ON DISK FULL Fixing post push issue Simulator name used needs to be changed to make it work properly. Analysis: Debug control list addition (ListAddDel function dbug.c file) code was written in such a way that if new element is subset of already existing element, then the new element is not added. i.e., set @@global.debug = '+d,abcd', is existing in the list then you cannot add "a" or "ab" or "abc" in the list. ------------------------------------------------------------ revno: 4848.1.4 committer: Shaohua Wang <shaohua.wang@oracle.com> branch nick: mysql-5.6-bug16373868 timestamp: Fri 2013-03-01 14:44:47 +0800 message: BUG16373868 - INNODB STOPWORD TABLES CANNOT BE SET Analysis: The root cause is that we only support default charset and collation latin1_swedish_ci in fts_valid_stopword_table. Actually we support all charset and collation supported by MySQL in FTS. So we just change the check. rb:2086. Approved by Jimmy. ------------------------------------------------------------ revno: 4848.1.3 committer: Bill Qu <bill.qu@Oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 12:21:13 +0800 message: Bug#16340322 MASTER SCANS ALL BINLOGS WHEN SLAVE RECONNECTS WITH AUTO POSITIONING With both master and slave gtid enabled and slaves reconnects(in-case of I/O thread failure or in-case of change master) sending its Executed_Gtid_set and Retreived_Gtid_set. Master needs to scan all the binlogs before actually starting sending the Events to slave. After fix, master starts from the oldest binary log that contains any GTID that is not in the given gtid set from slave. Since every binary log begins with a Previous_gtids_log_event that contains all GTIDs in all previous binary logs. So we could make an initial pass over the binary logs in reverse order, and read only the Previous_gtids_log_event, to find the oldest binary log. ------------------------------------------------------------ revno: 4848.1.2 [merge] committer: Jon Olav Hauglid <jon.hauglid@oracle.com> branch nick: mysql-5.6-test timestamp: Thu 2013-02-28 19:10:26 +0100 message: Merge from mysql-5.5 mysql-5.6 ------------------------------------------------------------ revno: 2875.417.222 committer: Jon Olav Hauglid <jon.hauglid@oracle.com> branch nick: mysql-5.5-bug16385711 timestamp: Thu 2013-02-28 14:52:47 +0100 message: Bug#16385711: HANDLER, CREATE TABLE IF NOT EXISTS, PROBLEM AFTER MYSQL_HA_FIND This problem occured if a prepared statement tried to create a table for which there already existed a view with the same name while a SQL handler was opened. Before DDL statements are executed, mysql_ha_rm_tables() is called to remove any matching tables from the internal list of opened SQL handler tables. This match was done on TABLE_LIST::db and TABLE_LIST::table_name. This is problematic for views (which use TABLE_LIST::view_db and TABLE_LIST::view_name) and anonymous derived tables. This patch fixes the problem by skipping TABLE_LISTs representing anonymous derived tables and using get_db_name()/get_table_name() which handles views when looking for SQL handler tables to remove. ------------------------------------------------------------ revno: 4848.1.1 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 17:02:58 +0000 message: BUG#16062608: REPLICATION COMMANDS IMPLICIT COMMIT AND SET GTID_NEXT="UUID:X" When @@SESSION.GTID_NEXT is set to "UUID:X" and a statement that implicit commits but does not log changes is executed, like START SLAVE, that GTID is logged as a empty transaction, when on the same scenario with gtid-mode=OFF nothing is logged. This situation is not desirable since it may cause inconsistency problems: 1) DBA is performing a restore or recovery; 2) She/he is applying some empty transactions on slave to avoid problematic transactions from master; 3) Made a mistake and set a not need to skip GTID and didn't revert it. 4) Start slave. 5) That logged GTID, which will cause that the transaction from master will be skipped, will eventually cause inconsistency problems. To avoid that kind of mistakes, when a command that causes a implicit commit but does not change data is executed when @@SESSION.GTID_NEXT is different from AUTOMATIC, a error is thrown saying that this command is not allowed. ------------------------------------------------------------ revno: 4849 committer: Kristofer Pettersson <kristofer.pettersson@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-03-01 14:04:40 +0100 message: Corrected suppression mask to remove all warning messages. ------------------------------------------------------------ revno: 4848 [merge] committer: Kristofer Pettersson <kristofer.pettersson@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 16:31:05 +0100 message: automerge ------------------------------------------------------------ revno: 4845.1.19 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-bug16373973foundrows timestamp: Thu 2013-02-28 16:01:55 +0100 message: Bug#68458 Wrong count from FOUND_ROWS() on MySQL 5.6 Bug#16383173 WRONG COUNT FROM FOUND_ROWS() ON MYSQL 5.6 The handling of SQL_CALC_FOUND_ROWS in combination with "order by with limit" was not specific enough, and could lead to wrong results for FOUND_ROWS() The bug was that we took 'limit_found_rows' from filesort() for cases where filesort() did not produce the final result. Solution: let filesort() tell the execution machinery that a priority queue was in fact used to filter the result. ------------------------------------------------------------ revno: 4845.1.18 committer: Jon Olav Hauglid <jon.hauglid@oracle.com> branch nick: mysql-5.6-warning timestamp: Thu 2013-02-28 14:55:23 +0100 message: Bug#16265300: Fix new compilation warnings from XCode 4.6 This patch fixes three new compilation warnings generated by Clang. It also adds -Wall flag for Clang and disables -Wnull-conversion and -Wunused-private-field. ------------------------------------------------------------ revno: 4845.1.17 [merge] committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: miderr-56 timestamp: Thu 2013-02-28 14:32:03 +0100 message: Bug #16197860 MYSQL_INTALL_DB DOES NOT WORK IN SOLARIS 10 SPARSE ROOT ZONES Bug #68117 mysql_intall_db does not work in solaris 10 sparse root zones Do not abort if unable to write config file, but remember and write an appropriate warning instead of usual text at end. ------------------------------------------------------------ revno: 4845.4.1 committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: midacc-56 timestamp: Thu 2013-02-28 14:17:38 +0100 message: Bug #16197860 MYSQL_INTALL_DB DOES NOT WORK IN SOLARIS 10 SPARSE ROOT ZONES Bug #68117 mysql_intall_db does not work in solaris 10 sparse root zones Do not abort if unable to write config file, but remember and write an appropriate warning instead of usual text at end. ------------------------------------------------------------ revno: 4845.1.16 committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: miderr-56 timestamp: Thu 2013-02-28 14:26:40 +0100 message: Bug #16197542 5.6.X MYSQL_INSTALL_DB PERL SCRIPT NOT ALWAYS SHOWING ERROR MESSAGES Bug #68118 5.6.x mysql_install_db perl script not always showing error messages Added missing $opt parameter where it was missing Added file name where relevant Changed "open" to "write to" for clarity ------------------------------------------------------------ revno: 4845.1.15 committer: Ole John Aske <ole.john.aske@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 14:04:02 +0100 message: Fix for BUG#14058167 SELECT DISTINCT .... ORDER BY FAILS TO SORT ROWS AS SPECIFIED Updated fix after review comments from Guilhem B. The optimizer today use two different fields to determine if an orderd-index may be used to provide rows ordered as required by GROUP BY / ORDER BY. 1) enum { ordered_index_void, // No ordered index avail. ordered_index_group_by, // Use index for GROUP BY ordered_index_order_by // Use index for ORDER BY } JOIN::ordered_index_usage; 'ordered_index_usage' is set up by the optimizer as a result of test_if_skip_sort_order() immediately after we have determined if an ordered index should be used for GROUP BY / ORDER BY. It is also this field which is used to EXPLAIN the query plan. Once 'ordered_index_usage' is set, it could never later be cleared, and it should be obeyed by all later optimizer and execute components. 2) bool JOIN_TAB::sorted Is also set by the optimizer, but in a lot more 'fuzzy' order than 'ordered_index_usage'. - It is initially set to 'true' for the first non-const JOIN_TAB if the query is either grouped or sorted - Without checking if there are any suitable indexes at all. - Prior to execution it is cleared by disable_sorted_access() if we will not use an ordered index access. - Furthermore it is used as argument to handler::ha_index_init() in order to specify whether sorted access is required or not. So 'sorted' has to be correct at this point. Having such fuzzy information as represented in JOIN_TAB::sorted is really bad. It has previously worked - sort of - by requesting a lot more 'sorted' access than really needed. See: BUG 57601: OPTIMIZER IS OVERLY EAGER TO REQUEST ORDERED ACCESS. and WL 5558. This bug was caused by a problem where the 'sorted fuzziness' kicked back the other way: We cleared the 'JOIN_TAB::sorted' even if 'JOIN::ordered_index_usage' specified that an ordered index access should be used. Furthermore this fix cleans up and entirely removes 'JOIN_TAB::sorted' and instead base all ordered index usage on 'JOIN::ordered_index_usage'. The utility method JOIN_TAB::use_order() is introduced as a replacement for JOIN_TAB::sorted. (Use ordered_index_usage) The optimizer is not any longer supposed to re-decide and 'turn off' a previously sorted index. This has made it possible to entirely remove disable_sorted_access(), and together with that the bool on/off argument to need_sorted_output(bool sort). An assert has been introduced in the 2 places where we used to call disable_sorted_acess() to check that JOIN_TAB dont specify 'use_order()' in those places where we used to disable_sorted_access() ------------------------------------------------------------ revno: 4845.1.14 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 14:55:19 +0200 message: Merge mysql-5.6 to local tree. ------------------------------------------------------------ revno: 4845.3.1 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Thu 2013-02-28 10:31:35 +0100 message: Bug #16394472 TIMESTAMP LOGIC REMAINS PARTLY NON-STANDARD WITH EXPLICIT_DEFAULTS_FOR_TIMESTAMP http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html says "In addition, you can initialize or update any TIMESTAMP column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values. ". This behaviour is documented and we need to keep it for backward compatibility. However, if the option explicit_defaults_for_timestamp is on (option which was introduced in 5.6), we here introduce a better, standard-compliant behavior: in that case, if inserting NULL in a TIMESTAMP NOT NULL column, we return an error, like we already do for other types. ------------------------------------------------------------ revno: 4845.1.13 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 14:29:45 +0200 message: Bug#16414044 INCONSISTENT INNODB PERFORMANCE_SCHEMA KEY DECLARATIONS Rename recv_writer_thread and hash_table_locks from old names that contained spaces instead of underscores. Approved by Jimmy Yang ------------------------------------------------------------ revno: 4845.1.12 committer: Jon Olav Hauglid <jon.hauglid@oracle.com> branch nick: mysql-5.6-bug16341673 timestamp: Thu 2013-02-28 10:28:55 +0100 message: Bug#16341673: ASSERTION FAILED: THD->TRANSACTION.XID_STATE.XID.IS_NULL(), FILE TRANSACTION.CC, The triggered assert checks that the XA transaction state is properly reset before trying to start an XA transaction. The problem was that it could be triggered if a statement had failed in autocommit mode right before XA START was issued. The bug was that rollback of statement transactions in auto commit mode did not call transaction.cleanup(). This function, among other things, resets XID state. And reset XID state is checked for during XA START. This patch fixes the problem by reverting to 5.5 behavior and calling transaction.cleanup() for rollback in autocommit mode. This was a regression introduced in 5.6 by WL#5223. ------------------------------------------------------------ revno: 4845.1.11 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 14:52:38 +0530 message: Bug#16218104: MYSQL YASSL - LUCKY THIRTEEN: BREAKING THE TLS AND DTLS RECORD PROTOCOLS Description: merge from 5.5 to 5.6 ------------------------------------------------------------ revno: 2875.417.221 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-28 14:50:42 +0530 message: Bug#16218104: MYSQL YASSL - LUCKY THIRTEEN: BREAKING THE TLS AND DTLS RECORD PROTOCOLS Description: Removing extra test file which remained due to merge problems. ------------------------------------------------------------ revno: 4845.1.10 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6-test timestamp: Thu 2013-02-28 13:18:08 +0530 message: Fix testcase failure for Bug#15927620 Change the table name and make the WHERE condition strict ------------------------------------------------------------ revno: 4845.1.9 [merge] committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 10:00:37 +0530 message: BUG#12400221 - 60926: BINARY LOG EVENTS LARGER THAN MAX_ALLOWED_PACKET Merge from mysql-5.5 -> mysql-5.6 ------------------------------------------------------------ revno: 2875.417.220 [merge] committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-28 09:54:27 +0530 message: BUG#12400221 - 60926: BINARY LOG EVENTS LARGER THAN MAX_ALLOWED_PACKET Merge from mysql-5.1 -> mysql-5.5 ------------------------------------------------------------ revno: 2661.862.121 [merge] tags: clone-5.1.69-build committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.1 timestamp: Thu 2013-02-28 09:52:55 +0530 message: BUG#12400221 - 60926: BINARY LOG EVENTS LARGER THAN MAX_ALLOWED_PACKET Post push patch putting the rpl_max_allowed_packet_stress test in mysql-5.1 inside a new i_rpl_largedata test suite just to avoid any confusion. ------------------------------------------------------------ revno: 2661.874.1 committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2012-09-14 19:19:21 +0530 message: BUG#12400221 - 60926: BINARY LOG EVENTS LARGER THAN MAX_ALLOWED_PACKET Post push patch putting the rpl_max_allowed_packet_stress test in mysql-5.1 inside a new i_rpl_largedata test suite just to avoid any confusion. ------------------------------------------------------------ revno: 4845.1.8 [merge] committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.6-16311231 timestamp: Thu 2013-02-28 02:55:58 +0400 message: Null-merge (16311231 backport) ------------------------------------------------------------ revno: 2875.417.219 [merge] committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.5-16311231 timestamp: Thu 2013-02-28 01:33:00 +0400 message: Manual up-merge (16311231 backport) ------------------------------------------------------------ revno: 2661.862.120 committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.1-16311231 timestamp: Wed 2013-02-27 23:21:34 +0400 message: Bug #16311231: MISSING DATA ON SUBQUERY WITH WHERE + XOR IN IN-CLAUSE USING MYISAM OR MEMORY ENGINE Backport from 5.6. Original message: The coincidences caused a data loss: * The query has IN subqueries nested twice, * the WHERE clause of the inner subquery refers to the outer field, and the whole WHERE clause returns FALSE, * the inner subquery has a LEFT JOIN that joins a single row with a row of NULLs; one of that NULL columns represents the select list of the subquery. Normally, that inner subquery should return empty record set. However, in our case: * the Item_is_not_null_test item goes constant, since its underlying field is NULL (because of LEFT JOIN ... ON FALSE of const table row with a row of nulls); * we evaluate Item_is_not_null_test::val_int() as a part of fake HAVING expression of the transformed subquery; * as far as the underlying field is NULL, we optimize out the whole fake HAVING expression as FALSE as well as a whole subquery with a zero result: Impossible HAVING noticed after reading const tables"; * thus, the optimizer ignores the presence of the WHERE clause (the WHERE expression is FALSE in our case, so the subquery should return empty set); * however, during the evaluation of the Item_is_not_null_test::val_int() in the optimizer, it marked its "owner" with the "was_null" flag -- that forced the subquery to return UNKNOWN instead of empty set. That caused a wrong result. The problem is a regression of the small cleanup in the fix for the bug11827369 (the Item_is_not_null_test part) that conflicts with optimizations in the fix for the bug11752543. Before that regression the Item_is_not_null_test items never were constants. The fix is the rollback of Item_is_not_null_test parts of the bug11827369 fix. ------------------------------------------------------------ revno: 4845.1.7 committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.6-15972078 timestamp: Thu 2013-02-28 02:44:46 +0400 message: Bug #15972078: EXPLAIN UPDATE/DELETE SHOWS INCORRECT POSSIBLE_KEYS The server showed all key names in the table as "possible_keys" in the EXPLAIN single-table UPDATE/DELETE output. Fix: Single-table UPDATE/DELETE command have a very special implementation that doesn't use JOIN optimizer at the top level, i.e. we can't reuse JOIN optimizer statistics here to output "possible_keys" list as usual. OTOH single-table UPDATE & DELETE commands use range optimizer directly, so we can use its index usage statistics instead: the TABLE::possible_quick_keys field has been introduced to collect the usable index map in the check_quick_select() function. ------------------------------------------------------------ revno: 4845.1.6 committer: kevin.lewis@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-27 16:26:46 -0600 message: Fix PB2 test failures related to ALTER statements. One line in the previous patch that worked on mysql-5.5 causes an assert in trx_set_dict_operation in mysql-5.6 and up. ------------------------------------------------------------ revno: 4845.1.5 [merge] committer: kevin.lewis@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-27 13:05:36 -0600 message: Merge Bug#16305265 from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.218 committer: kevin.lewis@oracle.com branch nick: mysql-5.5 timestamp: Wed 2013-02-27 12:44:58 -0600 message: Bug #16305265 HANG IN RENAME TABLE This is a deadlock that will also be fixed in the server by Bug #11844915 - HANG IN THDVAR MUTEX ACQUISITION. So this is a simple alternate method of fixing the same problem, but from within InnoDB. The simple change is to make rename table start a transaction before locking dict_sys->mutex since thd_supports_xa() can call THDVAR which can lock a mutex, LOCK_global_system_variables, that is used in the server by many other activities. At least one of those, sys_var::update(), can call back into InnoDB and try to lock dict_sys->mutex while holding LOCK_global_system_variables. The other bug fix for 11844915 eliminates the use of LOCK_global_system_variables for calls to THDVAR. Approved by marko in http://rb.no.oracle.com/rb/r/2000/ ------------------------------------------------------------ revno: 4845.1.4 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 20:00:40 +0200 message: Merge mysql-5.6 to local copy. ------------------------------------------------------------ revno: 4845.2.1 committer: Inaam Rana <inaam.rana@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 12:23:10 -0500 message: Bug#16223169 MIXING 4K/16K BLOCKS INCREASES 8K FREE BLOCKS AND HOLDS BUF POOL MUTEX LONGER rb://1965 approved by: Marko Makela buf_buddy_free_block() does a linear scan of zip_free list. This can be inefficient when zip_free runs into millions. This patch fixes that by stamping freed blocks in the space_id fields. This way we don't have to scan the zip_free list to ensure that a block's buddy is free. ------------------------------------------------------------ revno: 4845.1.3 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 19:01:07 +0200 message: Bug#16401801 INNODB SPLITS COMPRESSED PAGES WHEN REORGANIZE COULD SUFFICE btr_cur_optimistic_insert(): Restructure the code a bit. Skip the 'split just in case' condition on compressed tables. (Should we optionally skip it on all tables, based on a per-table fill-factor attribute?) rb#2060 approved by Inaam Rana ------------------------------------------------------------ revno: 4845.1.2 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-isoctal timestamp: Wed 2013-02-27 13:31:30 +0100 message: Bug#12407384 AVOID COMPILER WARNINGS IF _XOPEN_SOURCE OR ISOCTAL ARE ALREADY DEFINED ------------------------------------------------------------ revno: 4845.1.1 committer: kevin.lewis@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-27 09:45:31 -0600 message: Bug#16318052-IMPORT TABLESPACE WITH CFG DOES NOT IMPORT DATA Not all pages were flushed from buffer pool when an alter table is done by copy & rename. The testcase included works with this one line change, and fails without it. Approved by Sunny in http://rb.no.oracle.com/rb/r/2016/ ------------------------------------------------------------ revno: 4847 committer: Kristofer Pettersson <kristofer.pettersson@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-28 15:48:50 +0100 message: fixed: typo in comment caused unrecorded test to fail. ------------------------------------------------------------ revno: 4846 committer: Kristofer Pettersson <kristofer.pettersson@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 16:41:20 +0100 message: Bug #13010061/Bug # 14506305: SERVER SHOULD WARN WHEN NEEDED AUTHENTICATION PLUGIN IS NOT LOADED This fix fixes the above two bugs by introducing a new check at server startup and FLUSH PRIVILEGES that iterates over the list of the user accounts, checks if one of the conditions described in the above two bugs is met and logs an appropriate warning in the server log. In particular warnings will be generated for users with sha256 and server started without ssl/rsa config. The check will slow down FLUSH PRIVILEGES and server startup, so a new boolean command line option --validate-user-plugins=[ON|OFF], default ON is added to allow turning it off for installations that don't need this additional safety net. Test cases for various combinations of options added. Existing test results updated as needed. ------------------------------------------------------------ revno: 4845 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 13:40:38 +0200 message: Fix debug test instrumentation for Bug#16067973. innodb_buffer_pool_evict_uncompressed(): New function. innodb_buffer_pool_evict_update(): Try innodb_buffer_pool_evict_uncompressed() in a loop until all uncompressed blocks have been evicted (at most 100 seconds). The operation could fail if a block is i/o-fixed due to flushing. Approved by Sunny Bains. ------------------------------------------------------------ revno: 4844 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Wed 2013-02-27 10:34:08 +0100 message: Merge of local 5.6 with latest changes of remote main my:5.6 ------------------------------------------------------------ revno: 4842.1.1 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Wed 2013-02-27 09:38:01 +0100 message: Merge of local 5.6 with latest changes of remote main my:5.6 ------------------------------------------------------------ revno: 4839.1.1 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Wed 2013-02-27 08:12:52 +0100 message: Fix for Bug#16343992 AGGREGATE QUERY TRIES TO ALLOCATE 127GB OF MEMORY! One particular type of set function was not handled in a big switch which has ~20 cases. ------------------------------------------------------------ revno: 4843 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: 56_latest timestamp: Wed 2013-02-27 14:16:18 +0530 message: Bug#14360513: SHA256_PASSWORD DOES NOT PROPERLY CHECK RSA KEY FILES Description: MySQL server shoud not start if invalid RSA key files are specified at startup time.However, this was not happening and server could be started with such keys. In such cases, users with sha256_password will not be able to connect to the server. Solution: Make sure that if either of the key files is invalid, an error is raised at startup time. ------------------------------------------------------------ revno: 4842 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 10:14:03 +0200 message: Bug#16345265 INFINITE PAGE SPLIT FOR A COMPRESSED PAGE, ASSERT LEVEL > 50 This is regression from the code cleanup in rb#1761 Bug#14606334 INNODB UNABLE TO MERGE IBUF INTO PAGE page_cur_insert_rec_zip(): Check if the uncompressed page needs to be reorganized in order for the insert to succeed. Reorganize the page upfront if needed. Approved by Inaam Rana ------------------------------------------------------------ revno: 4841 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 10:09:52 +0200 message: Bug#16400346 INNODB_BUG60196 TEST ASSERTS AT DICT0DICT.CC Remove the bogus debug assertion that I added a couple of days ago. Analyzed by Mattias and Kevin. ------------------------------------------------------------ revno: 4840 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-27 10:07:10 +0200 message: Merge mysql-5.5 to mysql-5.6. ------------------------------------------------------------ revno: 2875.417.217 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.5 timestamp: Wed 2013-02-27 10:04:43 +0200 message: Merge mysql-5.1 to mysql-5.5. ------------------------------------------------------------ revno: 2661.862.119 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.1 timestamp: Wed 2013-02-27 10:00:50 +0200 message: Bug#16400920 INNODB TRIES TO PASS EMPTY BUFFER TO ZLIB, GETS Z_BUF_ERROR page_zip_compress_node_ptrs(): Do not attempt to invoke deflate() with c_stream->avail_in, because it will result in Z_BUF_ERROR (and page_zip_compress() failure and unnecessary further splits of the node pointer page). A node pointer record can have empty payload, provided that all key fields are empty. Approved by Jimmy Yang ------------------------------------------------------------ revno: 4839 committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.6-16311231 timestamp: Tue 2013-02-26 22:31:16 +0400 message: Bug #16311231: MISSING DATA ON SUBQUERY WITH WHERE + XOR IN IN-CLAUSE USING MYISAM OR MEMORY ENGINE The coincidences caused a data loss: * The query has IN subqueries nested twice, * the WHERE clause of the inner subquery refers to the outer field, and the whole WHERE clause returns FALSE, * the inner subquery has a LEFT JOIN that joins a single row with a row of NULLs; one of that NULL columns represents the select list of the subquery. Normally, that inner subquery should return empty record set. However, in our case: * the Item_is_not_null_test item goes constant, since its underlying field is NULL (because of LEFT JOIN ... ON FALSE of const table row with a row of nulls); * we evaluate Item_is_not_null_test::val_int() as a part of fake HAVING expression of the transformed subquery; * as far as the underlying field is NULL, we optimize out the whole fake HAVING expression as FALSE as well as a whole subquery with a zero result: Impossible HAVING noticed after reading const tables"; * thus, the optimizer ignores the presence of the WHERE clause (the WHERE expression is FALSE in our case, so the subquery should return empty set); * however, during the evaluation of the Item_is_not_null_test::val_int() in the optimizer, it marked its "owner" with the "was_null" flag -- that forced the subquery to return UNKNOWN instead of empty set. That caused a wrong result. The problem is a regression of the small cleanup in the fix for the bug11827369 (the Item_is_not_null_test part) that conflicts with optimizations in the fix for the bug11752543. Before that regression the Item_is_not_null_test items never were constants. The fix is the rollback of Item_is_not_null_test parts of the bug11827369 fix. ------------------------------------------------------------ revno: 4838 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 21:33:59 +0530 message: Bug#16372927: STACK OVERFLOW WITH LONG DATABASE NAME IN GRANT STATEMENT Description: Merge from 5.5. ------------------------------------------------------------ revno: 2875.417.216 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-26 21:29:43 +0530 message: Bug#16372927: STACK OVERFLOW WITH LONG DATABASE NAME IN GRANT STATEMENT Description: Merge from 5.1. ------------------------------------------------------------ revno: 2661.862.118 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.1 timestamp: Tue 2013-02-26 21:23:06 +0530 message: Bug#16372927: STACK OVERFLOW WITH LONG DATABASE NAME IN GRANT STATEMENT Description: A missing length check causes problem while copying source to destination when lower_case_table_names is set to a value other than 0. This patch fixes the issue by ensuring that requried bound check is performed. ------------------------------------------------------------ revno: 4837 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-merge timestamp: Tue 2013-02-26 14:51:43 +0100 message: merge 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.215 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.5 timestamp: Mon 2013-02-25 10:42:40 +0100 message: Bug#16062056 REMOVE THE "DUMMY.BAK" FILE FROM THE TEST DATABASE, AND ADD DB.OPT 1. remove dummy.bak 2. create a db.opt file containing two lines: --- default-character-set=latin1 default-collation=latin1_swedish_ci ------------------------------------------------------------ revno: 4836 [merge] committer: Aditya A <aditya.a@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 18:04:34 +0530 message: Bug#14653504 CRASH WHEN TRUNCATING PARTITIONS FROM A VIEW! [Merge from 5.5] ------------------------------------------------------------ revno: 2875.417.214 committer: Aditya A <aditya.a@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-26 17:57:05 +0530 message: Bug#14653504 CRASH WHEN TRUNCATING PARTITIONS FROM A VIEW! ANALYSIS -------- When we open the view using open_new_frm() ,it doesnt set the table-list->table variable and any access to table_list->table will cause a crash. FIX --- Added a check during execution of the alter partition to return error if table is view. [http://rb.no.oracle.com/rb/r/2001/ Approved by Mattias J ] ------------------------------------------------------------ revno: 4835 committer: Roy Lyseng <roy.lyseng@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 13:06:45 +0100 message: Bug#16325175: Function ifnull ignored when used with some others selects The problem statement has an aggregated, non-grouped outer query with an aggregated, non-grouped subquery in the SELECT list. The outer query has no rows, so in end_send_group() it calls no_rows_in_result() for all items in the SELECT list. For a scalar subquery, this causes "no_rows" to be set true, which later prevents the subquery from being evaluated when sending the result row for the outer query. This behavior was introduced with the fix for 13742712, where the inner subquery was dependent upon the outer, and evaluating the inner subquery caused references to unassigned columns in the outer query, when the outer query has no rows. However, in this bug case, the inner query is not dependent upon the outer query, and thus should be evaluated when sending data. The bug fix is to check whether the inner query is dependent upon the outer in Item_singlerow_subselect::no_rows_in_result(), and setting "no_rows" for this case only. Notice however that the case of dependent inner query is invalid according to standard SQL: setting sql_mode only_full_group_by rejects a query with dependent inner query with error 1140. Another problem with setting "no_rows" for such queries is that a COUNT function may return NULL, even though the function is specified to always return a non-negative integer. However, as this is an invalid query according toe the SQL standard, we will not worry about that problem for now. sql/item_subselect.cc In Item_singlerow_subselect::no_rows_in_result(), set no_rows true only when subquery is dependent on the outer query. ------------------------------------------------------------ revno: 4834 committer: Olav Sandstaa <olav.sandstaa@oracle.com> branch nick: mrr-assert-bug-5.6 timestamp: Tue 2013-02-26 12:08:53 +0100 message: Fix for Bug#16328373 ASSERTION FAILED: ROWIDS_BUF < ROWIDS_BUF_END The assert in DsMrr_impl::dsmrr_fill_buffer() fires due to the buffer space to use for sort buffer is too small to store a single primary key. The primary key is in this case large since it contains the prefix of a BLOB. The buffer space to use for sort buffer is provided by the BKA implementation. The query is run with a very small join buffer of only 128 bytes. When BKA is used, the first part of the join buffer is used for storing the fields from the first table while the last part is used as sort buffer for the DS-MRR implementation. In JOIN_CACHE::set_constants() there is already code for handling the situation when the specified join buffer is too small. The code adjusts the size of the join buffer if the size specified by join_buffer_size is so small that it can not store a single record. This code does not take into account that there needs to be room in the join buffer for the DS-MRR sort buffer when BKA or BKA-unique is used. The fix for this problem is to extend JOIN_CACHE::set_constants() so that when it computes the minimum size the join buffer can have, it will include space for a minimal DS-MRR sort buffer. ------------------------------------------------------------ revno: 4833 committer: Yasufumi Kinoshita <yasufumi.kinoshita@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 19:30:55 +0900 message: Bug #16207700 : PURGE DOES NOT ALWAYS RUN INTO COMPLETION Fixes race condition for rare opportunity not to wake the purge thread up. It was not so serious for users, no lost of data, nothing for performance. The problem only affect for accurate testing around purge. rb#2036 approved by Sunny. ------------------------------------------------------------ revno: 4832 committer: Shaohua Wang <shaohua.wang@oracle.com> branch nick: mysql-5.6-bug16275237 timestamp: Tue 2013-02-26 17:46:16 +0800 message: BUG#16275237 - ASSERTION FAILURE IN HEAP->MAGIC_N == MEM_BLOCK_MAGIC_N Analysis: The scenario is a race condition if row_merge_read_clustered_index() returns error. In its caller row_merge_build_indexes(), we will wait for FTS_CHILD_EXITING bit being set by children (means all children finished) only in the case row_merge_read_clustered_index() is successfully return. In row_merge_read_clustered_index(), we only wait for the bit being set to FTS_CHILD_COMPLETE, so the scenario in this failure can happen. Solution: The fix is to move the loop waiting for FTS_CHILD_EXITING to row_merge_read_clustered_index() completely. rb:2040 approved by sunny, marko and jimmy. ------------------------------------------------------------ revno: 4831 [merge] committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 07:47:28 +0100 message: Merge ------------------------------------------------------------ revno: 4829.1.1 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 11:20:40 +0530 message: Fixing a pb2 failure. The gtid_purged variable will not be available in the embedded mysql server. So moving it to another test file. ------------------------------------------------------------ revno: 4830 [merge] committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-26 06:45:28 +0100 message: Updated/added copyright headers. ------------------------------------------------------------ revno: 2875.417.213 [merge] committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-26 06:35:17 +0100 message: Updated/added copyright headers ------------------------------------------------------------ revno: 2661.862.117 committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.1 timestamp: Mon 2013-02-25 15:26:00 +0100 message: Updated/added copyright headers. ------------------------------------------------------------ revno: 4829 committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: intcoll-56 timestamp: Mon 2013-02-25 16:29:12 +0100 message: Bug #16365842 COLLECTIONS MECHANISM SHOULD BE AVAILABLE TO THE TEST SUITES IN INTERNAL internal/mysql-test/collections/default.* now appended to public files if cmake is run in PB2 context. Copied and adapted similar code from cmake/plugin.cmake ------------------------------------------------------------ revno: 4828 [merge] committer: Akhila Maddukuri<akhila.x.maddukuri@oracle.com> branch nick: 5.6 timestamp: Mon 2013-02-25 19:43:00 +0530 message: Bug#16103072 TEST MYSQL_PLUGIN USES UNSAFE WRITE_FILE TO WRITE ------------------------------------------------------------ revno: 2875.417.212 committer: Akhila Maddukuri<akhila.x.maddukuri@oracle.com> branch nick: 5.5 timestamp: Mon 2013-02-25 19:37:46 +0530 message: Bug#16103072 TEST MYSQL_PLUGIN USES UNSAFE WRITE_FILE TO WRITE TO EXPECT FILE ------------------------------------------------------------ revno: 4827 [merge] committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: test-5.6 timestamp: Mon 2013-02-25 13:52:28 +0100 message: merge ------------------------------------------------------------ revno: 2875.417.211 committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: test-5.5 timestamp: Mon 2013-02-25 13:45:00 +0100 message: post-push fix to prevent test to run without symlink support ------------------------------------------------------------ revno: 4826 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6 timestamp: Mon 2013-02-25 13:11:20 +0100 message: Bug#68454 Using inet6_ntoa and int6_aton to convert IP causes errors Bug#16373973 USING INET6_NTOA AND INT6_ATON TO CONVERT IP CAUSES ERRORS Item_func_inet_bool_base::val_int() and Item_func_inet_str_base::val_str_ascii() had "memory": once they had seen a NULL value, they would continue to return false/NULL for any subsequent value. ------------------------------------------------------------ revno: 4825 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-clean timestamp: Mon 2013-02-25 13:00:21 +0100 message: re-added files, with --file-ids-from trunk ------------------------------------------------------------ revno: 4824 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-clean timestamp: Mon 2013-02-25 12:58:24 +0100 message: remove files with wrong file-ids ------------------------------------------------------------ revno: 4823 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-25 10:47:44 +0200 message: Bug#16330036 DICT_FOREIGN_FREE READS ALREADY FREED MEMORY, CRASHES! This is clean-up after the already-pushed fix in rb#2027. The error message said '(null)' for the constraint name. innobase_get_foreign_key_info(): Deindent the loop body. Narrow the scope of the loop variable i. If fk_key->name is NULL, use the empty string in the error messages. dict_foreign_add_to_cache(): Assert that the referenced_index is known. rb#2053 approved by Jimmy Yang ------------------------------------------------------------ revno: 4822 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-25 10:29:22 +0530 message: Null merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.210 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Mon 2013-02-25 10:28:25 +0530 message: Bug #16044655 CRASH: SETTING DEFAULT VALUE FOR SOME VARIABLES Problem: When a system variable is being set to the DEFAULT value, the server segfaults if there is no 'default' defined for that system variable. For example, for the following statements server segfaults. set session rand_seed1=DEFAULT; set session rand_seed2=DEFAULT; Analysis: The class sys_var represents one system variable. The class set_var represents one system variable that is to be updated. The class set_var contains two pieces of information, the system variable to object (set_var::var) member and the value to be updated (set_var::value). When the given value is 'default', the set_var::value will be NULL. To update a system variable the member set_var::update() will be called, which in turn will call sys_var::update() or sys_var::set_default() depending on whether a value has been provided or not. If the sys_var::set_default() is called, then the default value is obtained either from the session scope or the global scope. This default value is stored in a local temporary set_var object and then passed on to the sys_var::update() call. A local temporary set_var object is needed because sys_var::set_default() does not take set_var as an argument. In the given scenario, the set_var::update() called sys_var::set_default(). And this sys_var::set_default() obtains the default value and then calls sys_var::update(). To pass this value to sys_var::update() a local set_var object is being created. While creating this local set_var object, its member set_var::var was incorrectly left as 0. Solution: Instead of creating a local set_var object, the sys_var::set_default() can take the set_var object as an argument just like sys_var::update(). rb://1996 approved by Nirbhay and Ramil. ------------------------------------------------------------ revno: 4821 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-25 10:09:00 +0530 message: Merge from mysql-5.5 to mysql-5.6. There are slight changes in the patch to handle gtid_purged system variable. ------------------------------------------------------------ revno: 2875.434.1 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-21 12:08:29 +0530 message: Bug #16044655 CRASH: SETTING DEFAULT VALUE FOR SOME VARIABLES Problem: When a system variable is being set to the DEFAULT value, the server segfaults if there is no 'default' defined for that system variable. For example, for the following statements server segfaults. set session rand_seed1=DEFAULT; set session rand_seed2=DEFAULT; Analysis: The class sys_var represents one system variable. The class set_var represents one system variable that is to be updated. The class set_var contains two pieces of information, the system variable to object (set_var::var) member and the value to be updated (set_var::value). When the given value is 'default', the set_var::value will be NULL. To update a system variable the member set_var::update() will be called, which in turn will call sys_var::update() or sys_var::set_default() depending on whether a value has been provided or not. If the sys_var::set_default() is called, then the default value is obtained either from the session scope or the global scope. This default value is stored in a local temporary set_var object and then passed on to the sys_var::update() call. A local temporary set_var object is needed because sys_var::set_default() does not take set_var as an argument. In the given scenario, the set_var::update() called sys_var::set_default(). And this sys_var::set_default() obtains the default value and then calls sys_var::update(). To pass this value to sys_var::update() a local set_var object is being created. While creating this local set_var object, its member set_var::var was incorrectly left as 0. Solution: Instead of creating a local set_var object, the sys_var::set_default() can take the set_var object as an argument just like sys_var::update(). rb://1996 approved by Nirbhay and Ramil. ------------------------------------------------------------ revno: 4820 [merge] committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.6 timestamp: Sat 2013-02-23 10:53:29 +0100 message: Upmerging the changes from 5.1 for copyright changes. ------------------------------------------------------------ revno: 2875.417.209 [merge] committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.5 timestamp: Sat 2013-02-23 10:47:30 +0100 message: Upmerging the changes from 5.1 for copyright changes. ------------------------------------------------------------ revno: 2661.862.116 committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.1 timestamp: Sat 2013-02-23 10:38:28 +0100 message: Eventum ticket#45161: Adding copyright statement to all *.test and *.inc files under internal/mysql-test directory. ------------------------------------------------------------ revno: 2875.417.208 committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.5 timestamp: Sat 2013-02-23 10:40:23 +0100 message: Eventum ticket#45161: Adding copyright statement to all *.test and *.inc files under internal/mysql-test directory. ------------------------------------------------------------ revno: 4819 committer: Murthy Narkedimilli <murthy.narkedimilli@oracle.com> branch nick: mysql-5.6 timestamp: Sat 2013-02-23 10:40:55 +0100 message: Eventum Ticket#45161: Adding copyright statement to all *.test and *.inc files under internal/mysql-test directory. ------------------------------------------------------------ revno: 4818 [merge] committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Sat 2013-02-23 00:17:15 +0530 message: Merge testcase fix for BUG#14147491 from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.207 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.5 timestamp: Sat 2013-02-23 00:16:36 +0530 message: Testcase fix for Bug#14147491 Sleep 1sec before remove_file to solve windows pb2 issues. We hope that after sleep, the access to the file will not be denied. ------------------------------------------------------------ revno: 4817 [merge] committer: sayantan.dutta@oracle.com branch nick: mysql-5.6 timestamp: Fri 2013-02-22 15:41:22 +0100 message: Bug #13619394 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.206 committer: sayantan.dutta@oracle.com branch nick: mysql-5.5 timestamp: Fri 2013-02-22 15:22:15 +0100 message: Bug #13619394 - MAKE TEST FAILS ON MY_VSNPRINTF ------------------------------------------------------------ revno: 4816 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-22 18:05:44 +0530 message: Fix testcase of WL#6808. Skip the testcase in embedded mode. ------------------------------------------------------------ revno: 4815 [merge] committer: Daniel Fischer <daniel.fischer@oracle.com> branch nick: mysql-5.6-13071597-push timestamp: Fri 2013-02-22 12:34:36 +0100 message: merge ------------------------------------------------------------ revno: 2875.417.205 [merge] committer: Daniel Fischer <daniel.fischer@oracle.com> branch nick: mysql-5.5-13071597-push timestamp: Fri 2013-02-22 12:32:29 +0100 message: merge ------------------------------------------------------------ revno: 2875.433.1 committer: Daniel Fischer <daniel.fischer@oracle.com> branch nick: mysql-5.5-13071597 timestamp: Wed 2013-02-20 12:41:43 +0100 message: Bug #13071597: MYSQL SERVER COMMUNITY TO ADVANCED USING MSI THE INSTALLER Cross-upgrades between GPL and commercial versions should be allowed by the MSI package even when both packages are the same version. Fixed by allowing upgrades to the same numeric version. ------------------------------------------------------------ revno: 4814 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-22 16:02:04 +0530 message: Merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.204 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-22 15:15:14 +0530 message: Merge from mysql-5.1 to mysql-5.5 ------------------------------------------------------------ revno: 2661.862.115 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-22 14:56:17 +0530 message: Bug #14211565 CRASH WHEN ATTEMPTING TO SET SYSTEM VARIABLE TO RESULT OF VALUES() Problem: When the VALUES() function is inappropriately used in the SET stmt the server exits. set port = values(v); This happens because the values(v) will be parsed as an Item_insert_value by the parser. Both Item_field and Item_insert_value return the type as FIELD_ITEM. But for Item_insert_value the field_name member is NULL. In set_var constructor, when the type of the item is FIELD_ITEM we try to access the non-existent field_name. The class hierarchy is as follows: Item -> Item_ident -> Item_field -> Item_insert_value The Item_ident::field_name is NULL for Item_insert_value. Solution: In the parsing stage, in the set_var constructor if the item type is FIELD_ITEM and if the field_name is non-existent, then it is probably the Item_insert_value. So leave it as it is for later evaluation. rb://2004 approved by Roy and Norvald. ------------------------------------------------------------ revno: 4813 committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.6-bug16382260 timestamp: Thu 2013-02-21 21:05:48 +0100 message: Bug#16382260 PERFORMANCE OVERHEAD IN PFS_DIGEST_ADD_TOKEN This is a code cleanup, to improve performances. When a query is parsed, the performance schema collects a statement digest, using the pfs_digest_add_token_v1() call for each lex token. As a result, pfs_digest_add_token_v1() can be called, literrally, several millions times per second. One issue is that pfs_digest_add_token_v1() called peek_last_two_tokens() in all cases (for each token), but only used the result in a few cases, causing overhead. This is now fixed by invoking peek_last_two_tokens() only when necessary. A second issue was the implementation itself of peek_last_two_tokens(). When the last token is before last_id_index, the second to last token also is before last_id_index, by definition. Re arranging the code saved an if statement in that case. Last, still in peek_last_two_tokens(), a basic arithmetic expression was performed multiple times. This is now improved, with peek_index. This patch also contains minor whitespace fixes. ------------------------------------------------------------ revno: 4812 committer: Jon Olav Hauglid <jon.hauglid@oracle.com> branch nick: mysql-5.6-test timestamp: Thu 2013-02-21 16:27:56 +0100 message: Bug#16300620: VALGRIND FAILURE MYSQL-5.6/TRUNK IN AUTH_SEC.KEY_VALUE_AUTH This valgrind failure could occur if CREATE USER was logged in the general query log and the 'old_passwords' system variable was set to 2. During query rewrite to prevent the password from being logged in plain text, my_make_scrambled_password() was called. The output of this function was stored in a char buffer. Afterwards the contents of this char buffer was appended to the query string. The problem was that we appended the number of characters equal to the length of the plaintext password. So if the scrabled password was shorter, we ended up appending uninitialized bytes. This later caused a valgrind warning during logging. This patch fixes the problem by writing "<secret>" to the query log instead of the scrambled password for old_passwords = 2. No test case added since this is covered by existing tests. ------------------------------------------------------------ revno: 4811 committer: Norvald H. Ryeng <norvald.ryeng@oracle.com> branch nick: mysql-5.6-16318585 timestamp: Thu 2013-02-21 13:37:50 +0100 message: Bug#16318585 PREPARED: ASSERTION FAILED: SL->JOIN == 0, FILE SQL_PREPARE.CC, LINE 2502 This bug was introduced by the fix for bug #15875919. Problem: An assertion fires when executing a prepared statement with a subquery in the ON clause of a join in a subquery that is removed by remove_redundant_subquery_clauses(). An ALL/ANY/SOME/IN subquery may contain ORDER BY and GROUP BY clauses that are not needed. These are removed by remove_redundant_subquery_clauses(). If such a clause contains a subquery, the subquery is also removed. The st_select_lex_unit and st_select_lex objects of the subquery should be unlinked from the outer query and from LEX::all_selects_list. This is done by doing a walk() on the clause with Item_subselect::clean_up_after_removal() doing the actual removal. This walk was added in the fix for bug #15875919. If a subquery that is removed in this way has an ON clause with another subquery, the walk will fail to find this second subquery. Item_subselect::walk() does not call the walk processor function on its ON clauses. Because of this, Item_subselects in ON clauses and their st_select_lex objects are not removed properly from LEX::all_selects_list. However, the master and slave links are cut at one point, so the subquery is out of the tree of select_lex_nodes, but there's still a pointer in LEX::all_selects_list. When the prepared statement is executed, reinit_stmt_before_use() will follow this pointer and find a st_select_lex object without a JOIN object. Fix: Walk join conditions in Item_subselect::walk(). This is done by adding a new function, Item_subselect::walk_join_condition() that goes through nested joins and walks all join conditions. This patch also changes the order in which parts of an Item_subselect is walked to a more natural order. ------------------------------------------------------------ revno: 4810 committer: Norvald H. Ryeng <norvald.ryeng@oracle.com> branch nick: mysql-5.6-16347450 timestamp: Thu 2013-02-21 12:37:50 +0100 message: Bug#16347450 GROUP_CONCAT UNSTABLE, CRASH IN ITEM_SUM::CLEAN_UP_AFTER_REMOVAL Problem: Queries with ALL/ANY/SOME/IN subqueries with aggregation functions in unnecessary clauses may cause the server to crash. ALL/ANY/SOME/IN subqueries are simplified by removing clauses that will not affect the result. This is done by calling remove_redundant_subquery_clauses(). When such a clause contains an aggregation function, Item_sum::clean_up_after_removal() is called to unlink the item from the aggr_sel->inner_sum_func_list if such a link exists. Item_sum::clean_up_after_removal() assumes that the item is part of the list if aggr_sel and aggr_sel->inner_sum_func_list are both non-null. However, if the subquery has both an inner subquery with an aggregation function and an aggregation function (not in an inner subquery) that is to be removed, Item_sum::clean_up_after_removal() will fail to identify the situation and will try to remove the item from a list where it is not present. This causes it to dereference an uninitialized next pointer. Fix: Initialize Item_sum::next to NULL and use this to test for membership in aggr_sel->inner_sum_func_list. The list is circularly linked, so any element with next==NULL is not a member of the list. ------------------------------------------------------------ revno: 4809 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-merge timestamp: Thu 2013-02-21 09:01:03 +0100 message: merge 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.203 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.5 timestamp: Wed 2013-02-20 11:24:16 +0100 message: Bug#14300733 CMAKE DOES NOT CHECK FOR ZLIB VERSION Add check for compressBound() and deflateBound() Keep existing functionality: fallback to bundled zlib if functions not found. ------------------------------------------------------------ revno: 4808 committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.6_b15986073 timestamp: Thu 2013-02-21 12:32:47 +0530 message: BUG#15986073- REMOVE MYSQL-TEST/INCLUDE/RPL_ASSERT.INC Problem: The include file "rpl_assert.inc" was added in mysql-5.6. There exists another include file "assert.inc" that dose the same and is more powerful. "rpl_assert.inc" is an older version of assert.inc. Two major things have changed: 1. assert.inc supports [COMMAND] for commands that return a single-row single-column result set 2. assert.inc uses eval.inc, so code is better separated and more reusable. Fix: Replaced all usage of "rpl_asert.inc" by "assert.inc". ------------------------------------------------------------ revno: 4807 [merge] committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-21 12:21:03 +0530 message: Merge testcase fix for BUG#14147491 from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.202 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-21 12:16:59 +0530 message: Testcase fix for Bug#14147491 move_file fails randomly on windows if the destination file exists. Using remove_file before move_file mtr test command. ------------------------------------------------------------ revno: 4806 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: old timestamp: Wed 2013-02-20 15:59:03 +0100 message: Tests for Bug #16327292 ANOTHER CRASH IN KEY_COPY (already fixed by the patch for bug16308085). ------------------------------------------------------------ revno: 4805 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Mon 2013-02-18 16:01:01 +0100 message: fix for Bug#16308085 SEARCH WITH CLAUSE IN RETURN DUPLICATES RECORDS WHEN 'ORDER BY' IS ADDED. This is a minimal patch, conservative. Ref access does not work with semi-join LooseScan, so the code is changed to not try this combination; in a later version will we look at testing it thoroughly and then enabling it. ------------------------------------------------------------ revno: 4804 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-20 19:30:10 +0530 message: WL#6808 - InnoDB: Deprecate and remove innodb_mirrored_log_groups Throw deprecation message in 5.6 and remove completely in 5.7 When innodb_mirrored_log_groups == 1, WARN and continue with the following error message "Innodb_mirrored_log_groups is an unimplemented feature and the variable will be completely removed in a future version." When innodb_mirrored_log_groups !=1, ABORT with the following error message "Innodb_mirrored_log_groups is an unimplemented feature and the variable will be completely removed in a future version. Using values other than 1 is not supported." Approved by Marko. rb#1941 ------------------------------------------------------------ revno: 4803 [merge] committer: Oystein Grovlen <oystein.grovlen@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-20 14:39:12 +0100 message: Merge jam. Need to merge on Bug#14147491 on mysql-5.6 since it was push here before my push for Bug#16093024. ------------------------------------------------------------ revno: 4801.1.1 [merge] committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-20 18:26:21 +0530 message: Merge the testcase fix from mysql-5.5 to mysql-5.6 for Bug#14147491 ------------------------------------------------------------ revno: 2875.417.201 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.5 timestamp: Wed 2013-02-20 18:25:18 +0530 message: Testcase fix for BUG#14147491 The random failure will be fixed by Bug#16263506 and this patch Approved by Marko. rb#1988 ------------------------------------------------------------ revno: 4802 committer: Oystein Grovlen <oystein.grovlen@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-20 13:45:02 +0100 message: Bug#16093024 - TEMPORAL FUNCTIONS TRUNCATE INSTEAD OF ROUND Issue: Built-in SQL function SEC_TO_TIME did not handle fractional seconds correctly. If there were more than six decimals, results was truncated instead of rounded. Solution: In function sec_to_time(), do rounding instead of truncation. Unit test for Item_func_sec_to_time class has been added. ------------------------------------------------------------ revno: 4801 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6 timestamp: Wed 2013-02-20 09:32:35 +0100 message: Bug#16328024 BUILD-CMAKE NEEDS TO BE UPDATED TO CORRECT LINK TO MYSQL CMAKE INFORMATION ------------------------------------------------------------ revno: 4800 committer: sayantan.dutta@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-20 10:31:47 +0100 message: Bug #16360158 - MTR SOMETIMES WRITES A CHECK-TESTCASE REJECT FILE INTO CURRENT DIRECTORY ------------------------------------------------------------ revno: 4799 committer: sayantan.dutta@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-20 10:29:39 +0100 message: Bug #16360158 - MTR SOMETIMES WRITES A CHECK-TESTCASE REJECT FILE INTO CURRENT DIRECTORY ------------------------------------------------------------ revno: 4798 committer: Jimmy Yang <jimmy.yang@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-20 14:56:19 +0800 message: Bug #16330036 - DICT_FOREIGN_FREE READS ALREADY FREED MEMORY, CRASHES! rb://2027 approved by Sunny Bains and Marko ------------------------------------------------------------ revno: 4797 [merge] committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B16295905-5.6 timestamp: Tue 2013-02-19 14:28:14 +0200 message: merge ------------------------------------------------------------ revno: 4795.1.1 [merge] committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B16295905-5.6 timestamp: Tue 2013-02-19 14:13:17 +0200 message: merge to the 5.6 tree ------------------------------------------------------------ revno: 4760.1.1 committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B16295905-5.6 timestamp: Wed 2013-02-13 18:22:03 +0200 message: Bug #16295905: ALTER USER PASSWORD EXPIRE WILL CAUSE CRASH WHEN START WITH SKIP-GRANT_TABLES Added a check for skip-grant-tables to ALTER USER. ------------------------------------------------------------ revno: 4796 committer: Raghav Kapoor <raghav.kapoor@oracle.com> branch nick: mysql-5.6-bug-11766326 timestamp: Tue 2013-02-19 17:36:00 +0530 message: BUG#11766326 - LINUXTHREADS INFO IS OUTDATED BACKGROUND: In the Docs directory of the MySQL sourcecode there is a linuxthreads.txt and a glibc-2.2.5.patch. The first line of linuxthreads.txt already notes that it's obsolete, but it's still in the sourcecode repository on Launchpad as well as in internals Docs Directory. FIX: These two files have been removed from the internal Docs Directory as the information in these files is obsolete and not required. ------------------------------------------------------------ revno: 4795 committer: Raghav Kapoor <raghav.kapoor@oracle.com> branch nick: mysql-5.6-bug-16035659 timestamp: Tue 2013-02-19 16:39:16 +0530 message: BUG#16035659 - CRASH WHEN SQL_MODE=NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES IS SET BACKGROUND: An assertion failure in Diagnostics_area::set_ok_status() was observed in MySQL Server when an InnoDB table is created having violated the maximum key length limit when running in STRICT SQL MODE. Instead of throwing an error, the server crashes in Debug Build. On release builds set_ok_status() will just refuse to overwrite the error status with OK, and the client will be sent the error message. So we will not get a crash and in fact get correct behavior in this case. ANALYSIS: In THD::raise_condition() function, warning is converted to error when STRICT SQL MODE is enabled. The return value false from this function indicates OK, but it has just set the error status. There was no code to return true, if an error occured. FIX: As a fix for this bug, the code to return true has been added, if an error is set when STRICT SQL_MODE is ON. ------------------------------------------------------------ revno: 4794 [merge] committer: Sujatha Sivakumar <sujatha.sivakumar@oracle.com> branch nick: Bug11746817_mysql-5.6 timestamp: Tue 2013-02-19 14:44:36 +0530 message: merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.200 [merge] committer: Sujatha Sivakumar <sujatha.sivakumar@oracle.com> branch nick: Bug11746817_mysql-5.5 timestamp: Tue 2013-02-19 14:36:30 +0530 message: Merge from mysq-5.1 to mysql-5.5 ------------------------------------------------------------ revno: 2661.862.114 committer: Sujatha Sivakumar <sujatha.sivakumar@oracle.com> branch nick: Bug11746817_mysql-5.1 timestamp: Tue 2013-02-19 14:31:11 +0530 message: Bug#11746817:MYSQL_INSTALL_DB CREATES WILDCARD GRANTS WHEN HOST HAS '_' IN THE HOSTNAME Problem: ======= '_' and '%' are treated as a wildcards by the ACL code and this is documented in the manual. The problem with mysql_install_db is that it does not take this into account when creating the initial GRANT tables: --- cut --- REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','', 0,0,0,0 FROM dual WHERE LOWER( @current_hostname) != 'localhost'; --- cut --- If @current_hostname contains any wildcard characters, then a wildcard entry will be defined for the 'root' user, which is a flaw. Analysis: ======== As per the bug description when we have a hostname with a wildcard character in it, it allows clients from several other hosts with similar name pattern to connect to the server as root. For example, if the hostname is like 'host_.com' then the same name is logged in mysql.user table. This allows 'root' users from other hosts like 'host1.com', 'host2.com' ... to connect to the server as root user. While creating the intial GRANT tables we do not have a check for wildcard characters in hostname. Fix: === As part of fix escape character "\" is added before wildcard character to make it a plain character, so that the one and only host with the exact name will be able to connect to the server. ------------------------------------------------------------ revno: 4793 committer: Olav Sandstaa <olav.sandstaa@oracle.com> branch nick: icp-assert-bug-5.6 timestamp: Tue 2013-02-19 09:23:14 +0100 message: Fix for Bug#16327534 ASSERT 'OTHER_TBLS_OK' FAILED IN PUSH_INDEX_COND ON SELECT + IN + JOIN WITH ICP The failing assert was added to push_index_cond() as part of the fix for Bug 15896009. The purpose of the assert was to ensure that when an index condition is not pushed due to not including any fields from the index, this only happens when we are allowed to include fields from other tables of the join, ie. when other_tbls_ok is true. The reason for the assert to fail is that there exist situations where the query condition does not include any fields from any of the tables. This can happen when we have a constant condition. One example is that the query condition is just Item_int(1) (ie. always true). This causes the assert to fail due to not referencing any fields neither from the index nor from any other tables. The fix for this problem is to extend the assert to also include the case where the index condition is a constant condition. Note: in the version pushed to mysql-5.6 the assert is removed. ------------------------------------------------------------ revno: 4792 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-19 12:21:44 +0530 message: Bug#16235681: TURN OFF DEFAULT COMPRESSION WHILE USING OPENSSL Description: Merge from 5.5. ------------------------------------------------------------ revno: 2875.417.199 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-19 12:19:10 +0530 message: Bug#16235681: TURN OFF DEFAULT COMPRESSION WHILE USING OPENSSL Description: Merge from 5.1. ------------------------------------------------------------ revno: 2661.862.113 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.1 timestamp: Tue 2013-02-19 12:17:31 +0530 message: Bug#16235681: TURN OFF DEFAULT COMPRESSION WHILE USING OPENSSL Description: Specify preference to disable compression while using OpenSSL library. OpenSSL uses zlib compression by default which may lead to some problems. ------------------------------------------------------------ revno: 4791 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-19 11:03:12 +0530 message: Null merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.198 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-19 10:59:45 +0530 message: Null merge from mysql-5.1 to mysql-5.5 ------------------------------------------------------------ revno: 2661.862.112 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.1 timestamp: Tue 2013-02-19 10:55:55 +0530 message: Instead of using rm command, use perl code. ------------------------------------------------------------ revno: 4790 [merge] committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.6_b15965353 timestamp: Tue 2013-02-19 02:00:44 +0530 message: BUG#15965353- RPL.RPL_ROW_UNTIL FAILS ON PB2, PLATFORM= MACOSX10.6 X86_64 MAX post push fix ------------------------------------------------------------ revno: 2875.417.197 committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.5_B15965353 timestamp: Tue 2013-02-19 01:58:57 +0530 message: BUG#15965353- RPL.RPL_ROW_UNTIL FAILS ON PB2, PLATFORM= MACOSX10.6 X86_64 MAX post push fix ------------------------------------------------------------ revno: 4789 [merge] committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-18 17:09:08 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Null merge ------------------------------------------------------------ revno: 2875.417.196 [merge] committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.5 timestamp: Mon 2013-02-18 17:06:00 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Null merge ------------------------------------------------------------ revno: 2661.862.111 committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.1 timestamp: Mon 2013-02-18 17:02:26 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Post-push fix, broken build: sql/rpl_master.cc:1049:70: error: converting ?false? to pointer type ?bool*? [-Werror=conversion-null] ------------------------------------------------------------ revno: 4788 committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.6_16216404 timestamp: Mon 2013-02-18 21:53:38 +0530 message: BUG#16216404 - MYSQL 5.6: VERSION MISMATCH A BIT ALARMING WHEN MASTER IS NOT 5.6 Problem - After upgrading a slave to a higher version we get this warning getting logged: 13:18:40 28611 [Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master, maybe it is a *VERY OLD MASTER*. Error_code: 1193 This is rather alarming to the users. Fix - the problem is fixed by changing the warning being logged to be a more descriptive one by printing the master's and slave's sever version: [Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master. A probable cause is that the variable is not supported on the master (version: 5.5.31-debug-log), even though it is on the slave (version: 5.6.11-debug-log), Error_code: 1193 ------------------------------------------------------------ revno: 4787 [merge] committer: Anirudh Mangipudi <anirudh.mangipudi@oracle.com> branch nick: 5.6 timestamp: Mon 2013-02-18 19:14:25 +0530 message: Bug #12546953: "SHOW VARIABLES LIKE 'DATADIR';" RETURN EMPTY. Merge from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.195 committer: Anirudh Mangipudi <anirudh.mangipudi@oracle.com> branch nick: 5.5 timestamp: Mon 2013-02-18 19:13:06 +0530 message: Bug #12546953 "SHOW VARIABLES LIKE 'DATADIR';" RETURN EMPTY. Problem: =========================================================== If mysqld daemon is started without a --datadir option option, and we issue the SHOW VARIABLES LIKE 'DATADIR';SQL command at the client it returns an empty path. This is because mysql_real_data_home_ptr is being reset to NULL by Sys_var_charptr constructor call when the datadir is not given either through configuration file (no-defaults) or through mysqld parameters. Solution: =========================================================== mysql_real_data_home is an array which stores the path of the datadir and mysql_real_data_home_ptr is the pointer to it. The pointer is being set to NULL at the Sys_datadir, which is of type Sys_var_charptr, constructor call. This is because at Sys_datadir call the def_val parameter was being passed with DEFAULT(0) which is now replaced with DEFAULT(mysql_real_data_home). The patch has been tested manually as it is not possible to start mtr without a default config file. ------------------------------------------------------------ revno: 4786 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Mon 2013-02-18 14:13:19 +0100 message: merge with latest 5.6 ------------------------------------------------------------ revno: 4784.1.1 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Mon 2013-02-18 13:45:53 +0100 message: merge with latest 5.6 ------------------------------------------------------------ revno: 4783.1.1 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Mon 2013-02-18 10:49:16 +0100 message: merge with latest 5.6 ------------------------------------------------------------ revno: 4705.1.1 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-4 timestamp: Mon 2013-02-18 10:04:46 +0100 message: fix for Bug #16221623 EXTRA ROWS ON SEMIJOIN QUERY WITH RANGE PREDICATES: we forgot to set tab->index for loosescan. This is a minimal patch because: - 5.6 is GA - LooseScan planning is mixed inside best_access_path () which makes it very sensitive to any code change, and hard to debug. In worklog 6739, code will be better reorganized. ------------------------------------------------------------ revno: 4785 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-zlib timestamp: Mon 2013-02-18 13:44:49 +0100 message: Bug#16284051 INNOCHECKSUM LINK FAILS WITH SYSTEM ZLIB Bug#68277 innochecksum link fails with system zlib If cmake is invoked with -DWITH_SSL=</path/to/custom/openssl> we try to link with the .a files rather than the .so files. This functionality inadvertently changed behaviour for -DWITH_SSL=system as well. If the user has both /usr/lib/libcrypto.a and /usr/lib/libcrypto.so we would pick the static library, and the link would fail with something like: /usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/libcrypto.a(c_zlib.o): In function `bio_zlib_write': ------------------------------------------------------------ revno: 4784 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-merge timestamp: Mon 2013-02-18 11:14:14 +0100 message: merge 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.194 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.5 timestamp: Mon 2013-02-18 11:12:24 +0100 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Post-push fix, broken build: sql/rpl_master.cc:1049:70: error: converting ?false? to pointer type ?bool*? [-Werror=conversion-null] ------------------------------------------------------------ revno: 4783 committer: Aditya A <aditya.a@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-18 12:51:14 +0530 message: [Change in result file due to fix for Bug16274455] ------------------------------------------------------------ revno: 4782 [merge] committer: Sujatha Sivakumar <sujatha.sivakumar@oracle.com> branch nick: Bug15977988_mysql-5.6 timestamp: Mon 2013-02-18 11:54:24 +0530 message: merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.193 committer: Sujatha Sivakumar <sujatha.sivakumar@oracle.com> branch nick: Bug15977988_mysql-5.5 timestamp: Mon 2013-02-18 11:13:48 +0530 message: Bug#15977988 TEST RPL_ROW_BACKTICK FAILS VALGRIND TEST Problem: ======= rpl_row_backtick, rpl_mixed_backtick scripts are failing with result content mismatch error in mysql-cluster-5.5 code. Analysis: ======== There are two reasons for the test script failure. 1) The result file in cluster code was incorrect. When replication is started in row or mixed based mode all SQL statements will be generating base64 bit encoded value, which should not be recorded as part of result file. This is required as the base64 bit output will be different for different execution options. 2) As part of the test script regular expressions have been added to remove the base64 bit encoded output. But still the new pattern that was generated on the cluster code was not getting removed from these expressions. Fix: === Another regular expression is being added to replace the new pattern. ------------------------------------------------------------ revno: 4781 committer: Bill Qu <bill.qu@Oracle.com> branch nick: mysql-5.6 timestamp: Sun 2013-02-17 21:22:15 +0800 message: bug#16079840 PREVIOUS_GTIDS_LOG_EVENT SHOULD HAVE EXTENSIBLE DATA SECTION The Previous_gtids_log_event currently does not allow adding data at the end of the event: if extra data is found, an error is generated. Fix to make Previous_gtids_log_event work fine with additional unknown data at the end of the event, then that will be silently ignored. ------------------------------------------------------------ revno: 4780 [merge] committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.6_b15965353 timestamp: Sun 2013-02-17 01:47:37 +0530 message: BUG#15965353- RPL.RPL_ROW_UNTIL FAILS ON PB2, PLATFORM= MACOSX10.6 X86_64 MAX bzr merge 5.5 =>5.6. Below is a list of issues found during merge. The changes mentioned below are in addition to those that come from merge Problem: sync_io_with_master.inc in 5.5 was renamed to sync_slave_io.inc in 5.6 but the source and comments in the include file still used Fix: Modified source and comments to be in sync with the name of the include file. Problem: The variable $sync_slave_connection was used in rpl_sync.inc but it was not cleaned properly. Fix: Saved the value of $sync_slave_connection, used it and then restored the initial value. ------------------------------------------------------------ revno: 2875.417.192 [merge] committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.5_B15965353 timestamp: Sun 2013-02-17 01:45:10 +0530 message: BUG#15965353- RPL.RPL_ROW_UNTIL FAILS ON PB2, PLATFORM= MACOSX10.6 X86_64 MAX bzr merge 5.1=>5.5 ------------------------------------------------------------ revno: 2661.862.110 committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.1_B15965353 timestamp: Sun 2013-02-17 01:42:28 +0530 message: BUG#15965353- RPL.RPL_ROW_UNTIL FAILS ON PB2, PLATFORM= MACOSX10.6 X86_64 MAX Problem: The test was failing on pb2's mac machine because it was not cleaned up properly. The test checks if the command 'start slave until' throws a proper error when issued with a wrong number/type of parameters. After this,the replication stream was stopped using the include file 'rpl_end.inc'. The errors thrown earlier left the slave in an inconsistent state to be closed by the include file which was caught by the mac machine. Fix: Started slave by invoking start_slave.inc to have a working slave before calling rpl_reset.inc Problem: The test file was not in a good shape. It tested start slave until relay log file/pos combination wrongly. A couple of commands were executed at master and replicated at slave. Next, the coordinates in terms of relay log file and pos were noted down followed by reset slave and start slave until saved relay log file/pos. Reset slave deletes all relay log files and makes the slave forget its replication position. So, using the saved coordiantes after reset slave is wrong. Fix: Split the test in two parts: a) Test for start slave until master log file/pos and checking for correct errors in the failure scenarios. b) Test for start slave until relay log file/pos. Problem: The variables auto_increment_increment and auto_increment_offset were set in the the include file rpl_init.inc. This was only configured for some connections that are rarely used by test cases, so likely that it will cause confusion. If replication tests want to setup these variables they should do so explicitly. Fix: a) Removed code to set the variables auto_increment_increment and auto_increment_offset in the include file. b) Updated tests files using the same. ------------------------------------------------------------ revno: 4779 [merge] committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.6-bug16342793 timestamp: Sat 2013-02-16 13:55:45 +0100 message: Local merge ------------------------------------------------------------ revno: 4777.1.4 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 23:10:45 +0000 message: WL#6663: Make the MTR binlog suite GTID_MODE agnostic Enabled incorrectly skipped binlog_gtid_mysqlbinlog_row_myisam test. ------------------------------------------------------------ revno: 4777.1.3 [merge] committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 22:38:31 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Merge from mysql 5.5 to mysql 5.6 ------------------------------------------------------------ revno: 2875.417.191 [merge] committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-15 22:18:37 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE Merge from mysql 5.1 to mysql 5.5 ------------------------------------------------------------ revno: 2661.862.109 committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-15 21:57:35 +0000 message: BUG#13545447: RPL_ROTATE_LOGS FAILS DUE TO CONCURRENCY ISSUES IN REP. CODE In method mysql_binlog_send, right after detecting a EOF in the read event loop, and before deciding if we should change to a new binlog file there is a execution window where new events can be written to the binlog and a rotation can happen. When reaching the test, the function will then change to a new binlog file ignoring all the events written in this window. This will result in events not being replicated. Only when the binlog is detected as deactivated in the event loop of the dump thread, can we really know that no more events remain. For this reason, this test is now made under the log lock in the beginning of the event loop when reading the events. ------------------------------------------------------------ revno: 4777.1.2 committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 17:57:07 +0200 message: Fix Bug#14259638 BINLOG.BINLOG_MYSQLBINLOG_ROW_INNODB FAILS ON PB2 SPRADICALLY Add ANALYZE TABLE statements in order to make the stats for the tables t1, t2 and t3 deterministic immediately after the INSERT statements when the background stats update may or may not have completed yet. ------------------------------------------------------------ revno: 4777.1.1 [merge] committer: Alexander Nozdrin <alexander.nozdrin@oracle.com> branch nick: 5.6 timestamp: Fri 2013-02-15 17:11:42 +0400 message: Merge from 5.5. Merge test case only. ------------------------------------------------------------ revno: 2875.417.190 committer: Alexander Nozdrin <alexander.nozdrin@oracle.com> branch nick: 5.5-bug16056537 timestamp: Fri 2013-02-15 16:01:37 +0400 message: Bug#16056537: MYSQLD CRASHES IN ITEM_FUNC_GET_USER_VAR::FIX_LENGTH_AND_DEC() The technical problem was that THD::user_var_events_alloc was reset to NULL from a valid value when a stored program is executed during the PREPARE statement. The user visible problem was that the server crashed if user issued a PREPARE statement using some combination of stored functions and user variables. The fix is to restore THD::user_var_events_alloc to the original value. This is a minimal fix for 5.5. More proper patch has been already implemented for 5.6+. It avoids evaluation of stored functions for the PREPARE phase. From the user point of view, this bug is a regression, introduced by the patch for WL2649 (Number-to-string conversions), revid: bar@mysql.com-20100211041725-ijbox021olab82nv However, the code resetting THD::user_var_events_alloc exists even in 5.1. The WL just changed the way arguments are converted to strings and the bug became visible. ------------------------------------------------------------ revno: 4778 committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.6-bug16342793 timestamp: Fri 2013-02-15 18:49:01 +0100 message: Bug#16342793 MYSQL 5.6 FAILS TO BUILD WITH LIBWRAP SUPPORT ENABLED Before this fix, building a server with HAVE_LIBWRAP failed. The problem is that a variable renaming was missed, causing code to not compile in sql/mysqld.cc However, such failure should have been detected, and in fact was hidden by another problem. In the cmake files, the end user can specify WITH_LIBWRAP. The Makefile then attempts to build a small test program to verify libwrap is available, but silently fail and still produce code that does build, with HAVE_LIBWRAP undefined, producing a binary that does not use libwrap. For the cmake test to pass, both: - the tcpd.h header file - the libwrap library need to be installed. The header and the library are deployed in different packages on some OS distributions, so that having the libwrap runtime alone is not sufficient. As a result, builds where: - the end user ask for WITH_LIBWRAP - the libwrap library *is* installed - the tcpd.h header is missing would build, but not with #define HAVE_LIBWRAP, producing a binary without failures and without libwrap. This fix resolves two issues: - the build break in sql/mysqld.cc has been resolved - the configure.cmake now fails with a hard failure, returning an error, if the end user asked WITH_LIBWRAP but the makefile can not find a working libwrap. The most reliable way to verify how a binary is build is to check: ldd mysqld | grep libwrap to make sure the library is called. Verified manually that the build is now proper. ------------------------------------------------------------ revno: 4777 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 10:32:25 +0200 message: Bug#16216513 INPLACE ALTER DISABLED FOR PARTITIONED TABLES Due to Bug#14760210, INPLACE ALTER TABLE was disabled for partitioned tables. But it is possible to support this within InnoDB (our only transactional engine that can use the partitioning engine, ha_partition). The fix is to atomically commit the ALTER TABLE changes to all partitions of the table, within a single data dictionary transaction. The groundwork for this was laid out when fixing Bug#15989081 INNODB ALTER TABLE IS NOT ATOMIC. This patch modifies the solution so that changes to all partitions will be committed using the same data dictionary transaction, and (if needed) piggy-backing the rename of all partition *.ibd files in the same mini-transaction with the data dictionary transaction commit. In this way, crash recovery will either replay or roll back the ALTER TABLE. The worst possible scenario should be that the *.frm file (for which there is no log-based recovery) gets out of sync with the InnoDB data dictionary. This problem affects all tables. handler::commit_inplace_alter_table(): Slightly modify the API. Add ha_alter_info->group_commit_ctx. When it is NULL, the behaviour is as usual (commit only the table handle). When ha_alter_info->group_commit_ctx != NULL, it is assumed to be a pointer to a NULL-terminated array of ha_alter_info->handler_ctx, belonging to the partitions of a table. All partitions of the table will share the TABLE and altered_table objects. If handler::commit_inplace_alter_table() supports this operation, it must set ha_alter_info->group_commit_ctx = NULL. In this case, ha_partition::commit_inplace_alter_table(commit=true) will assume that the handler::commit_inplace_alter_table(commit=true) for the first partition committed the changes to all partitions. The rollback of partitions is unaffected by this. That is, handler::commit_inplace_alter_table(commit=false) will be invoked on every partition separately. The InnoDB changes are described below in detail. INNOBASE_ALTER_REBUILD: Renamed from INNOBASE_INPLACE_REBUILD. INNOBASE_ALTER_DATA: Renamed from INNOBASE_INPLACE_CREATE. INNOBASE_ALTER_NOREBUILD: Replaces INNOBASE_ONLINE_OPERATIONS. Does not include INNOBASE_INPLACE_IGNORE (no change inside InnoDB). ha_innobase_inplace_ctx: Replace user_trx with a reference to prebuilt. ha_innobase::commit_inplace_alter_table() needs to replace the ha_innobase::prebuilt in every partition. Add old_table and rename indexed_table to new_table. Add max_autoinc, so that we can preserve the current auto-increment value for every partition. Add the predicate ctx->need_rebuild(). Rename add, drop to add_index, drop_index. ha_innobase::prepare_inplace_alter_table(): Allocate ctx for every case of CHANGE_CREATE_OPTION, because all changes to InnoDB data (including the auto-increment value) will now require a ctx object. innobase_rollback_sec_index(): Replace prebuilt with user_table. Add the parameter ibool locked instead of hard-wiring locked=FALSE, because this can be invoked during a commit. innobase_rename_columns_try(): Replace new_clustered, user_table with ctx. commit_get_autoinc(), innobase_update_foreign_try(): commit_try_rebuild(): Replace user_table with ctx. innobase_update_foreign_cache(): commit_cache_rebuild(): Replace all parameters with ctx. commit_try_norebuild(): Add the ctx parameter, because there is a 1:N mapping between ha_alter_info and ctx. commit_cache_norebuild(): Replace ha_alter_info, user_table with ctx. commit_update_stats(): Split to alter_stats_norebuild() and alter_stats_rebuild(). ha_innobase::commit_inplace_alter_table(): Support them ha_alter_info->group_commit_ctx API. Remove the UNIV_DDL_DEBUG code that would check the table after a successful ALTER TABLE. (It would be better done in the caller of commit_inplace_alter_table().) Before starting the data dictionary modifications, invoke dict_stats_stop_bg() on every affected dict_table_t object. dict_stats_wait_bg_to_stop_using_table(): Renamed and simplified from from dict_stats_wait_bg_to_stop_using_tables(). dict_stats_stop_bg(): New predicate. DICT_STATS_BG_YIELD(trx): New auxiliary macro. rb#1939 approved by Jon Olav Hauglid, Sunny Bains ------------------------------------------------------------ revno: 4776 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 10:30:16 +0200 message: Work around Bug#16207700 by disabling the wait for purge completion. ------------------------------------------------------------ revno: 4775 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-15 12:39:29 +0530 message: Bug#16218104: MYSQL YASSL - LUCKY THIRTEEN: BREAKING THE TLS AND DTLS RECORD PROTOCOLS Description: Merge from 5.5. ------------------------------------------------------------ revno: 2875.417.189 [merge] committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-15 12:37:21 +0530 message: Bug#16218104: MYSQL YASSL - LUCKY THIRTEEN: BREAKING THE TLS AND DTLS RECORD PROTOCOLS Description: Merge from 5.1. ------------------------------------------------------------ revno: 2661.862.108 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-15 12:35:54 +0530 message: Bug#16218104: MYSQL YASSL - LUCKY THIRTEEN: BREAKING THE TLS AND DTLS RECORD PROTOCOLS Description: In yassl, decryption phase in TLS protocol depends on type of padding. This patch removes this dependancy and makes error generation/decryption process independent of padding type. ------------------------------------------------------------ revno: 4774 committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: topush-5.6 timestamp: Thu 2013-02-14 23:02:48 +0100 message: post-push test result fix for mysql-5.6 of bug#16274455. ------------------------------------------------------------ revno: 4773 [merge] committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.6_b12359942 timestamp: Fri 2013-02-15 00:43:04 +0530 message: BUG#12359942- REPLICATION TEST FROM ENGINE SUITE RPL_ROW_UNTIL TIMES OUT null merge ------------------------------------------------------------ revno: 2875.417.188 [merge] committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.5_b12359942 timestamp: Fri 2013-02-15 00:40:32 +0530 message: BUG#12359942- REPLICATION TEST FROM ENGINE SUITE RPL_ROW_UNTIL TIMES OUT post push fix: rpl_stm_until.test was disabled because of this bug. Enabled and fixed it. Removed a part of the test that was obsolete. It tested replication from 4.0 master to 5.0 slave. ------------------------------------------------------------ revno: 2661.862.107 committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.1_b12359942 timestamp: Fri 2013-02-15 00:38:42 +0530 message: BUG#12359942- REPLICATION TEST FROM ENGINE SUITE RPL_ROW_UNTIL TIMES OUT post push fix: rpl_stm_until.test was disabled because of this bug. Enabled and fixed it. Removed a part of the test that was obsolete. It tested replication from 4.0 master to 5.0 slave. ------------------------------------------------------------ revno: 4772 [merge] committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: topush-5.6 timestamp: Thu 2013-02-14 17:08:56 +0100 message: Manual merge of bug#16274455 into mysql-5.6 ------------------------------------------------------------ revno: 2875.417.187 committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: topush-5.5 timestamp: Thu 2013-02-14 17:03:49 +0100 message: Bug#16274455: CAN NOT ACESS PARTITIONED TABLES WHEN DOWNGRADED FROM 5.6.11 TO 5.6.10 Problem was new syntax not accepted by previous version. Fixed by adding version comment of /*!50531 around the new syntax. Like this in the .frm file: 'PARTITION BY KEY /*!50611 ALGORITHM = 2 */ () PARTITIONS 3' and also changing the output from SHOW CREATE TABLE to: CREATE TABLE t1 (a INT) /*!50100 PARTITION BY KEY */ /*!50611 ALGORITHM = 1 */ /*!50100 () PARTITIONS 3 */ It will always add the ALGORITHM into the .frm for KEY [sub]partitioned tables, but for SHOW CREATE TABLE it will only add it in case it is the non default ALGORITHM = 1. Also notice that for 5.5, it will say /*!50531 instead of /*!50611, which will make upgrade from 5.5 > 5.5.31 to 5.6 < 5.6.11 fail! If one downgrades an fixed version to the same major version (5.5 or 5.6) the bug 14521864 will be visible again, but unless the .frm is updated, it will work again when upgrading again. Also fixed so that the .frm does not get updated version if a single partition check passes. ------------------------------------------------------------ revno: 4771 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-14 17:15:07 +0200 message: Bug#16310273 BUG WITH ALTER TABLE AUTO_INCREMENT To be compatible with ALGORITHM=COPY, InnoDB has to mimic the behaviour in ALGORITHM=INPLACE. Instead of setting the AUTO_INCREMENT value to the user-specified one, it has to set it to the maximum of the user-specified value and MAX(auto_increment_column)+1. commit_get_autoinc(): Get the maximum value. rb#2005 approved by Kevin Lewis ------------------------------------------------------------ revno: 4770 [merge] committer: magnus.blaudd@oracle.com branch nick: 5.6 timestamp: Thu 2013-02-14 14:16:20 +0100 message: Merge 5.6-bug16315379 -> 5.6 ------------------------------------------------------------ revno: 4754.1.1 committer: magnus.blaudd@oracle.com branch nick: 5.6-bug16315379 timestamp: Tue 2013-02-12 11:17:24 +0100 message: Bug#16315379 COND_SERVER_STARTED MAY HAVE MULTIPLE WAITERS - Always use pthread_cond_broadcast when signalling COND_server_started since there may be more than one thread waiting for the condition. ------------------------------------------------------------ revno: 4769 committer: Dmitry Lenev <Dmitry.Lenev@oracle.com> branch nick: mysql-5.6-15935320 timestamp: Thu 2013-02-14 16:18:03 +0400 message: Test for bug #15935320 "ALTER TABLE BREAKS REPEATABLE READ WHEN QUERY CACHE IS ENABLED". The bug itself was fixed in 5.6.6 as a side-effect of changes to InnoDB ALTER TABLE implementation for WL5526 "Online Add Index". ------------------------------------------------------------ revno: 4768 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-14 12:06:06 +0000 message: WL#6663: Make the MTR binlog suite GTID_MODE agnostic Added missing RESET MASTER to binlog_start_comment test to avoid that a replayed dump of the test current binary log with gtid-mode=on is skipped, since those GTIDs were already logged. ------------------------------------------------------------ revno: 4767 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-14 16:38:37 +0530 message: Merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.186 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-14 16:35:40 +0530 message: Merge from mysql-5.1 to mysql-5.5 ------------------------------------------------------------ revno: 2661.862.106 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.1 timestamp: Thu 2013-02-14 16:33:31 +0530 message: For the error code ER_TOO_LONG_IDENT, the identifier is expected in the my_error call. So removing this line from here. ------------------------------------------------------------ revno: 4766 committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B16072004-5.6 timestamp: Wed 2013-02-13 18:37:10 +0200 message: Bug #16072004 : GRANT IDENITFIED BY PASSWORD SUCCESSFUL FOR PAM/WINDOWS AUTHENTICATED USERS When somebody tries to set a password for a user that's authenticated via an external plugin the server will just silently ignore the change and won't do anything with the password. This is expected behavior : the external authentication is designed like this. But silently ignoring commands is unfriendly and counter-intuitive. Fixed by adding a warning when this happens. No test cases needed, since existing tests are already covering this scenario. ------------------------------------------------------------ revno: 4765 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6 timestamp: Thu 2013-02-14 11:33:04 +0100 message: Bug#16200717 WRONG OUTPUT FROM MYSQL_CONFIG --LIBS Post-push fix: we have the 'dtrace' executable on darwin, but no cmake code for actually using it. This resulted in the generation of illegal 'ar r' commands. ------------------------------------------------------------ revno: 4764 committer: Jorgen Loland <jorgen.loland@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-14 11:08:25 +0100 message: Bug#16241773: RANGE OPTIMIZER CRASHES IN SEL_ARG::RB_INSERT() In the range optimizer, an OR operation was performed between a SEL_TREE with merges (two alternative UNION of indexes) and a simple SEL_TREE with only one range: SEL_TREE1: idx1_fld>10 OR idx2_fld=10 AND idx1_fld>20 OR idx2_fld=11 OR SEL_TREE2: idx1_fld=5 This OR operation was performed by imerge_list_or_tree(), which intended to do this: 1: tree_or((idx1_fld>10 OR idx2_fld=10), (idx1_fld=5)) 2: tree_or((idx1_fld>20 OR idx2_fld=11), (idx1_fld=5)) But tree_or() may modify it's arguments, which is what happened in this bug. Instead of doing the above, imerge_list_or_tree() did this: 1: <same as above> 2: tree_or(<same_as_above>, (idx1_fld=5 OR idx1_fld>10)) ^^^^^^^^^^^^^^ The fix is in imerge_list_or_tree(): Instead of calling tree_or() once and then starting to clone the second argument, we now make clones in all but the last time tree_or() is called. Thus, the SEL_TREE is now cloned before it may have been changed. ------------------------------------------------------------ revno: 4763 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6 timestamp: Thu 2013-02-14 09:33:31 +0100 message: merge bundle ------------------------------------------------------------ revno: 4759.1.1 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-mysql-config timestamp: Wed 2013-02-13 10:02:21 +0100 message: Bug#16200717 WRONG OUTPUT FROM MYSQL_CONFIG --LIBS Output from 'mysql_config --libs' included: -lpthread -lprobes_mysql -lm -lrt -lssl -lcrypto -ldl For some build configurations, we merge ssl libraries into the client libs. For these builds, -lssl and -lcrypto should not be mentioned. The 'probes_mysql' should also go away (there is no such library) ------------------------------------------------------------ revno: 4762 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6 timestamp: Thu 2013-02-14 08:46:32 +0100 message: Bug#16296509 SEGMENTATION FAULT, MYSQL CLIENT Bug#68231 Segmentation Fault, mysql client If we use the bundled libedit code, then ensure that we build a static library. If it is built as a shared library, we might end up compiling/linking with the bundled code, but actually use the system library at load/run-time. ------------------------------------------------------------ revno: 4761 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-14 10:48:41 +0530 message: Merge from mysql-5.5 to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.185 [merge] committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-12 15:35:56 +0530 message: Merge from mysql-5.1 to mysql-5.5. ------------------------------------------------------------ revno: 2661.862.105 committer: Annamalai Gurusami <annamalai.gurusami@oracle.com> branch nick: mysql-5.1 timestamp: Tue 2013-02-12 14:52:48 +0530 message: Bug #11753153 INNODB GENERATES SYMBOLS THAT ARE TOO LONG, INVALID DDL FROM SHOW CREATE Problem: The length of the internally generated foreign key name is not checked. Solution: The length of the internally generated foreign key name is checked. If it is greater than the allowed limit, an error message is reported. Also, the constraint name is printed in the same manner as the table name, using the system charset information. rb://1969 approved by Marko. ------------------------------------------------------------ revno: 4760 committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: fix-5.6 timestamp: Wed 2013-02-13 15:11:37 +0200 message: addendum fix test failures for bug #14697538 and Bug #16289303 : - made mysql_upgrade to flush properly on windows around _popen - re-recorded the affected tests - updated the thread pool test results ------------------------------------------------------------ revno: 4759 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-13 12:15:27 +0530 message: Bug#15977433: --SECURE-AUTH OPTIONS ALLOWS CLIENT TO SEND PASSWORD IN OLD FORMAT (PRE-4.1) Description: Fixed test failures in auth_sec suite. ------------------------------------------------------------ revno: 4758 [merge] committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-12 15:05:58 +0000 message: WL#6663: Make the MTR binlog suite GTID_MODE agnostic Due to several problems, the binlog suite is not fully gtid-mode=on compliant. These problems range from the fact that MTR is result file oriented to the fact that some tests not even have binlog turned on ever. This patch fixes the binlog suite so that in the future we might be able to run (most of) it with gtid-mode=on. The tests left out should be those that don't make sense with gtid-mode=on. ------------------------------------------------------------ revno: 4755.1.1 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-12 12:09:48 +0000 message: WL#6663: Make the MTR binlog suite GTID_MODE agnostic Due to several problems, the binlog suite is not fully gtid-mode=on compliant. These problems range from the fact that MTR is result file oriented to the fact that some tests not even have binlog turned on ever. This patch fixes the binlog suite so that in the future we might be able to run (most of) it with gtid-mode=on. The tests left out should be those that don't make sense with gtid-mode=on. ------------------------------------------------------------ revno: 4757 [merge] committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B14697538-5.6 timestamp: Tue 2013-02-12 16:12:03 +0200 message: merge ------------------------------------------------------------ revno: 4677.1.1 committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: B14697538-5.6 timestamp: Wed 2013-01-30 14:58:39 +0200 message: Bug #14697538 mysql_upgrade should upgrade all system tables before user tables The problem was due to mysql_upgrade calling mysqlcheck with --all-databases before performing the actual upgrade (playing scripts/mysql_system_tables_fix.sql). Added a new command line option --skip-database to mysqlcheck that takes a string argument and skips the database whose name matches *verbatim* (case sensitive) the argument supplied to the new option. Changed mysql_upgrade to : 1. call mysqlcheck on the system tables 2. perform the upgrade of the system tables 3. call mysqlcheck on the remaining tables. Updated the affected tests (due to changed ordering of the mysqlcheck output). Added a test case. ------------------------------------------------------------ revno: 4756 committer: Georgi Kodinov <georgi.kodinov@oracle.com> branch nick: fix-dbug-assert-b14845445-5.6 timestamp: Tue 2013-02-12 15:04:56 +0200 message: Bug #16289303: CREATE USER PASSWORD <FAULTY_HASH> TRIGGERS DBUG_ASSERT The preliminary checks for native and old passwords constraints were not a superset of the checks done while updating the in-memory user cache. This caused a dbug assert. Fixed by making sure the preliminary tests apply equally to both creating new users and updating existing users by putting the checks in a common code path. Old (wrong) test cases amended. Test case added. ------------------------------------------------------------ revno: 4755 committer: Harin Vadodaria <harin.vadodaria@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-12 16:08:59 +0530 message: Bug#15977433: --SECURE-AUTH OPTIONS ALLOWS CLIENT TO SEND PASSWORD IN OLD FORMAT (PRE-4.1) Description: If --secure-auth client option is used, client should raise an error if connection is using mysql_old_password stype password hash. However, at present client does not throw any error and if server is not running in secure_auth mode, connection is successfully established. Solution: Introduce a check in client code that makes sure that whenever --secure-auth option is specified on client side, an error is raised if connection is trying to use mysql_old_password hash. ------------------------------------------------------------ revno: 4754 committer: Thayumanavar <thayumanavar.x.sachithanantha@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-12 11:02:01 +0530 message: BUG#16065059 - QUERY 'REAP' FAILED WITH WRONG ERRNO 1205: LOCK WAIT TIMEOUT EXCEEDED Post-push fix to avoid PB2 failure. DEBUG_SYNC facility is required and so include in kill coverage tests to avoid failure on PB2. ------------------------------------------------------------ revno: 4753 committer: Nuno Carvalho <nuno.carvalho@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-11 16:03:55 +0000 message: BUG#16062608: REPLICATION COMMANDS IMPLICIT COMMIT AND SET GTID_NEXT="UUID:X" Revert fix since it introduced problems with SET commands, more precisely with SET PASSWORD. ------------------------------------------------------------ revno: 4752 committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-11 15:52:40 +0000 message: BUG#15894381 INCREASE MYSQLBINLOG VERSION (3.4 OR SOMETHING HIGHER THAN 3.3) IN MYSQL 5.6 The mysqlbinlog version is 3.2 in MySQL 5.0 and 3.3 in MySQL 5.1, 5.5 and 5.6 This is problematic since MySQL 5.6 adds new binlog format such as checksums. For example, the mysqlbinlog command in 5.5 can't parse binlog events generated in MySQL 5.6. When parsing binlog events generated in MySQL 5.6, we need to make sure that the commands handles the input. Increasing mysqlbinlog version in 5.6 to version 3.4 will make this easier. ------------------------------------------------------------ revno: 4751 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-11 16:47:38 +0200 message: Bug#16310467 READ-ONLY TRANSACTIONS DO NOT ROLL BACK CHANGES TO TEMPORARY TABLES trx_rollback_to_savepoint_low(): Roll back even read-only transactions. They can modify temporary tables. But, skip the processing if the transaction has not generated any undo log (has not modified anything). rb#1983 approved by Kevin Lewis ------------------------------------------------------------ revno: 4750 committer: Manish Kumar<manish.4.kumar@oracle.com> branch nick: mysql-5.6_16237051 timestamp: Mon 2013-02-11 17:19:31 +0530 message: BUG#16237051 - WHEN MYSQL VERSION NUMBER UPGRADE TO 10.X, CAN'T REPLICATE TO LOWER VERSION. Problem: The problem in this particular bug is the way the version number is checked in the rpl_slave.cc. We only check the *mysql->server_version and match it against the given case in the switch. But considering the case that mysql upgrades to 10.x we will have the switch pointing to 1 which will error out though the version is correct. Fix: To fix the problem we can extract the major version number using the strtok function and convert it into an integer. This will be then passed to the version checking switch case and it will ensure that the wrong error is not thrown. ------------------------------------------------------------ revno: 4749 committer: Thayumanavar <thayumanavar.x.sachithanantha@oracle.com> branch nick: mysql-5.6 timestamp: Mon 2013-02-11 12:26:16 +0530 message: BUG#16065059 - QUERY 'REAP' FAILED WITH WRONG ERRNO 1205: LOCK WAIT TIMEOUT EXCEEDED DESCRIPTION: The mtr test 'thread_pool.thread_pool_kill_coverage' fails when run under valgrind sometimes with the error code 1205 (Lock wait timeout exceeded) instead of the expected error code 1317 (Query interrupted). FIX: Use DEBUG_SYNC facility to synchronize the asynchronous SELECT send on one connection and KILL QUERY on another connection to get error code 1317 (Query Interrupted) as the test case expects. ------------------------------------------------------------ revno: 4748 committer: Mark Leith <mark.leith@oracle.com> branch nick: mysql-5.6 timestamp: Sat 2013-02-09 12:10:25 +0000 message: Bug #11766693: LOG-SLOW-ADMIN-STATEMENTS AND LOG-SLOW-SLAVE-STATEMENTS NOT DISPLAYED Added both log_slow_admin_statements and log_slow_slave_statements as server system variables, that can now be dynamically set at run time and are now available via SHOW GLOBAL VARIABLES. These behave otherwise in the same way as the --log-slow-admin-statements and --log-slow-slave-statements server command options. There is no need to restart the slave SQL thread for the value of log_slow_slave_statements to be picked up, as the global variable is re-read with each successful event applied by the SQL thread. ------------------------------------------------------------ revno: 4747 committer: Anitha Gopi <anitha.gopi@oracle.com> branch nick: mysql-5.6 timestamp: Sat 2013-02-09 02:18:29 +0100 message: Moving an unstable test to experimental group on windows ------------------------------------------------------------ revno: 4746 committer: Olav Sandstaa <olav.sandstaa@oracle.com> branch nick: icp-perf-bug-5.6 timestamp: Fri 2013-02-08 15:54:34 +0100 message: Fix for Bug#15896009 DBT-3 QUERY 19 RUNS SLOWER WITH INDEX CONDITION PUSHDOWN The cause for this regression is that Q-19 has a fairly complex query condition. When using index condition pushdown (ICP), we try to push as much as possible of this condition down to the storage engine. The ICP code will push down the parts of the query condition that can be evaluated using fields from the index and fields from records from earlier tables in the join. In this case ICP is used for the second table in the join and the index condition that is pushed contains only references to fields from the first table in the join. This part of the query condition will (in this case) already have been evaluated when reading the first table, and since the pushed index condition does not contain any fields from the index, no records can be filtered out by the push index condition. Thus, using index condition pushdown in this case leads to increased CPU usage since we unnecessary evaluates this condition multiple times extra with no possibility of filtering out any records. The fix for this problem is to ensure that we only push conditions to the storage engine that contain at least one field from the used index. ------------------------------------------------------------ revno: 4745 [merge] committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: topush-5.6 timestamp: Fri 2013-02-08 15:34:17 +0100 message: merge to mysql-5.6 ------------------------------------------------------------ revno: 2875.417.184 committer: Mattias Jonsson <mattias.jonsson@oracle.com> branch nick: topush-5.5 timestamp: Mon 2013-02-04 14:09:48 +0100 message: post-push test result update for bug#14521864. ------------------------------------------------------------ revno: 4744 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Fri 2013-02-08 13:52:14 +0100 message: Merge with latest 5.6 ------------------------------------------------------------ revno: 4742.1.1 [merge] committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Fri 2013-02-08 12:58:53 +0100 message: merge with latest 5.6 ------------------------------------------------------------ revno: 4740.1.4 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6 timestamp: Thu 2013-02-07 15:41:06 +0100 message: fix for Bug#16165981 VIEWS: CRASHING IN ITEM_REF::FIX_FIELDS Bug#16221433 MYSQL REJECTS QUERY DUE TO BAD RESOLUTION OF NAMES IN HAVING; VIEW UNREADABLE See comment of sql_view.cc. ------------------------------------------------------------ revno: 4740.1.3 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-16163722 timestamp: Thu 2013-02-07 17:08:51 +0100 message: fix for BUG#16163596 CRASH: PREPARED STATEMENT, GROUP BY WITH ROLLUP ------------------------------------------------------------ revno: 4740.1.2 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-3 timestamp: Thu 2013-01-24 15:13:17 +0100 message: Fix for Bug #16076089 ALTER TABLE ADD COLUMN TIMESTAMP DEFAULT CURRENT_TIMESTAMP STILL INSERTS ZERO The fix for Bug11745578 only covered the case where ALTER TABLE creates a new copy of the table, it forgot the case of "in-place ALTER", so it did not work for InnoDB. Some parts by Jon Olav. ------------------------------------------------------------ revno: 4740.1.1 committer: Guilhem Bichot <guilhem.bichot@oracle.com> branch nick: 5.6-2 timestamp: Thu 2013-01-31 13:46:58 +0100 message: Fix for Bug #16163936 CREATE TABLE ... SELECT: PROBLEMS WITH DEFAULT CURRENT_TIMESTAMP: CREATE TABLE t2 SELECT t1.column1 FROM t1; used to copy the DEFAULT of t1.column1 into t2.column1 except if this DEFAULT was a function (CURRENT_TIMESTAMP); this exception is removed. CREATE TABLE t2 (extra_column TIMESTAMP DEFAULT CURRENT_TIMESTAMP) SELECT t1.column1 FROM t1; used to set extra_column to a zero date when inserting rows; now it sets it to the current timestamp. Both behaviors were in contradiction with http://dev.mysql.com/doc/refman/5.6/en/create-table-select.htm ------------------------------------------------------------ revno: 4743 committer: Pedro Gomes <pedro.gomes@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-08 12:15:26 +0000 message: BUG#14677824 CLOSE_ACTIVE_MI FREED MEMORY THAT CONTAINS ACTIVE CRITICAL SECTIONS When being destroyed, Relay_log_info objects had some critical sections not being properly deleted before freeing the memory. The problem was in the stage_manager, owned by the associated relay_log object that was never properly cleaned. The stage_manager's method deinit is now called on the mysql_bin_log cleanup method, assuring a proper destruction of Relay_log_info objects. ------------------------------------------------------------ revno: 4742 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-08 16:38:49 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null merge from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.183 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-08 16:36:47 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null merge from mysql-5.1 ------------------------------------------------------------ revno: 2661.862.104 committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-08 16:34:32 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Reverting back the previous changes as they are causing issues in PB2. ------------------------------------------------------------ revno: 4741 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-08 15:44:07 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null merge from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.182 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-08 15:42:36 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null merge from mysql-5.1 ------------------------------------------------------------ revno: 2661.862.103 committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-08 15:41:18 +0530 message: BUG#16247322-MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Problem: Sys_vars suite is disabled in mysql-5.1 branch. Fix: To enable sys_vars suite in mysql-5.1, add it in mysql-test-run.pl file and also sys_vars suite should be added to Makefile.am inorder to get that test directory ------------------------------------------------------------ revno: 4740 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-08 13:53:34 +0530 message: Pushing the fixes for auth_sec suite failures on mysql-5.6 ------------------------------------------------------------ revno: 4739 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Fri 2013-02-08 09:46:26 +0200 message: Merge mysql-5.5 to mysql-5.6. ------------------------------------------------------------ revno: 2875.417.181 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2013-02-08 09:33:21 +0200 message: Merge mysql-5.1 to mysql-5.5. ------------------------------------------------------------ revno: 2661.862.102 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-08 09:23:12 +0200 message: Add missing linkage specifiers, so that ha_innodb_plugin.so will not export internal symbols. ------------------------------------------------------------ revno: 2661.862.101 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.1 timestamp: Fri 2013-02-08 09:22:46 +0200 message: Bug#16292043 RACE CONDITION IN SRV_EXPORT_INNODB_STATUS() WHEN ACCESSING PURGE_SYS->VIEW srv_export_innodb_status(): Read the purge_sys fields while holding purge_sys->latch. Approved by Sunny Bains ------------------------------------------------------------ revno: 4738 committer: Shivji Kumar Jha <shivji.jha@oracle.com> branch nick: mysql-5.6_b12359942 timestamp: Fri 2013-02-08 08:48:19 +0530 message: BUG#12359942- REPLICATION TEST FROM ENGINE SUITE RPL_ROW_UNTIL TIMES OUT post push fix: rpl_stm_until.test was disabled because of this bug. Enabled and fixed it. Removed a part of the test that was obsolete. It tested replication from 4.0 master to 5.0 slave. ------------------------------------------------------------ revno: 4737 [merge] committer: Igor Solodovnikov <igor.solodovnikov@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 19:47:22 +0200 message: Null-merge from mysql-5.1 ------------------------------------------------------------ revno: 2875.417.180 [merge] committer: Igor Solodovnikov <igor.solodovnikov@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-07 19:46:45 +0200 message: Null-merge from mysql-5.1 ------------------------------------------------------------ revno: 2661.862.100 committer: Igor Solodovnikov <igor.solodovnikov@oracle.com> branch nick: mysql-5.1 timestamp: Thu 2013-02-07 19:46:08 +0200 message: bug#14163155 COM_CHANGE_USER DOESN'T WORK WITH CHARACTER-SET-SERVER=UCS2 IN 5.1 SERVER Problem was caused by the COM_CHANGE_USER parsing code. That code ignored character set number passed in COM_CHANGE_USER packet. Instead character_set_client values was used. User name was not converted at all. Fixed by using passed character set number to convert both db and user names. If COM_CHANGE_USER does not contain character set number then character_set_client is used to convert both names. ------------------------------------------------------------ revno: 4736 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-merge timestamp: Thu 2013-02-07 17:13:03 +0100 message: merge 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.179 [merge] committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.5-merge timestamp: Thu 2013-02-07 17:08:59 +0100 message: merge 5.1 => 5.5 ------------------------------------------------------------ revno: 2661.862.99 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.1 timestamp: Thu 2013-02-07 17:05:07 +0100 message: Bug#16192219 CRASH IN TEST_IF_SKIP_SORT_ORDER ON SELECT DISTINCT WITH ORDER BY This is a backport of the fix for: Bug#13633549 HANDLE_FATAL_SIGNAL IN TEST_IF_SKIP_SORT_ORDER/CREATE_SORT_INDEX Don't invoke the range optimizer for a NULL select. ------------------------------------------------------------ revno: 4735 committer: Akhila Maddukuri<akhila.x.maddukuri@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 20:17:45 +0530 message: Bug#14477196 MAIN.CONNECT TEST FAILS AS MAX_USED_CONNECTIONS IS NOT CORRECT Bug#16275324 I_MAIN.CONNECT FAILS AS THREADS_CACHED IS NOT CORRECT Problem: main.connect and i_main.connect tests fail sporadically in PB2 due to result content mismatch Analysis: The result content mismatch is in the show statements as shown below: SHOW STATUS LIKE 'max_used_connections'; SHOW STATUS LIKE 'Threads_cached'; Which indicates that the disconnects present above SHOW statement in each test are not finished before the execution of SHOW starts. Fix: Added --source include/wait_until_disconnected.inc in these two tests after every disconnect ------------------------------------------------------------ revno: 4734 committer: Tor Didriksen <tor.didriksen@oracle.com> branch nick: 5.6-merge timestamp: Thu 2013-02-07 15:32:43 +0100 message: Bug#16271540 UNINITIALIZED VALUE IN SAVE_VALUE_AND_HANDLE_CONVERSION Converting -0.1901 to bit(30) returns zero. static_cast<Field_num*>(field) is a "side-cast" rather than down-cast, and hence illegal. Solution: don't try to figure out 'always true' or 'always false' for bit fields. ------------------------------------------------------------ revno: 4733 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 17:28:46 +0530 message: Bug #16247322 MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null-merge from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.178 [merge] committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.5 timestamp: Thu 2013-02-07 17:27:32 +0530 message: Bug #16247322 MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 Null-Merge from mysql-5.5 ------------------------------------------------------------ revno: 2661.862.98 committer: Venkatesh Duggirala<venkatesh.duggirala@oracle.com> branch nick: mysql-5.1 timestamp: Thu 2013-02-07 17:23:37 +0530 message: Bug#16247322- MTR NOT RUNNING SYS_VARS TEST SUITE FOR 5.1 SYS_VARS suite is not enabled in MTR by default run. Enabling it with this check-in. ------------------------------------------------------------ revno: 4732 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 17:05:33 +0530 message: Fixes for the mysql_native_plugin.test mysql_old_plugin.test mysql_sha256_plugin.test from auth_sec suite ------------------------------------------------------------ revno: 4731 [merge] committer: magnus.blaudd@oracle.com branch nick: mysql-5.6 timestamp: Thu 2013-02-07 11:48:03 +0100 message: Merge ------------------------------------------------------------ revno: 4729.1.2 committer: magnus.blaudd@oracle.com branch nick: 5.6 timestamp: Thu 2013-02-07 11:45:58 +0100 message: Bug#16295152 NEW SYSTEM VARIABLE GTID_NEXT_LIST APPEARS WITH HAVE_NDB_BINLOG - remove test for gtid_next_list variable which only existed in MySQL Cluster ------------------------------------------------------------ revno: 4729.1.1 committer: magnus.blaudd@oracle.com branch nick: 5.6-bug16295152-gtid_next_list timestamp: Thu 2013-02-07 10:50:58 +0100 message: Bug#16295152 NEW SYSTEM VARIABLE GTID_NEXT_LIST APPEARS WITH HAVE_NDB_BINLOG - replace usages of HAVE_NDB_BINLOG in GTID code with HAVE_GTID_NEXT_LIST wo avoid that gtid_next_list and related code pops up in MySQL Cluster ------------------------------------------------------------ revno: 4730 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 11:28:18 +0200 message: Bug#16287411 MYSQLD CRASH WHEN INNODB_API_ENABLE_MDL IS OFF commit_try_rebuild(): Instead of letting the assertion fail, return ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction to the ALTER TABLE statement if another thread is accessing the table (bypassing the MySQL meta-data locking). Approved and tested by Jimmy Yang ------------------------------------------------------------ revno: 4729 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 13:57:46 +0530 message: ~/message.txt ------------------------------------------------------------ revno: 4728 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 13:36:59 +0530 message: ~/message.txt ------------------------------------------------------------ revno: 4727 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 10:48:09 +0530 message: ~/message.txt ------------------------------------------------------------ revno: 4726 committer: Libing Song <libing.song@oracle.com> branch nick: mysql-5.6 timestamp: Thu 2013-02-07 10:10:34 +0800 message: Bug#14801955 TABLE_ID IS DEFINED DIFFERENTLY IN SQL/TABLE.H VS SQL/LOG_EVENT.H Postfix, the test case uses DEBUG, it doesn't work in no debug builds. So have_debug.inc is added to skip the test in no debug builds. ------------------------------------------------------------ revno: 4725 [merge] committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 22:53:58 +0200 message: Merge mysql-5.6 to working copy. ------------------------------------------------------------ revno: 4721.1.1 [merge] committer: kevin.lewis@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-06 14:14:11 -0600 message: Merge Bug#16263506 from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.177 committer: kevin.lewis@oracle.com branch nick: mysql-5.5 timestamp: Wed 2013-02-06 13:49:56 -0600 message: Bug#16263506 - INNODB; USE ABORT() ON ALL PLATFORMS INSTEAD OF DEREFERENCING UT_DBG_NULL_PTR The abort() call is standard C but InnoDB only uses it in GCC environments. UT_DBG_USE_ABORT is not defined the code crashed by dereferencing a null pointer instead of calling abort(). Other code throughout MySQL including ndb, sql, mysys and other places call abort() directly. This bug also affects innodb.innodb_bug14147491.test which fails randomly on windows because of this issue. Approved by marko in http://rb.no.oracle.com/rb/r/1936/ ------------------------------------------------------------ revno: 4724 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 22:31:39 +0200 message: Bug#14606334 INNODB UNABLE TO MERGE IBUF INTO PAGE Bug#14774779 CRASH RECOVERY FAILED, UNABLE TO COMPRESS A PAGE Whenever we successfully reorganize or compress a compressed secondary index page, ensure that the IBUF_BITMAP_FREE bits will be updated accordingly. Also, slightly change the definition of IBUF_BITMAP_FREE in compressed pages. Instead of considering the free space on the uncompressed page *after* reorganize, use the *before* value, so that a buffered insert can be merged without reorganizing or even recompressing the page. btr_page_reorganize_low(), btr_page_reorganize(), btr_cur_update_alloc_zip_func(), btr_cur_insert_if_possible(), page_cur_tuple_insert(), page_cur_rec_insert(), page_cur_insert_rec_zip(), page_copy_rec_list_end_to_created_page(), page_copy_rec_list_end_no_locks(), page_copy_rec_list_end(), page_copy_rec_list_start(), page_move_rec_list_end(), page_move_rec_list_start(): Note that the caller should keep IBUF_BITMAP_FREE up to date. btr_page_split_and_insert(): On failure, reset the IBUF_BITMAP_FREE bits on both pages. btr_cur_optimistic_delete_func(): Do not update the IBUF_BITMAP_FREE on compressed pages any more, because according to the updated definition, it will not increase by purging records without reorganizing the page. btr_cur_optimistic_insert(), btr_cur_update_in_place(), btr_cur_optimistic_update(), btr_cur_pessimistic_update(): After a failed attempt to modify a compressed page, reset the IBUF_BITMAP_FREE bits, because we may already have reorganized the page. btr_cur_update_in_place(), btr_cur_optimistic_update(): Implement the flag BTR_KEEP_IBUF_BITMAP for suppressing the IBUF_BITMAP_FREE updates, so that btr_cur_pessimistic_update() can invoke btr_cur_compress_if_useful() without violating the latching order (further pages cannot be latched after latching a change buffer bitmap page). ibuf_index_page_calc_free_zip(): Consider the maximum insert size on the uncompressed page without reorganizing the page, so that ibuf_insert_to_index_page_low() will succeed without reorganizing or recompressing the page. Fix a recovery problem in innodb_log_compressed_pages=OFF and reintroduce the parameter innodb_log_compressed_pages=OFF (ON by default). Also, whenever a page becomes empty, create the page from the scratch. This should hopefully generate less redo log, and it will reduce the cases where we are compressing garbage. This is also necessary in order to avoid an infinite page split with the rest of this patch. page_compression_level: Renamed to page_zip_level. page_log_compressed_pages: Renamed to page_zip_log_pages. innodb_compression_level_update(): Remove. Declare page_zip_level directly with a compatible data type. page_is_empty(): A new predicate, similar to page_is_leaf(), for checking PAGE_N_RECS == 0 without adjusting the endianness. page_has_garbage(): New predicate for checking if PAGE_GARBAGE is nonzero. page_create_empty(): New function, to replace a B-tree page with an empty page. page_create_zip(): Add a parameter for PAGE_MAX_TRX_ID, so that we can recreate a page without zeroing out the field. This field only needs to be nonzero on nonempty secondary index leaf pages. page_cur_insert_rec_zip_reorg(): Remove (merge to the only caller). page_cur_insert_rec_zip(): Take 'cursor' as a parameter. When not in crash recovery (applying redo log), modify the behaviour if there is not enough room in the page modification log (that is, page_zip_available() fails). If the page is logically empty, invoke page_create_zip() to physically empty the page. Otherwise, if the page contains no garbage and no modification log, give up. Otherwise, if innodb_log_compressed_pages=OFF, first do btr_page_reorganize_low() and only then attempt an insert followed by compressing the whole page. If innodb_log_compressed_pages=ON, insert into the uncompressed page only, and then invoke page_zip_reorganize(). In this way, whenever we have to recompress, we will always end up with a reorganized page with 1 or 0 record in the page modification log. page_cur_delete_rec(), page_delete_rec_list_end(), page_delete_rec_list_start(): If the page would become logically empty, invoke page_create_empty() to physically empty it. btr_page_reorganize_low(): Replace the 'block' parameter with 'page_cur', and position the cursor on the same record, so that the caller will avoid the repositioning. Do not write a redo log record unless the operation succeeds. btr_cur_insert_if_possible(): Pass the cursor to btr_page_reorganize(), avoiding the costly page_cur_search() call. btr_cur_optimistic_insert(): After a failed page_cur_tuple_insert(), do not attempt page reorganize on a compressed page. The page_cur_tuple_insert() will already have attempted it, in vain. On uncompressed pages, pass the cursor to btr_page_reorganize() to avoid the page_cur_search() call. btr_cur_update_alloc_zip_func(): Renmed from btr_cur_update_alloc_zip(). Make offsets a debug-only parameter. Replace 'block' with 'cursor'. If there is not enough place, reorganize the page (to get rid of garbage in the PAGE_FREE list) rather than just recompress it. Give up if there is neither garbage in the PAGE_FREE list nor any modification log. btr_cur_update_in_place(): Make 'offsets' non-const, because btr_cur_update_alloc_zip() can now change the rec_offs_validate() information when it is reorganizing the page. NOTE: If we were free to change the redo log format, we could do the following when there is not enough place in the modification log to log an insert or update: * Reorganize the uncompressed page only. * Make the modification on the uncompressed page only. (These would need new redo log entry types.) * Compress the entire page. Redo logged as MLOG_ZIP_PAGE_COMPRESS_NO_DATA. If the compress operation fails, none of the redo log must be written, and we will have to restore the uncompressed page from the compressed page and refuse the operation. rb#1761 approved by Inaam Rana ------------------------------------------------------------ revno: 4723 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 22:19:29 +0200 message: Code refactoring for Bug#14606334 fix: Introduce page_create_empty(). page_create_zip(): Add a parameter for initializing PAGE_MAX_TRX_ID to a nonzero value. page_create_empty(): A new function, for replacing a B-tree page with an empty page. page_cur_delete_rec(), page_delete_rec_list_end(), page_delete_rec_list_start(): Invoke page_create_empty() if the page would become logically empty (containing only garbage in the PAGE_FREE list). rb#1865 (approved as part of rb#1761 by Inaam Rana) ------------------------------------------------------------ revno: 4722 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 22:17:18 +0200 message: Code refactoring for Bug#14606334 fix: Introduce page_is_empty(). page_is_empty(): A new predicate, similar to page_is_leaf(). Check if PAGE_N_RECS is 0, ignoring the byte order. The field is at a uint16-aligned address, and *(uint16_t*) (char[2]) {0x00, 0x00} is 0, no matter what the byte order is. page_is_leaf(): Change the return type from ibool to bool. rb#1864 (approved as part of rb#1761 by Inaam Rana) ------------------------------------------------------------ revno: 4721 committer: Tanjot Uppal <tanjot.uppal@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 15:34:50 +0530 message: ~/message.txt ------------------------------------------------------------ revno: 4720 committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 11:48:16 +0200 message: Whitespace fixup ------------------------------------------------------------ revno: 4719 committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 11:38:34 +0200 message: Fix Bug#16075806 INNODB CLAIMS: CPU DOES NOT SUPPORT CRC32 INSTRUCTIONS 1. Report whether crc32 is available or not *after* checking for its availability. 2. Reword the message to say whether InnoDB is using or not using crc32 instead of whether CPU supports or does not support crc32. On Windows InnoDB will not use crc32 even if the CPU supports it. This patch changes the startup message as follows: * On SSE42 enabled CPU (ie CPU that has crc32 instructions): before: "InnoDB: CPU does not support crc32 instructions" after: "InnoDB: Using CPU crc32 instructions" * On SSE42 disabled CPU (ie CPU that does not have crc32 instructions): before: "InnoDB: CPU does not support crc32 instructions" after: "InnoDB: Not using CPU crc32 instructions" Submitted by: Sunny (via email) ------------------------------------------------------------ revno: 4718 [merge] committer: Ravinder Thakur <ravinder.thakur@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 13:59:50 +0530 message: Upmerge from mysql-5.5 ------------------------------------------------------------ revno: 2875.417.176 committer: Ravinder Thakur <ravinder.thakur@oracle.com> branch nick: mysql-5.5 timestamp: Wed 2013-02-06 13:52:32 +0530 message: Bug#14711808 MSI INSTALLATION / UPGRADE CAN CORRUPT EXISTING INSTALLATION Currently MySQL MSI installer on Windows installs MySQL in "per user" mode. It means that if a Windows machine has multiple users, they each can install MySQL independently. However the default path of MySQL is "C:\Program Files (x86)\MySQL\" and when two users install MySQL on same machine, the installation by second user just overwrites the MySQL files. This default shared location leads to the issue where if the second user uninstalls MySQL, the installation files are removed for the first user as well. In this fix, we are now making the default installation "per machine". It means that when MySQL is installed with defaults options, all users can see the shortcuts for MySQL in start menu(since installations is for all users). Also when any user relaunches the installer, it will consider that action uninstallation rather than installation for that user. There are command line options in installer that can be used to undo the "per machine" installation but will not consider that scenario.MySQL is a server product and it does not make a lot of sense to install it differently for each user. ------------------------------------------------------------ revno: 4717 [merge] committer: sayantan.dutta@oracle.com branch nick: mysql-5.6 timestamp: Wed 2013-02-06 13:06:21 +0530 message: 13625278 5.5 => 5.6 ------------------------------------------------------------ revno: 2875.417.175 [merge] committer: sayantan.dutta@oracle.com branch nick: mysql-5.5 timestamp: Wed 2013-02-06 13:04:41 +0530 message: 13625278 5.1 => 5.5 ------------------------------------------------------------ revno: 2661.862.97 committer: sayantan.dutta@oracle.com branch nick: mysql-5.1 timestamp: Wed 2013-02-06 13:02:14 +0530 message: BUG #13625278 - PB2 SHOULD PROVIDE MORE USEFUL INFORMATION FOR TIMEOUTS ------------------------------------------------------------ revno: 4716 committer: Tarique Saleem <tarique.saleem@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-02-06 11:44:17 +0530 message: Updated the test again to comment valgrind as it times out after 9000 sec making Pb2 slow. Bug logged for the same is Bug 15922655 ------------------------------------------------------------ revno: 4715 [merge] committer: Hery Ramilison <hery.ramilison@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-05 22:49:04 +0100 message: Upmerge of the 5.1.68 build ------------------------------------------------------------ revno: 2875.417.174 [merge] committer: Hery Ramilison <hery.ramilison@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-05 21:29:49 +0100 message: Upmerge of the 5.1.68 build ------------------------------------------------------------ revno: 2661.862.96 [merge] author: hery.ramilison@oracle.com committer: Hery Ramilison <hery.ramilison@oracle.com> branch nick: mysql-5.1 timestamp: Tue 2013-02-05 20:47:45 +0100 message: Merge from mysql-5.1.68-release ------------------------------------------------------------ revno: 2661.873.1 tags: mysql-5.1.68 committer: Hery Ramilison <hery.ramilison@oracle.com> branch nick: mysql-5.1.68-release timestamp: Tue 2013-01-08 13:29:11 +0100 message: Applying patch for Bug#67177 Bug#15967374 from Kent ------------------------------------------------------------ revno: 2875.417.173 [merge] author: sunanda.menon@oracle.com committer: Sunanda Menon<sunanda.menon@oracle.com> branch nick: mysql-5.5 timestamp: Tue 2013-02-05 10:50:02 +0100 message: Merge from mysql-5.5.30-release ------------------------------------------------------------ revno: 2875.432.3 tags: mysql-5.5.30 committer: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> branch nick: mysql-5.5.30-release timestamp: Wed 2013-01-16 08:09:26 +0100 message: Removed Conflicts: mysql-libs mysql-libs-advanced from spec file ------------------------------------------------------------ revno: 2875.432.2 committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: rel-5530 timestamp: Tue 2013-01-15 09:56:36 +0100 message: A bit more intelligent processing of .in files in mysql-test/collections ------------------------------------------------------------ revno: 2875.432.1 committer: Olav Sandstaa <olav.sandstaa@oracle.com> branch nick: 5.5.30-release timestamp: Tue 2013-01-15 08:52:38 +0100 message: Fix for Bug#14636211 WRONG RESULT (EXTRA ROW) ON A FROM SUBQUERY WITH A VARIABLE AND ORDER BY Bug#16035412 MYSQL SERVER 5.5.29 WRONG SORTING USING COMPLEX INDEX This is a fix for a regression introduced by Bug#12667154: Bug#12667154 attempted to fix a performance problem with subqueries that did filesort. For doing filesort, the optimizer creates a quick select object to use when building the sort index. This quick select object was deleted after the first call to create_sort_index(). Thus, for queries where the subquery was executed multiple times, the quick object was only used for the first execution. For all later executions of the subquery, filesort used a complete table scan for building the sort index. The fix for Bug#12667154 tried to fix this by not deleting the quick object after the first execution of create_sort_index() so that it would be re-used for building the sort index by the following executions of the subquery. This regression introduced in Bug#12667154 is that due to not deleting the quick select object after building the sort index, the quick object could in some cases be used also during the second phase of the execution of the subquery instead of using the created sort index. This caused wrong results to be returned. The fix for this issue is to delete the reference to the select object after it has been used in create_sort_index(). In this way the select and quick objects will not be available when doing the second phase of the execution of the select operation. To ensure that the select object can be re-used for the following executions of the subquery we make a copy of the select pointer. This is used for restoring the select object after the select operation is completed. ------------------------------------------------------------ revno: 4714 committer: Gleb Shchepa <gleb.shchepa@oracle.com> branch nick: 5.6-16078557 timestamp: Tue 2013-02-05 21:44:09 +0400 message: Bug #16078557: EXPLAIN JSON OF MALFORMED SQL The Server executed EXPLAIN FORMAT=JSON of some malformed queries improperly. Fix: Both JOIN::explain() and st_select_lex_unit::explain() functions have been modified to return error statuses instead of void, as well as the calling code has been changed to take into account that error states and to abort its execution on error before unneeded calls to Explain*::end_context(). That protects underlying EXPLAIN implementation from doing output of half-initialized intermediate structures. ------------------------------------------------------------ revno: 4713 committer: Marko M?kel? <marko.makela@oracle.com> branch nick: mysql-5.6 timestamp: Tue 2013-02-05 16:23:03 +0200 message: Add more tests for ADD/DROP/rename COLUMN. ------------------------------------------------------------ revno: 4712 committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: merge-56 timestamp: Tue 2013-02-05 13:32:31 +0100 message: Followup to undo build breaking code from 5.6.10-release ------------------------------------------------------------ revno: 4711 [merge] committer: Bjorn Munch <bjorn.munch@oracle.com> branch nick: merge-56 timestamp: Tue 2013-02-05 12:23:16 +0100 message: Merge of 5.6.10 release to 5.6 ------------------------------------------------------------ revno: 4591.22.14 tags: mysql-5.6.10 committer: Daniel Fischer <daniel.fischer@oracle.com> branch nick: mysql-5.6.10-release timestamp: Fri 2013-02-01 14:32:16 +0100 message: apply patch for bug#14771252 |