Known limitations of this release:
Building MySQL from source on Windows using Visual Studio 2008
fails with an identifier not found
error. Later versions of Visual Studio are unaffected. The
workaround is to set the CMake build option
INNODB_PAGE_ATOMIC_REF_COUNT
to
OFF
. This option is ON
by default.
If you have InnoDB
tables with full-text
search indexes and you are upgrading from MySQL 5.6.10 to a
MySQL version up to and including MySQL 5.6.18, the server
will fail to start after the upgrade (Bug#72079). This bug is
fixed in MySQL 5.6.19. As a workaround, remove full-text
search indexes prior to upgrading and rebuild full-text search
indexes after the upgrade is completed.
InnoDB: New global configuration parameters,
innodb_status_output
andinnodb_status_output_locks
, allow you to dynamically enable and disable the standardInnoDB
Monitor andInnoDB
Lock Monitor for periodic output. Enabling and disabling monitors for periodic output by creating and dropping specially named tables is deprecated and may be removed in a future release. For additional information, see InnoDB Monitors.-
Previously,
ALTER TABLE
in MySQL 5.6 could alter a table such that the result had temporal columns in both 5.5 and 5.6 format. NowALTER TABLE
upgrades old temporal columns to 5.6 format forADD COLUMN
,CHANGE COLUMN
,MODIFY COLUMN
,ADD INDEX
, andFORCE
operations. This conversion cannot be done using theINPLACE
algorithm because the table must be rebuilt, so specifyingALGORITHM=INPLACE
in these cases results in an error. SpecifyALGORITHM=COPY
if necessary.When
ALTER TABLE
does produce a temporal-format conversion, it generates a message that can be displayed withSHOW WARNINGS
:TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format
. (Bug #17246318) CMake now supports a
-DTMPDIR=
option to specify the defaultdir_name
tmpdir
value. If unspecified, the value defaults toP_tmpdir
in<stdio.h>
. Thanks to Honza Horak for the patch. (Bug #68338, Bug #16316074)
InnoDB; Replication: Attempting to reset a replication slave while
innodb_force_recovery
is greater than0
would return a cryptic error message: ERROR(1030) HY000: Got error -1 from storage engine. The error message has been changed to: ERROR HY000: Operation not allowed when innodb_force_recovery > 0. Replication options such asrelay_log_info_repository=TABLE
andmaster_info_repository=TABLE
store information in tables inInnoDB
. Wheninnodb_force_recovery
is greater than 0, replication tables cannot be updated which may cause replication administration commands to fail. (Bug #17287443, Bug #69907)InnoDB; Replication: Using the
InnoDB
memcached
plugin (see InnoDB memcached Plugin) withinnodb_api_enable_binlog
set to 1 caused the server to leak memory. (Bug #70757, Bug #17675622)InnoDB: A boolean mode full-text search query would result in a memory access violation during parsing. (Bug #17978763)
InnoDB: When new indexes are added by an
ALTER TABLE
operation, instead of only saving table-level statistics and statistics for the new indexes,InnoDB
would save statistics for the entire table, including the table's other indexes. This behavior slowedALTER TABLE
performance. (Bug #17848838, Bug #16511145)InnoDB: Due to a parser error, full-text search queries that include a sub-expression could return the wrong result. (Bug #17840768)
InnoDB: The innochecksum tool did not use a Windows-specific API to retrieve file size information, which resulted in an incorrect error message (Error: ibdata1 cannot be found) when the MySQL 5.6 innochecksum 2GB file size limit was exceeded. innochecksum now provides support for files larger than 2GB in both MySQL 5.6 and MySQL 5.7. (Bug #17810862, Bug #70936)
InnoDB: Due to a regression introduced by the fix for Bug#17371537, memory was not allocated for the default memcached engine when using the default memcached engine as the backstore for data instead of
InnoDB
. (Bug #17800829)InnoDB:
InnoDB
would report an incorrect operating system error code after failing to initialize. (Bug #17788055, Bug #70867)InnoDB: Manipulating a table after discarding its tablespace using
ALTER TABLE ... DISCARD TABLESPACE
could result in a serious error. (Bug #17700280)InnoDB: Persistent optimizer statistics would cause stalls due to latch contention. (Bug #17699331, Bug #70768)
InnoDB: An
InnoDB
full-text search failure would occur due to an “unended” token. The string and string length should be passed for string comparison. (Bug #17659310)InnoDB:
MATCH() AGAINST()
queries that use a long string as an argument forAGAINST()
could result in an error when run on anInnoDB
table with a full-text search index. (Bug #17640261)InnoDB: In debug builds, a merge insert buffer during a page read would cause a memory access violation. (Bug #17561188)
InnoDB: In
sync0rw.ic
,rw_lock_x_lock_func_nowait
would needlessly callos_thread_get_curr_id
. (Bug #17509710, Bug #70417)InnoDB: Truncating a memcached
InnoDB
table while memcached is performing DML operations would result in a serious error. (Bug #17468031)InnoDB: The server could fail to restart if a crash occurred immediately following a
RENAME TABLE
in anALTER TABLE
,RENAME TABLE
sequence. (Bug #17463290)InnoDB: If a tablespace data file path is updated in a
.isl
file and then a crash recovery is performed, the updated tablespace data file path is read from the.isl
file but theSYS_DATAFILES
table would not be not updated. TheSYS_DATAFILES
table is now updated with the new data file path after crash recovery. (Bug #17448389)InnoDB: Attempting to rename a table to a missing database would result in a serious error. (Bug #17447500)
InnoDB: If the first page (page 0) of file-per-table tablespace data file was corrupt, recovery would be halted even though the doublewrite buffer contained a clean copy of the page. (Bug #17335427, Bug #70087, Bug #17341780)
InnoDB: The
InnoDB
memcached Readme file (README-innodb_memcached
) incorrectly stated that libevent 1.6.0 is linked statically into daemon memcached. The bundled version of libevent is 1.4.12, not 1.6.0. (Bug #17324419, Bug #70034)InnoDB: The
ALTER TABLE
INPLACE
algorithm failed to decrease the auto-increment value. (Bug #17250787, Bug #69882)InnoDB: Comments in
btr0cur.cc
incorrectly stated thatbtr_cur_pessimistic_update()
andbtr_cur_optimistic_update()
would accept a NULL value. (Bug #17231743, Bug #69847)InnoDB:
dict_table_schema_check
would calldtype_sql_name
needlessly. (Bug #17193801, Bug #69802)InnoDB: The function
os_file_get_status
would not work with raw devices. (Bug #17023438, Bug #69424)InnoDB: During crash recovery, an incorrect transaction active time would result in rolling back an uncommitted transaction. (Bug #16936961, Bug #69438)
InnoDB: Heap block debugging information (
file_name
,lineno
), used for logging diagnostics, would appear in release builds. This information should only appear in debug builds. (Bug #16924719, Bug #69422)InnoDB: An online
ALTER TABLE
operation would consume more memory than expected. During an onlineALTER TABLE
operation, an online log buffer containing a head and tail buffer is created for each index that is created or rebuilt. The tail buffer is the writer context and is only required for concurrent write operations on an index while theALTER TABLE
operation is in progress. The head buffer is the reader context and is only required during the log apply phase. To reduce memory consumption, the tail buffer is now allocated when the first DML statement is run on the index, and the head buffer is only allocated in the log apply phase and freed afterwards. (Bug #16868967, Bug #69325, Bug #17911720)InnoDB: Renaming a column while also adding or dropping columns in the same
ALTER TABLE
operation would cause an error. (Bug #16864981)-
InnoDB: On Windows, the full-text search (FTS) object ID was not in the expected hexadecimal format. (Bug #16559254)
References: See also: Bug #16559119.
-
InnoDB: Fetching and releasing pages from the buffer pool and tracking the page state are expensive and complex operations. Prior to the bug fix, these operations were performed using a page mutex. Using a page mutex to track several things is expensive and does not scale well. The bug fix separates fetch and release tracking (in-use state) of a page from page I/O state tracking. Fetch and release is now tracked using atomics where available.
For portability, a new CMake build option,
INNODB_PAGE_ATOMIC_REF_COUNT
(defaultON
), can be used to disable atomic page reference counting on platforms where atomics support is not available. When atomic page reference counting is enabled (default), “[Note] InnoDB: Using atomics to ref count buffer pool pages
” is printed to the error log at server startup. If atomic page reference counting is disabled, “[Note] InnoDB: Using mutexes to ref count buffer pool pages
” is printed instead. (Bug #16249481, Bug #68079) InnoDB: Table renaming errors would appear in the
LATEST FOREIGN KEY ERROR
section of theSHOW ENGINE INNODB STATUS
output. (Bug #12762390, Bug #61746)InnoDB:
UNIV_SYNC_DEBUG
, which was disabled inuniv.i
with the fix for Bug#16720368, is now enabled. (Bug #69617, Bug #17033591)-
Partitioning: Queries using the
index_merge
optimization (see Index Merge Optimization) could return invalid results when run against tables that were partitioned byHASH
. (Bug #17588348, Bug #70588)References: See also: Bug #16862316, Bug #17648468, Bug #18167648.
Partitioning: When no partition had returned a row since the last HA_ERR_KEY_NOT_FOUND error, the use of uninitialized memory in the priority queue used for returning rows in sorted order could lead to a crash of the server. (Bug #17401628)
Replication: When the binary log I/O cache grew to exactly 32768 bytes and the current transaction was preceded by a transaction whose size was greater than 32768 bytes, events could be corrupted when written into the binary log. (Bug #17842137)
Replication: Creating and dropping large numbers of temporary tables could lead to increased memory consumption. (Bug #17806014)
Replication: When
log_warnings
is greater than 1, the master prints binary log dump thread information—containing the slave server ID, binary log file name, and binary log position—inmysqld.1.err
. A slave server ID greater than 2 billion was printed with a negative value in such cases. (Bug #17641586, Bug #70685)-
Replication: mysqlbinlog
--verbose
failed when it encountered a corrupt row event in the binary log. Such a row event could also cause the slave to fail. (Bug #17632978)References: See also: Bug #16960133.
-
Replication: mysqlbinlog did not properly decode
DECIMAL
values in a row-based binary log. This could cause invalid values to be printed out forDECIMAL
columns. (Bug #17544169)References: See also: Bug #14309019.
-
Replication:
Seconds_Behind_Master
in the output ofSHOW SLAVE STATUS
could under some conditions be reported as 0 when it should have had a value greater than zero. (Bug #17233214)References: See also: Bug #16579028.
Replication: Invalid event offsets in the binary log were not always handled correctly, which could lead to replication failure. (Bug #16736412, Bug #69087)
Replication: The semisynchronous replication plugin was called twice for a DDL statement, incrementing
Rpl_semi_sync_master_yes_tx
by 2 instead of 1 each time such a statement was executed. (Bug #70410, Bug #17509011)Microsoft Windows: On Windows, the
--local-service
server option did not work, and was not displayed in the--help
message. (Bug #69637, Bug #17049656)-
FORCE INDEX [FOR ORDER BY] (
did not work for joins.index_name
)The fix for this bug also changes the warning created for
EXPLAIN
. Instead of printing only{IGNORE|USE|FORCE} INDEX
it now also printsFOR {GROUP BY|ORDER BY|JOIN}
if that was specified in the query. (Bug #17889511) With the compressed client/server protocol enabled, Performance Schema statement instrumentation could raise an assertion. (Bug #17794846)
An assertion could be raised if a
filesort
failed to resize its main buffer when record properties changed. (Bug #17757914)In some cases,
UNIX_TIMESTAMP()
could returnNULL
when it should return 0. (Bug #17728371)The cache used for the Index Merge access method was freed only after successful retrieval of all rows. Interruption or failure of the operation led to a file descriptor leak. (Bug #17708621)
Using the mysqldump
--set-gtid-purged
option with no value caused mysqldump to crash. (Bug #17650245)A race condition between Performance Schema statement event threads led to a server exit. (Bug #17637970)
-
In a view definition requireing resolution of aggregrate expressions within a subquery to an outer query, selecting from the view could cause a server exit. (Bug #17547804)
References: This issue is a regression of: Bug #16436383.
An addressing error in accessing the join buffer could produce invalid results or a server exit. (Bug #17513341)
mysql_config incorrectly included some flags to generate compiler warning output. (Bug #17400967)
With semijoin optimization enabled, queries with nested subqueries could cause a server exit due to incorrect resolution of references to columns in the middle query block. (Bug #17398972)
In some cases, the optimizer wrote fixed-length temporary
MyISAM
tables to disk rather than variable-length temporary tables. (Bug #17231940)Enabling the
validate_password
plugin could result in incorrect password hashes being stored in themysql.user
table. (Bug #17065383)For accounts authenticated using the
sha256_password
plugin, setting the password after the password had been expired did not clear the password-expired flag. (Bug #16872181)On OS X 10.7, a race condition involving
vio_shutdown()
and the select-based implementation ofvio_io_wait()
could cause a server exit. (Bug #16354789, Bug #17733393)Host names in example URLs used within the source code were replaced by names in the example.com domain, the domain intended by IANA for this purpose. (Bug #15890092)
For
utf8
andutf8mb4
strings, handler functions unnecessarily called a Unicode conversion function. (Bug #14057034)Several
-W
warning flags were turned off for compilation in maintainer mode if MySQL was configured with-DWITH_INNODB_MEMCACHED=1
. (Bug #13898319)Calling the
ExtractValue()
function with an invalid XPath expression could in some cases lead to a failure of the server. (Bug #12428404, Bug #61065)Use of a nonmultibyte algorithm for skipping leading spaces in multibyte strings could cause a server exit. (Bug #12368495, Bug #18315770)
With
ONLY_FULL_GROUP_BY
SQL mode enabled, a query that usesGROUP BY
on a column derived from a subquery in theFROM
clause failed with acolumn isn't in GROUP BY
error, if the query was in a view. (Bug #11923239)mysqldump --single-transaction acquired metadata locks for each dumped table but did not release them until the dump operation finished. Consequently, other DDL operations on a dumped table blocked even after the table itself had been dumped. mysqldump now attempts to release metadata locks earlier. (Bug #71017, Bug #17862905)
sql_resolver.cc
referred to partitioning code that should have been protected by an#ifdef
, even when MySQL was configured with-DWITH_PARTITION_STORAGE_ENGINE=OFF
. (Bug #71010, Bug #17876794)Several issues identified by the Coverity static analysis tool were fixed. Thanks to Honza Horak for the patch. (Bug #70830, Bug #17760511)
The prototype of the Performance Schema instrumentation API
mysql_cond_timedwait()
call was fixed to be drop-in compatible withpthread_cond_timedwait()
. This fix affects only implementors of third-party plugins. (Bug #70628, Bug #17702677)An incorrect result could be returned for a query with an
IF()
predicate in theWHERE
clause combined withOUTER JOIN
in a subquery that is transformed to a semijoin. (A workaround is to disable semijoin usingSET optimizer_switch='semijoin=off';
) (Bug #70608, Bug #17600176)Complex updates of Performance Schema tables involving joins or subqueries failed to update every row. (Bug #70025, Bug #17309657)
Some files in the
file_instances
Performance Schema table were not being removed because the file-removal operation was not instrumented. (Bug #69782, Bug #17209750)For the path specified with the
--basedir
option, mysql_plugin attempted to unlink the path rather than free the memory in which the path was stored. (Bug #69752, Bug #17168602)-
It was not possible to query a view with an
ORDER BY
clause that referenced an alias in theSELECT
clause of the view definition, unless all columns in the view were named in the select list.To handle this problem, the server now writes a view differently into the
.frm
file that stores the view definition. If you experience view-evaluation errors such as just described, drop and recreate the view so that the.frm
file contains the updated view representation. (Bug #69678, Bug #17077305) For the
utf8_bin
collation,ORDER BY LOWER(
could produce incorrect ordering. (Bug #69005, Bug #16691598)col_name
)-
A full-text search combined with derived tables (subqueries in the
FROM
clause) caused a server exit.Now if a full-text operation depends on a derived table, the server produces an error indicating that a full-text search cannot be done on a materialized table. (Bug #68751, Bug #16539903)
COUNT(DISTINCT) sometimes produced an incorrect result when the last read row contained a
NULL
value. (Bug #68749, Bug #16539979, Bug #71028, Bug #17867117)Some scripts displayed out-of-date information regarding where to report bugs. (Bug #68742, Bug #16530527)
Updating a
FEDERATED
table withUPDATE... JOIN
caused a server exit when the local table contained a single row and that row could be joined to a row in theFEDERATED
table. (Bug #68354, Bug #16324629)The
make_atomic_cas_body64
implementation on IA32 with gcc but without gcc builtins could be miscompiled due to an incorrect constraint. The patch also causes MySQL to use builtin atomics when compiled using Clang. (Bug #63451, Bug #17242996)mysql_install_db
referred to the obsolete mysqlbug script for reporting problems. It now refers to http://bugs.mysql.com/ instead. (Bug #29716, Bug #11746921)