File: C:/xampp/mysql/docs/ChangeLog
------------------------------------------------------------
revno: 4868
committer: Marko M?kel? <[email protected]>
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: [email protected]
parent: [email protected]
committer: Marko M?kel? <[email protected]>
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? <[email protected]>
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: [email protected]
parent: [email protected]
committer: Marko M?kel? <[email protected]>
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? <[email protected]>
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: [email protected]
parent: [email protected]
committer: Marko M?kel? <[email protected]>
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? <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6
timestamp: Fri 2013-03-01 14:23:07 +0100
message:
automerge
------------------------------------------------------------
revno: 4848.1.9
committer: Jimmy Yang <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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<[email protected]>
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<[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6
timestamp: Thu 2013-02-28 16:31:05 +0100
message:
automerge
------------------------------------------------------------
revno: 4845.1.19
committer: Tor Didriksen <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
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: [email protected]
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: [email protected]
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? <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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: [email protected]
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6
timestamp: Tue 2013-02-26 07:47:28 +0100
message:
Merge
------------------------------------------------------------
revno: 4829.1.1
committer: Annamalai Gurusami <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: mysql-5.1
timestamp: Mon 2013-02-25 15:26:00 +0100
message:
Updated/added copyright headers.
------------------------------------------------------------
revno: 4829
committer: Bjorn Munch <[email protected]>
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<[email protected]>
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<[email protected]>
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 <[email protected]>
branch nick: test-5.6
timestamp: Mon 2013-02-25 13:52:28 +0100
message:
merge
------------------------------------------------------------
revno: 2875.417.211
committer: Mattias Jonsson <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
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: [email protected]
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
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: [email protected]
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 <[email protected]>
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 <[email protected]>
branch nick: B16295905-5.6
timestamp: Tue 2013-02-19 14:28:14 +0200
message:
merge
------------------------------------------------------------
revno: 4795.1.1 [merge]
committer: Georgi Kodinov <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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<[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
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 <[email protected]>
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? <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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: [email protected]
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: [email protected]
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: 5.6
timestamp: Thu 2013-02-14 09:33:31 +0100
message:
merge bundle
------------------------------------------------------------
revno: 4759.1.1
committer: Tor Didriksen <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: B14697538-5.6
timestamp: Tue 2013-02-12 16:12:03 +0200
message:
merge
------------------------------------------------------------
revno: 4677.1.1
committer: Georgi Kodinov <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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<[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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 <[email protected]>
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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<[email protected]>
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 <[email protected]>
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<[email protected]>
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<[email protected]>
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<[email protected]>
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 <[email protected]>
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: [email protected]
branch nick: mysql-5.6
timestamp: Thu 2013-02-07 11:48:03 +0100
message:
Merge
------------------------------------------------------------
revno: 4729.1.2
committer: [email protected]
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: [email protected]
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? <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6
timestamp: Thu 2013-02-07 13:57:46 +0530
message:
~/message.txt
------------------------------------------------------------
revno: 4728
committer: Tanjot Uppal <[email protected]>
branch nick: mysql-5.6
timestamp: Thu 2013-02-07 13:36:59 +0530
message:
~/message.txt
------------------------------------------------------------
revno: 4727
committer: Tanjot Uppal <[email protected]>
branch nick: mysql-5.6
timestamp: Thu 2013-02-07 10:48:09 +0530
message:
~/message.txt
------------------------------------------------------------
revno: 4726
committer: Libing Song <[email protected]>
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? <[email protected]>
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: [email protected]
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: [email protected]
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? <[email protected]>
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? <[email protected]>
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? <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6
timestamp: Wed 2013-02-06 15:34:50 +0530
message:
~/message.txt
------------------------------------------------------------
revno: 4720
committer: Vasil Dimov <[email protected]>
branch nick: mysql-5.6
timestamp: Wed 2013-02-06 11:48:16 +0200
message:
Whitespace fixup
------------------------------------------------------------
revno: 4719
committer: Vasil Dimov <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
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: [email protected]
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: [email protected]
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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: [email protected]
committer: Hery Ramilison <[email protected]>
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 <[email protected]>
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: [email protected]
committer: Sunanda Menon<[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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? <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
branch nick: mysql-5.6.10-release
timestamp: Fri 2013-02-01 14:32:16 +0100
message:
apply patch for bug#14771252