This release adds support for Debian 8 and Ubuntu 15.04.
-
The
CREATE USER
statement now supports anIF NOT EXISTS
clause that causes the statement to produce a warning for each named account that already exists, rather than an error. TheALTER USER
andDROP USER
statements now support anIF EXISTS
clause that cause the statements to produce a warning for each named account that does not exist, rather than an error. For details, see CREATE USER Statement, ALTER USER Statement, and DROP USER Statement.These statement variants can be useful in replication scenarios when the set of accounts differs between master and slave. They also permit scripting account-management operations that otherwise would terminate for statement errors. (WL #8540)
-
The maximum length of MySQL user names has been increased from 16 to 32 characters, which provides greater flexibility in choosing the user name part of MySQL account names. The change affects permitted user names in these contexts:
Account-management statements, such as
CREATE USER
,GRANT
,REVOKE
, andSHOW GRANTS
.Statements that support a
DEFINER
clause, such asCREATE PROCEDURE
andCREATE VIEW
.Other statements with clauses that contain user names, such as
CHANGE MASTER TO
andCREATE SERVER
.Columns that store user names in
mysql
system database,INFORMATION_SCHEMA
, and Performance Schema tables have been widened to accommodate 32 characters.
There are no changes in the client/server protocol, which exchanges user names as null-terminated strings. However, third-party programs that use this protocol to communicate may need to be modified if they use or store user names based on the assumption of 16 characters maximum.
The increase in maximum user name length has implications for MySQL administration:
Replication implication: Replication of user names longer than 16 characters to a slave that supports only shorter user names will fail. However, this should occur only when replicating from a newer master to an older slave, which is not a recommended configuration.
Downgrade implication: If a newer server supports any accounts with a user name longer than 16 characters, downgrades to an older version of MySQL that supports only shorter names is not possible.
If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate this change in user name length. (WL #2284)
-
A new client program, mysqlpump, provides an alternative to mysqldump. Its features include:
Parallel processing of databases, and of objects within databases, to speed up the dump process
Better control over which databases and database objects (tables, stored programs, user accounts) to dump
Dumping of user accounts as account-management statements (
CREATE USER
,GRANT
) rather than as inserts into themysql
system databaseCapability of creating compressed output
Progress indicator (the values are estimates)
For dump file reloading, faster secondary index creation for
InnoDB
tables by adding indexes after rows are inserted
For more information, see mysqlpump — A Database Backup Program.
There are some notable differences between mysqlpump and mysqldump:
With no options, mysqlpump dumps everything, whereas mysqldump dumps nothing.
For mysqlpump, the
--routines
and--events
are enabled by default, whereas for mysqldump, they are disabled by default.
(WL #7755)
The minimum version of the Boost library for server builds is now 1.58.0. (Bug #76354, Bug #20721087)
Work was done to clean up the source code base, including: Removing unneeded CMake checks; removing unused macros from source files; reorganizing header files to reduce the number of dependencies and make them more modular, removing function declarations without definitions, replacing locally written functions with equivalent functions from industry-standard libraries.
The default configuration for systemd now sets
LimitNOFILE
to 5000 to increase the number of file descriptors available to the MySQL server. This change applies to Linux systems on which MySQL installation is performed using RPM packages. On such systems, the number of descriptors available is often set by the operating system to 1024. The change causes the number of descriptors to match theopen_files_limit
system variable default value of 5000. To configure a different number of descriptors, setLimitNOFILE
as described at Managing MySQL Server with systemd. (Bug #21073014)The
libmysqld
embedded server took its defaultsecure_file_priv
value from theINSTALL_SECURE_FILE_PRIVDIR
CMake option, but cannot share the same directory with a non-embedded server. The newINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR
option enables a separate directory to be specified forlibmysqld
. The default value isNULL
. (Bug #20770671)
Replication: The status variables
Rpl_semi_sync_master_net_wait_time
andRpl_semi_sync_master_net_avg_wait_time
were always0
in MySQL 5.7.4 and later. These variables are now deprecated and will be removed in a future MySQL version. (Bug #72627, Bug #18750614)
-
JSON: MySQL now supports a native
JSON
data type that enables efficient access to data in JSON (JavaScript Object Notation) documents. TheJSON
data type provides these advantages over storing JSON-format strings in a string column:Along with the
JSON
data type, a set of SQL functions is available to enable operations on JSON values, such as creation, manipulation, and searching. In addition, theCONVERT()
andCAST()
functions can convert values betweenJSON
and other types.For more information, see The JSON Data Type, and JSON Functions. (WL #7909, WL #8132, WL #8249, WL #8539)
The optimizer now is able to use indexes on generated columns, even when queries do not refer to such columns directly by name. The optimizer recognizes query expressions that match definitions of generated columns and uses indexes from those columns as appropriate during query execution. For details, see Optimizer Use of Generated Column Indexes. (WL #8170)
-
The optimizer cost model has a new
memory_block_read_cost
parameter in themysql.engine_cost
table representing the cost of reading an index or data block from an in-memory database buffer.Together with the existing
io_block_read_cost
parameter representing the cost of reading a block from disk, this change enables cost models for data access methods to take into account the costs of reading information from different sources; that is, the cost of reading information from disk versus reading information already in a memory buffer. For the initial implementation, the default value ofmemory_block_read_cost
is the same asio_block_read_cost
. Tuning the values remains as future work, although you can change the values to see how that affects query performance. For more information, see The Optimizer Cost Model.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate this change into the
mysql
system database. (WL #7340) -
The optimizer hint capability introduced in MySQL 5.7.7 has been expanded to subquery execution strategies. Subquery hints affect whether to use semijoin transformations and which semijoin strategies to permit, and, when semijoins are not used, whether to use subquery materialization or
IN
-to-EXISTS
transformations. Examples:SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...; SELECT id, a IN (SELECT /*+ SUBQUERY(MATERIALIZATION) */ a FROM t1) FROM t2; SELECT * FROM t2 WHERE t2.a IN (SELECT /*+ SUBQUERY(INTOEXISTS) */ a FROM t1);
For more information, see Subquery Optimizer Hints.
There is also a new
duplicateweedout
flag for theoptimizer_switch
system variable. This flag enables use ofoptimizer_switch
to specify whether to use the Duplicate Weedout semijoin strategy, which was not previously possible. (WL #8244)
Microsoft Windows: For Windows, the MSI installer package no longer includes debugging binaries/information components (including PDB files). These are available in a separate Zip archive named
mysql-
for 64-bit andVERSION
-winx64-debug-test.zipmysql-
for 32-bit. (Bug #18296012)VERSION
-win32-debug-test.zip
-
Current-event timing now provides more information. Previously, while a wait, stage, statement, or transaction event was executing, the respective tables displayed the event with
TIMER_START
populated, but withTIMER_END
andTIMER_WAIT
asNULL
:events_waits_current events_stages_current events_statements_current events_transactions_current
To make it possible to determine how long a not-yet-completed event has been running, the timer columns now are set as follows:
TIMER_START
is populated (unchanged from previous behavior)TIMER_END
is populated with the current timer valueTIMER_WAIT
is populated with the time elapsed so far (TIMER_END
−TIMER_START
)
To find events that have not yet completed (that is, have no
END_EVENT_ID
) and have taken longer thanN
picoseconds thus far, monitoring applications can use this expression in queries:WHERE END_EVENT_ID IS NULL AND TIMER_WAIT > N
(Bug #75156, Bug #20889406)
-
The Performance Schema incorporates these changes:
The
show_compatibility_56
system variable default value, previouslyON
, has been changed toOFF
. Applications that require 5.6 behavior should set this variable toON
until such time as they have been migrated to the new behavior for system variables and status variables. See Migrating to Performance Schema System and Status Variable TablesWhen the Performance Schema session variable tables produced output, they included no rows for global-only variables and thus did not fully reflect all variable values in effect for the current session. This has been corrected so that each table has a row for each session variable, and a row for each global variable that has no session counterpart. This change applies to the
session_variables
andsession_status
tables.It is no longer required that the
show_compatibility_56
system variable beOFF
for the Performance Schema system variable tables to produce output. The tables now produce output regardless of the variable value. This change applies to theglobal_variables
,session_variables
, andvariables_by_thread
tables.WHERE
clauses forSHOW VARIABLES
andSHOW STATUS
were deprecated in MySQL 5.7.6. This restriction has been lifted so thatWHERE
is supported as before 5.7.6.The
metadata_locks
table now displays tablespace locks. Rows for these locks have anOBJECT_TYPE
value ofTABLESPACE
.-
The Performance Schema logs wait, stage, statement, and transaction events in these history tables:
events_waits_history events_waits_history_long events_stages_history events_stages_history_long events_statements_history events_statements_history_long events_transactions_history events_transactions_history_long
Previously, historical event logging was controlled entirely by enabling or disabling history-related consumers in the
setup_consumers
table. These flags are global to the server, with the result that historical data was collected either for all threads or no threads.The Performance Schema now uses history consumers in conjunction with the
setup_actors
table to make it possible to control collection of historical events per host, user, or account (combination of host and user). This table has a newHISTORY
column that indicates whether to collect historical events (subject also to which history consumers are enabled), and each new foreground thread is matched against rows in the table. If a matching row is found, itsHISTORY
value is recorded in the row for the thread in thethreads
table, which also now has aHISTORY
column.Enabling historical event logging for a given session can be done independent of enabling instrumentation for it. Consequently, you can control more precisely what events are logged in history tables, with these advantages:
A decrease in runtime overhead when historical data is needed only for a subset of the instrumented sessions.
A reduction of noise in the history tables, facilitating troubleshooting on busy servers that generate a large number of events.
For more information, see Pre-Filtering by Thread, The setup_actors Table, and The threads Table.
-
The
threads
table now contains aCONNECTION_TYPE
column that indicates the transport protocol. It can be used to determine how the connection was made. Permitted values areTCP/IP
(TCP/IP connection established without SSL),SSL/TLS
(TCP/IP connection established with SSL),Socket
(Unix socket file connection),Named Pipe
(Windows named pipe connection), andShared Memory
(Windows shared memory connection).Connection-type information is also written to the general query log for new connections, and the audit log interface was revised to incorporate the connection type.
For more information, see The threads Table, The General Query Log, and Writing Audit Plugins.
If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the
performance_schema
database. (WL #7729, WL #7795)References: See also: Bug #76167, Bug #20652173, Bug #20684424, Bug #20811494.
The initial implementation for query rewrite plugins used its own API. This API has been reimplemented to use the audit plugin API. For more information, see Writing Audit Plugins. One effect of the query rewrite plugin reimplementation is reduced overhead. (WL #8505)
MySQL server plugins have access to server “services,” as described in MySQL Plugin Services. MySQL distributions now include plugins that demonstrate how to test plugin service APIs. The
test_framework
plugin is a bare bones plugin that shows the minimum required framework for service testing. Thetest_services
andtest_services_threaded
plugins demonstrate how to test themy_snprintf
andmy_plugin_log_service
services in unthreaded and threaded contexts. For more information, see the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html. (WL #8462)MySQL distributions now include Version Tokens, a feature that enables creation of and synchronization around server tokens that applications can use to prevent accessing incorrect or out-of-date data. Version Tokens is based on a plugin library that implements a
version_tokens
plugin and a set of loadable functions. For more information, see Version Tokens. (WL #6940)-
MySQL distributions now provide a locking interface that implements locks with three attributes: Lock namespace, lock name, and lock mode. The namespace enables different applications to use the same lock names without colliding by creating locks in separate namespaces. Locks can be created with a mode of either read (shared) or write (exclusive).
This locking interface is available at two levels: 1) As a C language interface, callable as a plugin service from server plugins or loadable functions; 2) At the SQL level, as a set of loadable functions that map onto calls to the service routines. For more information, see The Locking Service.
The interface provided by the locking service is distinct from that provided by
GET_LOCK()
and related SQL functions (see Locking Functions). For example,GET_LOCK()
does not implement namespaces and provides only exclusive locks, not distinct read and write locks. (WL #8161) -
These changes were made for the
Rewriter
query rewrite plugin (see The Rewriter Query Rewrite Plugin):There is now a single installation script,
install_rewriter.sql
. Previously, there were two installation scripts,install_rewriter.sql
andinstall_rewriter_with_optional_columns.sql
, which differed in whether they created thepattern_digest
andnormalized_columns
columns of therewrite_rules
table.install_rewriter.sql
now always creates those columns, so there is no need forinstall_rewriter_with_optional_columns.sql
.The
enabled
column of therewrite_rules
table is now defined asENUM('YES,'NO')
rather than asCHAR(1)
. Correspondingly, to enable a rule, set this column toYES
rather thanY
.
To upgrade if you have previously installed the
Rewriter
plugin, uninstall it by running the uninstallation script first, then run the installation script. After reinstalling, load your rewrite rules again (this is necessary because uninstalling drops the rules table). For instructions, see Installing or Uninstalling the Rewriter Query Rewrite Plugin.
MySQL Community Edition RPM packages now invoke mysql_ssl_rsa_setup during installation to create default SSL and RSA key and certificate files. (Bug #20855737)
my_print_defaults now masks passwords. To display passwords in cleartext, use the new
--show
option. In addition, The output for client programs invoked with the--print-defaults
option now masks passwords. (Bug #19953365, Bug #20903330)-
A new system variable,
require_secure_transport
, enables administrators to require all client connections to the server to be made using some form of secure transport. Qualifying connections are TCP/IP connections that use SSL, or connections that use a socket file (on Unix) or shared memory (on Windows). When this variable is enabled, the server rejects nonsecure connection attempts, which fail with anER_SECURE_TRANSPORT_REQUIRED
error.This capability supplements per-account SSL requirements, which take precedence. For example, if an account is defined with
REQUIRE SSL
, enablingrequire_secure_transport
does not make it possible to use the account to connect using a Unix socket file. (WL #7709)
ST_NumInteriorRing()
was added as more a standard-compliant alias ofST_NumInteriorRings()
. (Bug #77598, Bug #21362781)All spatial computations now are done using Boost.Geometry functions. All older non-Boost-based algorithms have been removed. (Bug #77444, Bug #21300713)
Geometry constructor functions that take WKT or WKB values (such as
ST_GeomFromText()
andST_GeomFromWKB()
) did not check for trailing garbage bytes. They now reject trailing nonwhitespace characters and produce an error. (Bug #77244, Bug #21198064)Geometry object constructor functions such as
Point()
andMultiPolygon()
now are stricter about rejecting invalid arguments. (Bug #76337, Bug #20712775)
-
In MySQL 5.7.4, the
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
SQL modes were changed so that they did nothing when named explicitly. Instead, their effects were included in the effects of strict SQL mode (STRICT_ALL_TABLES
orSTRICT_TRANS_TABLES
). The intent was to reduce the number of SQL modes with an effect dependent on strict mode and make them part of strict mode itself.However, the change to make strict mode more strict by including
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
caused some problems. For example, in MySQL 5.6 with strict mode but notNO_ZERO_DATE
enabled,TIMESTAMP
columns can be defined withDEFAULT '0000-00-00 00:00:00'
. In MySQL 5.7.4 with the same mode settings, strict mode includes the effect ofNO_ZERO_DATE
andTIMESTAMP
columns cannot be defined withDEFAULT '0000-00-00 00:00:00'
. This causes replication ofCREATE TABLE
statements from 5.6 to 5.7.4 to fail if they contain suchTIMESTAMP
columns.The long term plan is still to have the three affected modes be included in strict SQL mode and to remove them as explicit modes in a future MySQL version. But to restore compatibility in MySQL 5.7 with MySQL 5.6 strict mode and to provide additional time for affected applications to be modified, the following changes have been made:
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
again have an effect when named explicitly. This reverts a change made in MySQL 5.7.4.ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
are no longer part of strict SQL mode. This reverts a change made in MySQL 5.7.4.ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
are now included in the defaultsql_mode
value, which as a result includes these modes:ONLY_FULL_GROUP_BY
,STRICT_TRANS_TABLES
,NO_ZERO_IN_DATE
,NO_ZERO_DATE
,ERROR_FOR_DIVISION_BY_ZERO
,NO_AUTO_CREATE_USER
, andNO_ENGINE_SUBSTITUTION
.
With the preceding changes, stricter data checking is still enabled by default, but the individual modes can be disabled in environments where it is currently desirable or necessary to do so.
Although
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, andNO_ZERO_IN_DATE
again can be used separately from strict mode, it is intended that they be used together. As a reminder, a warning now occurs if they are enabled without also enabling strict mode or vice versa.References: See also: Bug #75439, Bug #20367829.
-
InnoDB: The adaptive hash index search system is now partitioned, with each index bound to a specific partition, and each partition protected by a separate latch. Partitioning is controlled by the
innodb_adaptive_hash_index_parts
configuration option.Prior to MySQL 5.7.8, the adaptive hash index search system was protected by a single latch (
btr_search_latch
) which could become a point of contention. To reduce contention,innodb_adaptive_hash_index_parts
is set to 8 by default. The maximum setting is 512. (Bug #20985298) InnoDB: The new
innodb_log_checksum_algorithm
option specifies how to generate and verify the checksum stored in redo log disk blocks.innodb_log_checksum_algorithm
supports the same algorithms asinnodb_checksum_algorithm
, which includeinnodb
,crc32
,none
, and their associated strict forms. Previously, only theinnodb
algorithm was supported for redo log disk blocks.innodb_log_checksum_algorithm=innodb
is the default setting. Thanks to Alexey Kopytov for the patch. (Bug #20531208, Bug #75595)InnoDB:
InnoDB
now supports secondary indexes on virtual generated columns. For more information, see Secondary Indexes and Generated Columns. (WL #8149, WL #8227)InnoDB: Internal server-layer functions were added to allow
InnoDB
purge threads to construct and destroy thread handle objects, and to compute virtual generated column index values when a table object is not present. This enhancement was required to support secondary indexes on virtual generated columns. (WL #8481)-
InnoDB: Virtual generated column values no longer occupy space in database rows. With this change, a table rebuild is no longer required when adding or dropping virtual generated columns. Only a system table update is necessary, to register the new metadata.
Virtual generated columns are still represented in
InnoDB
metadata. TheN_COLS
field ofINNODB_SYS_TABLES
still counts virtual generated columns, andINNODB_SYS_COLUMNS
still includes virtual generated column metadata.A new
INFORMATION_SCHEMA
table,INNODB_SYS_VIRTUAL
, provides metadata about columns upon which virtual generated columns are based. (WL #8114) -
InnoDB:
InnoDB
now supports page-level compression for file-per-table tablespaces. Page compression is enabled by specifying theCOMPRESSION
attribute when creating or altering a table. Supported compression algorithms includeZlib
andLZ4
. This feature, which is referred to as transparent page compression, relies on sparse file and hole punching support. It is supported on Windows with NTFS, and a subset of MySQL-supported Linux platforms where the kernel level provides hole punching support.For more information about this feature, see InnoDB Page Compression. (WL #7696)
InnoDB: The new
innodb_flush_sync
configuration option, which is enabled by default, causes theinnodb_io_capacity
setting to be ignored for bursts of I/O activity that occur at checkpoints. To adhere to the limit onInnoDB
background I/O activity defined by theinnodb_io_capacity
setting, disableinnodb_flush_sync
. (WL #7868)InnoDB: The default value for
innodb_purge_threads
andinnodb_page_cleaners
was changed from 1 to 4. If the number of page cleaner threads exceeds the number of buffer pool instances,innodb_page_cleaners
is automatically set to the same value asinnodb_buffer_pool_instances
. (WL #8316)Replication: The behavior of
SET GTID_PURGED
has been changed so that it does not add any GTIDs toPrevious_gtids_log_event
and does not rotate the binary log. Instead the GTIDs are added to themysql.gtid_executed
table. This fix ensures that it is safe in all cases to usebinlog_gtid_simple_recovery=1
for a server using MySQL 5.7.8 or later, where all binary logs were generated by servers using MySQL 5.7.8 or later. (Bug #75767, Bug #20470724)Replication: When using a multithreaded slave, each worker thread has its own queue of transactions to process. In previous MySQL versions,
STOP SLAVE
waited for all workers to process their entire queue. This logic has been changed so thatSTOP SLAVE
first finds the newest transaction that was committed by any worker thread. Then, it waits for all workers to complete transactions older than that. Newer transactions are not processed. The new logic allowsSTOP SLAVE
to complete faster in case some worker queues contain multiple transactions. (Bug #75525, Bug #20369401)Solaris: Solaris tarball and PKG distributions no longer have
-gcc
in the distribution file names. (Bug #21047137)Previously, the
max_digest_length
system variable controlled the maximum digest length for all server functions that computed statement digests. However, whereas the Performance Schema may need to maintain many digest values, other server functions such as query rewrite plugins need only one digest per session. Increasing themax_digest_length
value has little impact on total memory requirements for those functions, but can increase Performance Schema memory requirements significantly. To enable configuring digest length separately for the Performance Schema, its digest length is now controlled by the newperformance_schema_max_digest_length
system variable. (Bug #20963147)The server now prints more descriptive diagnostic messages for bad values of
secure_file_priv
. (Bug #20771331)For attempts to create a multiple-column
SPATIAL
index, the server previously returned an “Incorrect arguments to SPATIAL INDEX” error. Now it returnsER_TOO_MANY_KEY_PARTS
(“Too many key parts specified; max 1 parts allowed”). (Bug #18320371)For tables that contain object information, the Performance Schema now uses lowercase stored program names. (Bug #17818062)
To make the effect of password-change operations more clear, mysql_secure_installation now displays the user whose password is being changed. (Bug #17343687)
The patch number of the C client library is now increased for each patch version of the server. This number has the format
major.minor.patch
. (Bug #77544, Bug #21341481)-
The
max_statement_time
system variable was renamed tomax_execution_time
. TheMax_statement_time_exceeded
,Max_statement_time_set
, andMax_statement_time_set_failed
status variables were renamed toMax_execution_time_exceeded
,Max_execution_time_set
, andMax_execution_time_set_failed
.The
MAX_STATEMENT_TIME
option forSELECT
statements was removed because its functionality is now available using the more general optimizer hint syntax (see Optimizer Hints). Statements that begin like this:SELECT MAX_STATEMENT_TIME = N ...
Should be rewritten to begin like this:
SELECT /*+ MAX_EXECUTION_TIME(N) */ ...
There are some minor implementation differences between the two.
MAX_STATEMENT_TIME
was not permitted in non-top-levelSELECT
statements such as subqueries, or in stored programs, and produced an error.MAX_EXECUTION_TIME
is permitted in those contexts, but is ignored. (Bug #77461, Bug #21306646, Bug #77460, Bug #21306392, Bug #77459, Bug #21306319) GeometryCollection()
with no arguments is now permitted as a way to create an empty geometry. (Bug #77114, Bug #21127270)The shutdown timeout value in /etc/init.d/mysqld was too short for some environments. The value has been increased from 60 seconds to 600 seconds. (Bug #76900, Bug #20987568)
Use of the optimizer cost model was extended to estimating index scan costs within
test_if_cheaper_ordering()
for the I/O cost of accessing table blocks. (Bug #76804, Bug #20947871)For MySQL install operations on OS X from DMG packages, if a random
root
account password is generated, it now is displayed in a dialog box. (Bug #76792, Bug #20930305)mysqldump no longer dumps the
sys
schema by default. It is still possible to dump it by naming it explicitly on the command line (for example, mysqldump --databases sys). (Bug #76735, Bug #20902791)-
For non-TCP/IP connections, these changes were made when
--ssl
was specified to force SSL to be used:For named pipe and shared memory connections, attempts to use SSL now produce an error because these connections use non-network protocols.
For Unix socket file connections, SSL does not add any security. The connection is permitted, but the
mysql
client now produces a warning that SSL does not add anything for this transport protocol.
(Bug #76508, Bug #20785409, Bug #21025587)
mysql_ssl_rsa_setup now has a
--uid=name
option that specifies the owner for any files created by the program (if the program is executed asroot
). (Bug #76369, Bug #20726413)MySQL distributions now include an
innodb_stress
suite of test cases. Thanks to Mark Callaghan for the contribution. (Bug #76347, Bug #20717127)The data type for generated columns now permits the
COLLATE
attribute. (Bug #76329, Bug #20709487)Connections for the
FEDERATED
storage engine now set theprogram_name
session connection attribute tofederated
to permit identification of the connection source. (Bug #68781, Bug #16555730)-
Previously, changes to the
validate_password
plugin dictionary file (named by thevalidate_password_dictionary_file
system variable) while the server was running required a restart for the server to recognize the changes. Nowvalidate_password_dictionary_file
can be set at runtime and assigning a value causes the named file to be read without a restart.In addition, two new status variables are available.
validate_password_dictionary_file_last_parsed
indicates when the dictionary file was last read, andvalidate_password_dictionary_file_words_count
indicates how many words it contains. (Bug #66697, Bug #14588145) The error produced for a
COM_FIELD_LIST
command with too much data was changed fromER_UNKNOWN_COM_ERROR
to the more informativeER_MALFORMED_PACKET
. (Bug #53699, Bug #11761229)-
A new system variable,
disabled_storage_engines
, enables administrators to designate storage engines that cannot be used to create new tables or tablespaces. By default, this variable is empty (no engines disabled), but it can be set to a comma-separated list of one or more engines. Any engine named in the value cannot be used to create tables or tablespaces withCREATE TABLE
orCREATE TABLESPACE
, and cannot be used withALTER TABLE ... ENGINE
orALTER TABLESPACE ... ENGINE
to change the storage engine of existing tables or tablespaces. Attempts to do so result in anER_DISABLED_STORAGE_ENGINE
error.disabled_storage_engines
does not restrict other DDL statements for existing tables, such asCREATE INDEX
,TRUNCATE TABLE
,ANALYZE TABLE
,DROP TABLE
, orDROP TABLESPACE
. This permits a smooth transition so that existing tables or tablespaces that use a disabled engine can be migrated to a permitted engine by means such asALTER TABLE ... ENGINE
. (WL #8594)permitted_engine
-
MySQL distributions no longer include the
sql-bench
directory. TheINSTALL_SQLBENCHDIR
CMake option has also been removed. (WL #8406)References: See also: Bug #21303289.
The default value of the
table_open_cache_instances
system variable has been increased from 1 to 16. (WL #8397)The
read_only
system variable enables the server to be put into read-only mode, in which the server permits client updates only from users who have theSUPER
privilege. A newsuper_read_only
system variable, if enabled, prohibits client updates even from users who haveSUPER
. “Super” read-only mode can be useful for operations such as preparing a server for a move or upgrade because it prevents all client users from modifying data, even administrators. (WL #6799)-
The so-called “fast mutex” code has been removed from the server sources. It provides no measurable benefit, complicates the code, and is problematic for certain architectures such as POWER8. The (undocumented)
WITH_FAST_MUTEXES
CMake option has also been removed. (WL #4601)References: See also: Bug #37703, Bug #11748914, Bug #72806, Bug #18871517, Bug #72807, Bug #18871138, Bug #72805, Bug #18870931.
mysqld_safe no longer uses the data directory as a possible location for setting
MYSQL_HOME
. (This has been deprecated since MySQL 5.0.) (WL #7150)The new
session_track_transaction_info
system variable configures a session tracker that provides information about transaction state and characteristics. This information is intended to enable applications (for example, those that perform load balancing) to know when transactions can be moved from one session to another. From the C API, transaction state information can be obtained by passingSESSION_TRACK_TRANSACTION_CHARACTERISTICS
orSESSION_TRACK_TRANSACTION_STATE
as thetype
argument to themysql_session_track_get_first()
andmysql_session_track_get_next()
functions. For more information, see Server Tracking of Client Session State. (WL #6631)
-
Incompatible Change: The
mysql_parser
plugin service interface defined in theservice_parser.h
header file was incorrect for the case that theMYSQL_DYNAMIC_PLUGIN
macro was defined. The test for this symbol used the wrong name, so the interface did not enable the proper code. The test has been corrected, and some adjustments made to the API for function pointer members within themysql_parser_service_st
structure:Some function pointer names began with
mysql_parser_
, others withmysql_
. For consistency, function pointer member names that began withmysql_parser_
were changed to begin withmysql_
.The missing
mysql_get_statement_digest
function pointer member was added.
These modifications change the service API. Any plugin to be used with this version of MySQL that relies on the service must be recompiled. (Bug #20856729)
Incompatible Change: Internal storage format for
VIRTUAL
generated columns was modified. ForMyISAM
tables with such columns, this is an incompatible change; for upgrades, useALTER TABLE
to drop the columns before the upgrade and add them again after the upgrade. (Bug #77312, Bug #21237637)-
Incompatible Change: For multibyte character sets,
LOAD DATA
could fail to allocate space correctly and ignore input rows as a result.A consequence of this change is that previously accepted invalid character data is now rejected, which can cause issues if you replicate from an older server without this bug fix to a newer server with this bug fix. For example, if an older server that accepts invalid
utf8
character set data replicates to a newer server with this bug fix, the newer server will not accept the data and replication will fail with an “Invalid utf8 character string” error. Solutions for this issue include:Correct the invalid data so that it is correct for the character set
Use a different character set for which the data is not invalid
Upgrade the master to a version that has the bug fix so that master and slave interpret the data the same way
(Bug #76237, Bug #20683959, Bug #23080148)
References: This issue is a regression of: Bug #14653594.
InnoDB; Partitioning: In certain rare cases the optimizer pruned all partitions for an
InnoDB
table but failed to remove the table from consideration as a source for obtaining matches, instead calling for the table to be initialized and prepared for fetching records. This occurred when the active index was not set during initialization. To fix this problem, we now set the active index ID during initialization even if there are no partitions to select from. This behavior also matches the way the same case is already handled in MySQL 5.6. (Bug #21211524)InnoDB; Partitioning: Sorted index reads on partitioned
InnoDB
tables added rows to the prefetch cache, which could cause rows from the wrong partition since the prefetch cache does not support partitioned tables. Now the prefetch cache is disabled in such cases. (Bug #20584754)InnoDB; Partitioning:
ALTER TABLE ADD UNIQUE INDEX
failed when run concurrently with anINSERT
on the same partitionedInnoDB
table. (Bug #20510811, Bug #75834)-
InnoDB; Partitioning: The
CREATE_TIME
column of theINFORMATION_SCHEMA.TABLES
table now shows the correct table creation time for partitionedInnoDB
tables. TheCREATE_TIME
column of theINFORMATION_SCHEMA.PARTITIONS
table now shows the correct partition creation time for a partition of partitionedInnoDB
tables.The
UPDATE_TIME
column of theINFORMATION_SCHEMA.TABLES
table now shows when a partitionedInnoDB
table was last updated by anINSERT
,DELETE
, orUPDATE
. TheUPDATE_TIME
column of theINFORMATION_SCHEMA.PARTITIONS
table now shows when a partition of a partitionedInnoDB
table was last updated. (Bug #69990, Bug #17299181) InnoDB; Microsoft Windows: General tablespaces created on Windows using a relative data file path could not be opened on Unix-like systems.
InnoDB
failed to convert the backslash (“\”) directory separator that is used in the Windows version of the relative data file path. (Bug #20555168)InnoDB; Microsoft Windows: During shutdown on Windows, the listener object in
handle_shutdown()
was freed while the listener was running, resulting in an exception inbuf_pool_from_bpage()
. (Bug #20421223)InnoDB; Microsoft Windows: On Windows, asynchronous I/O requests remained waiting after
InnoDB
initialization was aborted. (Bug #19363615)InnoDB: With
innodb_strict_mode=OFF
, aCREATE TEMPORARY TABLE ... ROW_FORMAT=Compressed TABLESPACE=innodb_file_per_table DATA DIRECTORY ...
statement raised an assertion. TheDATA DIRECTORY
clause is not supported with temporary tables and should be ignored. (Bug #21324507, Bug #77495)InnoDB: The
btr_search_drop_page_hash_index
function dereferenced the adaptive hash index block before acquiring a latch, which could result in a race condition. (Bug #21310520)InnoDB: A regression introduced in MySQL 5.7.2 caused an innochecksum-related memory leak. (Bug #21255718)
InnoDB: The
records_in_range
function returned a constant value for spatial indexes. (Bug #21245805, Bug #77332)InnoDB: In some cases, memory was not properly allocated for
rw_lock_t
instances. (Bug #21242541)-
InnoDB:
SHOW ENGINE INNODB STATUS
no longer reports mutex metrics. Mutex metrics are now reported bySHOW ENGINE INNODB MUTEX
. (Bug #21238953, Bug #77314)References: See also: Bug #21052754, Bug #21266784.
InnoDB: Functionality required to build adaptive hash indexes on field prefixes was reintroduced to improve sequential insert performance. The functionality was removed in MySQL 5.7.2 by the fix for Bug #21198396. (Bug #21198396, Bug #77246)
InnoDB: When defining
buf_block_t
, a lock and a mutex were often accessed in the same vicinity, which could cause unintended cache line sharing. (Bug #21153684)InnoDB: The
ib_cursor_moveto
function did not accept a search tuple with fewer fields than are defined for the index. (Bug #21121197, Bug #77083)InnoDB: The
ib_table_truncate
function failed to release a transaction, resulting in a hang on server shutdown. (Bug #21121164, Bug #77084)InnoDB: The
ib_open_table_by_id
function passed an incorrect argument todict_table_open_on_id
. (Bug #21121084, Bug #77100)InnoDB: On Unix-like platforms,
os_file_create_simple_no_error_handling_func
andos_file_create_func
opened files in different modes wheninnodb_flush_method
was set toO_DIRECT
. (Bug #21113036, Bug #76627)InnoDB: A cascade operation resulted in a duplicate entry error in
FTS_DOC_ID_INDEX
. The same document ID was used by two cascade operations. (Bug #21111301, Bug #77087)InnoDB: Starting the server with an invalid
innodb_data_file_path
setting did not produce a sufficiently informative error message. (Bug #21103446, Bug #77056)InnoDB: A regression introduced in MySQL 5.7.5 caused sorting to be skipped when rebuilding a table after dropping a single-column primary key. (Bug #21103101)
InnoDB: Opening a foreign key-referenced table with
foreign_key_checks
enabled resulted in an error when the table or database name contained special characters. (Bug #21094069, Bug #77043)InnoDB: The
page_zip_verify_checksum
function returned false for a valid compressed page. (Bug #21086723)InnoDB: DDL operations for tablespaces could fail to implicitly commit the current transaction. (Bug #21081898)
InnoDB: The rollback of a partially completed transaction containing more than one update to a spatial index raised an assertion in
row_ins_sec_index_entry_by_modify()
. (Bug #21076238)InnoDB: In the case of a lock conflict, shutdown could hang waiting for asynchronous rollback to finish. (Bug #21075892)
InnoDB: To avoid conflicts with implicitly created file-per-table tablespaces,
CREATE TABLESPACE ... ADD DATAFILE
no longer supports creation of tablespace data files in subdirectories under the MySQL data directory (datadir
). Additionally, the data file path specified in aCREATE TABLESPACE ... ADD DATAFILE
statement must be an existing directory.InnoDB
no longer creates missing directories forCREATE TABLESPACE ... ADD DATAFILE
statements. (Bug #21068487, Bug #77002)-
InnoDB:
SHOW ENGINE INNODB MUTEX
functionality, which was removed in MySQL 5.7.2, was revised and added back. Mutex statistics collection can now be configured dynamically using the following options:-
To enable the collection of mutex statistics, run:
SET GLOBAL innodb_monitor_enable='latch';
-
To reset mutex statistics, run:
SET GLOBAL innodb_monitor_reset='latch';
-
To disable the collection of mutex statistics, run:
SET GLOBAL innodb_monitor_disable='latch';
For more information, see SHOW ENGINE Statement.
Sync debug checking for the
InnoDB
storage engine, previously defined underUNIV_SYNC_DEBUG
, is now defined underUNIV_DEBUG
and is available when debugging support is compiled in using theWITH_DEBUG
CMake option. When debugging support is compiled in,InnoDB
sync debug checking is controlled by theinnodb_sync_debug
configuration option. (Bug #21052754) -
InnoDB: A tablespace opened locally by a truncate routine was not closed in protected mode. (Bug #21046968)
InnoDB: An assertion was raised when truncation logic identified inactive undo tablespaces as candidates for undo log truncation. Some undo tablespaces were left inactive when the number of available undo tablespaces exceeded the number of undo logs. (Bug #21046781)
InnoDB: At startup,
InnoDB
updated theSYS_DATAFILES
internal system table with thespace_id
and path of each system tablespace file even though a record was already present andSYS_DATAFILES.PATH
matched the current value. (Bug #21044191)InnoDB: In Windows debug builds, an
innodb_flush_method
setting ofnormal
orunbuffered
raised an assertion. (Bug #20981684)InnoDB: Transactions could be subjected to rollback while performing DDL operations. The transactions were not marked as DDL transactions, and
TRX_FORCE_ROLLBACK_DISABLE
was not set. (Bug #20979020)InnoDB: An
ALTER TABLE ... IMPORT TABLESPACE
operation on a table with prefix index failed with a schema mismatch error. (Bug #20977779, Bug #76877)InnoDB: Initializing the database with an
innodb_page_size
setting of 64KB and a system tablespace data file size less than 12MB raised an assertion. With anInnoDB
page size of 64KB, the first system tablespace data file (ibdata1
) was not large enough to contain the doublewrite buffer blocks (block1 and block2). To ensure that the doublewrite buffer blocks fit within the first system tablespace data file, a minimum data file size is enforced. Ifinnodb_page_size
is less than or equal to 16KB, the minimum data file size for the first system tablespace data file (ibdata1
) is 3MB. The minimum data file size is 6MB for a 32KB page size, and 12MB for a 64KB page size. (Bug #20972309)InnoDB: Full-text search operations between tables related by a foreign key constraint were not properly cascaded during iterative DML cascading operations. (Bug #20953265, Bug #76817)
InnoDB: In MySQL 5.7.2, 32 of 128 undo logs (rollback segments) were reserved as non-redo undo logs for temporary table transactions. With one of the remaining undo logs always allocated to the system tablespace, 95 undo logs remained available for allocation to the system tablespace or separate undo tablespaces. This change effectively reduced the
innodb_undo_tablespaces
maximum limit to 95. In other words, a limit of 95 available undo logs also limited the maximum number of undo tablespaces to 95. In MySQL 5.7.8, theinnodb_undo_tablespaces
maximum value is officially reduced to 95. (Bug #20938115)InnoDB: A memory leak occurred when a foreign key constraint object was loaded with the parent table while the child table failed to load. The foreign key constraint object should only be loaded with the child table. (Bug #20926253, Bug #21041449)
InnoDB: Debug only code set
m_prebuilt
, which may affect in-placeALTER TABLE
behaviour.m_prebuilt
to should not be used to store an intermediate value in debug-only code. (Bug #20921940, Bug #76774)InnoDB: The definition of the
fil_node_t
data structure was moved fromfil0fil.cc
tofil0fil.h
so that diagnostic code outside that module can access information about files that belong to a tablespace. (Bug #20886222, Bug #76694)InnoDB: Assertion code was revised to avoid compiler warnings that occurred when compiling MySQL on OS X 10.10.2. (Bug #20883256, Bug #76690)
InnoDB: After upgrading to MySQL 5.7.6 or later, restarting the server after truncating a table that was originally created in MySQL 5.7.5 or earlier raised an “incorrect MERGE_THRESHOLD length in SYS_INDEXES” error. A
MERGE_THRESHOLD
column was added to the internalSYS_INDEXES
table in MySQL 5.7.6.SYS_INDEXES
records for tables that were not rebuilt or imported after upgrading did not include the new column. TheTRUNCATE TABLE
operation updated the table'sSYS_INDEXES
records to include the new column but set theMERGE_THRESHOLD
value to NULL. (Bug #20882432)InnoDB: A failure to load a change buffer bitmap page during a concurrent delete tablespace operation caused a server exit. (Bug #20878735)
InnoDB: A shutdown hang occurred when an
innodb_force_recovery
setting of 3 or higher prevented the rollback of transactions that were in anACTIVE
state.ACTIVE
transactions are now placed inXA PREPARE
state in the main-memory data structure to allow shutdown to proceed normally. The transactions are recovered asACTIVE
on the next restart and are rolled back unlessinnodb_force_recovery
is again set to 3 or higher. (Bug #20874411)InnoDB: If a server exit occurred during an
XA ROLLBACK
, the transaction was incorrectly recovered inXA PREPARE
state. As a result, subsequentXA COMMIT
transactions were possible, which would break ACID compliance and potentially cause corruption between indexes of a table. (Bug #20872655, Bug #76672)InnoDB: A
CREATE TABLESPACE
operation raised a Valgrind error due to a memory leak in theos_create_subdirs_if_needed
function. (Bug #20865674)InnoDB: Calls to
buf_page_print()
were removed to avoid fillingmysql-test-run
logs withInnoDB
page dumps. Page dumps related to file I/O are still printed. (Bug #20863042)InnoDB:
CREATE TABLESPACE
failed to move internal tablespace files to a reserved name space that starts with aninnodb_
prefix, permitting internal tablespace files to be dropped. (Bug #20840368, Bug #76603)InnoDB: A
TRUNCATE TABLE
operation on a general tablespace table with a full-text search index raised an assertion. (Bug #20834483)InnoDB: An assertion was raised on shutdown due to XA PREPARE transactions holding explicit locks. (Bug #20816223, Bug #76567)
InnoDB: The
fts_print_doc_id
function printed too much debug information in debug builds.fts_enable_diag_print
is now used instead. (Bug #20811125)InnoDB: After a failed
DROP TABLE
operation, the purge background thread asserted while attempting to access an index page of the table. Purge should not attempt to clean a table that is marked as corrupt. Purge now checks for a corrupt primary index. (Bug #20789078, Bug #75913)InnoDB: A checksum mismatch error on a
crc32
checksum was encountered when restarting the server on a data file copied from a machine with a different endianness. Thecrc32
checksum should be recognized regardless of the native byte order of the system where the checksum was generated. (Bug #20783098, Bug #76375)InnoDB: An
ALTER TABLE ... DROP INDEX
operation on a table with foreign key dependencies raised an assertion. (Bug #20768847)InnoDB: An assertion was raised when
InnoDB
attempted to dereference a NULL foreign key object. (Bug #20762798)InnoDB: An
ALTER TABLE
operation raised an assertion due a regression introduced in MySQL 5.7.6 with the introduction of native partitioning support for general tablespaces. (Bug #20759613)InnoDB: In some instances, functions that call
DBUG_ENTER
did not callDBUG_RETURN
. (Bug #20753620, Bug #76447)InnoDB: A regression of the
trx_is_started
function in MySQL 5.7.6 caused a shutdown hang. (Bug #20744155)InnoDB: The MeCab full-text plugin parser failed to handle an out-of-memory exception. (Bug #20742590)
InnoDB: An assertion was raised during a rollback operation due to a record the was incorrectly undelete-marked. (Bug #20734998)
InnoDB: An assertion was raised in a debug build when an
ALTER TABLE
operation invoked obsolete foreign key code while attempting to create an optimized temporary table as part of an optimizer plan. Temporary tables do not support foreign keys. Invocation of foreign key code is now blocked for optimized temporary tables. (Bug #20730289)InnoDB: An
INSERT
operation raised an assertion. The calculation that determines the number of extents to reserve when storing aBLOB
did account for compressed pages. (Bug #20713559)InnoDB: Missing brackets in the
fsp_flags_is_valid
function could result in a failure to recognize a corrupted data file. (Bug #20671465)InnoDB: A query that used a percentage character '%' as the last character in a query token raised a full-text parser plugin assertion. Full-text parser plugins created using the full-text parser plugin framework now ignore the '%' character if specified as the first or last character in a query token. Using the '%' character as the first character in a query token is not permitted by the internal SQL parser. Using the '%' character as last character in a query token is reserved for prefix matching. (Bug #20668156)
InnoDB: The
INFORMATION_SCHEMA.FILES
table now reports metadata for allInnoDB
tablespace types including file-per-table tablespaces, general tablespaces, the system tablespace, the temporary tablespace, and undo tablespaces, if present. System tablespace and temporary tablespace metadata is no longer reported by theINFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
andINFORMATION_SCHEMA.INNODB_SYS_DATAFILES
tables. However, these tables continue to provide metadata for file-per-table and general tablespaces. (Bug #20660744, Bug #21086257, Bug #77032, Bug #76182, WL #7943)InnoDB: The
InnoDB
full-text search feature with the MeCab parser plugin would print an empty error message. (Bug #20651493, Bug #76164)InnoDB: Importing a tablespace with a full-text index resulted in an assertion when attempting to rebuild the index. (Bug #20637494)
InnoDB: A DML operation raised an assertion in
btr_estimate_n_rows_in_range()
. The assertion code was too strict. (Bug #20618309)InnoDB: Defining a user-created
FTS_DOC_ID
column as a primary key produced incorrect full-text search relevancy rankings. (Bug #20597981)InnoDB: During a table import operation, an
INSERT
failed with a duplicate key error on anAUTO_INCREMENT
column due to an incorrectly initializedAUTO_INCREMENT
value. (Bug #20597821, Bug #76037)InnoDB: After dropping a full-text search index, the hidden
FTS_DOC_ID
andFTS_DOC_ID_INDEX
columns prevented online DDL operations. (Bug #20590013, Bug #76012)InnoDB: An assertion was raised on server startup when
InnoDB
tried to create a temporary file in a nonexistent temporary directory (tmpdir
) while in read-only mode. (Bug #20578834)InnoDB: The
innodb_checksum_algorithm
strict_*
settings (strict_none
,strict_innodb
, andstrict_crc32
) caused the server to halt whenInnoDB
encountered a valid but non-matching checksum. For example, withinnodb_checksum_algorithm=strict_crc32
, a validinnodb
checksum would cause the server to halt. Now, instead of halting the server,InnoDB
only prints an error message. (Bug #20568464)InnoDB: After moving the MySQL data directory and modifying the
datadir
configuration parameter to point to the new location, tables stored in general tablespaces failed to open because the tablespace data file could not be found. To address this problem,CREATE TABLESPACE ... ADD DATAFILE
now creates anisl
file in the MySQL data directory when a general tablespace data file is created outside of the MySQL data directory. Also, thefil_ibd_open
function now searches for general tablespaces in the same way that it searches for file-per-table tablespaces. (Bug #20563954)InnoDB: General tablespaces now support partitioned
InnoDB
tables, and individual partitions and subpartitions can now be assigned to a general tablespace.SHOW CREATE TABLE
output was revised to include quotes around the tablespace identifier. (Bug #20554858, Bug #20588947)InnoDB: An
ALTER TABLE
operation that added a spatial index caused the server to exit. (Bug #20547644)InnoDB: Assertion code which checks for the lowest possible page number for a tablespace did not account for general tablespaces. (Bug #20544581, Bug #20810627)
InnoDB: The
InnoDB
memcached plugin handled unsigned NOT NULL integer columns incorrectly. Thanks to Piotr Jurkiewicz for the patch. (Bug #20535517, Bug #75864)-
InnoDB: The following changes were implemented for full-text index auxiliary tables:
If the primary table is assigned to a general tablespace, full-text auxiliary tables are created in the same general tablespace.
Full-text auxiliary tables are created with the same row format as the primary table.
If the primary table was created in a location outside of the data directory using the
DATA DIRECTORY
clause, full-text auxiliary tables are created in the same location as the primary table.
(Bug #20527217, Bug #75869)
InnoDB: The
memcached
set
command permitted a negative expire time value. Expire time is stored internally as an unsigned integer. A negative value would be converted to a large number and accepted. The maximum expire time value is now restricted toINT_MAX32
to prevent negative expire time values. (Bug #20478242, Bug #75790)-
InnoDB: An interrupted
ALTER TABLE
operation that rendered a child table unavailable caused an error and debug assertion after crash recovery, when theALTER TABLE
operation on the parent table detected that the foreign keys of the parent table could not be loaded. The debug assertion was removed and the error was replaced by a warning. (Bug #20476395)References: This issue is a regression of: Bug #19267051.
InnoDB: In debug builds, enabling the
btr_cur_limit_optimistic_insert_debug
flag raised a deadlock exception in the change buffer clustered index. (Bug #20459905, Bug #75736)InnoDB: A warning message is now printed if
DB_TRX_ID
stored in a record is found to be greater thanmax_trx_id
. In debug builds, an assertion is raised. (Bug #20445525)InnoDB: Estimates for the number of records in a range for a given dataset could differ depending on the page size. (Bug #20427694)
InnoDB:
SHOW ENGINE INNODB STATUS
output showed negative reservation and signal count values due to a counter overflow error. (Bug #20417397)InnoDB: Failure to check the status of a cursor transaction read-only option before reusing the cursor transaction for a write operation resulted in a server exit during a memcached workload. (Bug #20391552)
InnoDB: An assertion was raised in a debug build when populating a spatial index during an
ALTER TABLE
operation. The size of data tuples for compressed rows is calculated in therec_get_converted_size_comp_prefix_low
function. Debug code within the function did not account for the spatial index or theDATA_SYS_CHILD
data type in the node pointers. (Bug #20372749)InnoDB:
CHECK TABLE
returned a “wrong count” error for tables with spatial indexes. (Bug #20313067)InnoDB: MDL locks taken by memcached clients caused a MySQL Enterprise Backup
FLUSH TABLES WITH READ LOCK
operation to hang. (Bug #20275612)InnoDB: An embedded MySQL server failed to start with
innodb_undo_tablespaces=2
. The server was unable to locate undo tablespaces that were created when the MySQL instance was initialized. For embedded MySQL installations, theinnodb_undo_directory
default value of “.
” may not be the same directory as the MySQL data directory. To address this problem,innodb_undo_directory
is now NULL by default, requiring that a path be specified. If a path is not specified, undo tablespaces are created in the MySQL data directory, as defined bydatadir
. A workaround for pre-MySQL 5.7.8 embedded installations is to define an absolute path forinnodb_undo_directory
. (Bug #20023425)InnoDB: A DML operation raised an assertion in file
lock0lock.cc
. A session holding an exclusive row lock on a clustered index page initiated a page reorganization while another session waited for a lock on the same row. The page reorganization changed the lock order, causing an assertion inlock_rec_add_to_queue()
. (Bug #20005279)InnoDB: A
DROP DATABASE
operation raised an assertion. (Bug #19929435)InnoDB:
InnoDB
failed to open a tablespace after the data directory location of the tablespace was changed from a relative path to a full path.InnoDB
failed to recognize that the relative path, which remained embedded in the data dictionary, pointed to the same data file as the full path. (Bug #19896685)InnoDB: A
TRUNCATE TABLE
operation appeared to hang when run in parallel with a read-write workload. (Bug #19873470, Bug #74312)InnoDB: The sorted index build feature introduced in MySQL 5.7.5 caused a performance regression when adding an index to a small table. The regression was due to excessive flushing triggered by a forced checkpoint that occurs after the sorted index build. (Bug #19865673, Bug #74472)
InnoDB: Updates to indexed columns could be slower in MySQL 5.7.5 and higher. In pre-MySQL 5.7.5 releases,
InnoDB
reserves 1/16 of the space in clustered index pages for future inserts and updates. This behaviour changed in MySQL 5.7.5 with the introduction of theinnodb_fill_factor
option. Withinnodb_fill_factor=100
, B-tree index pages were completely filled during sorted index builds, and subsequent updates to index pages resulted in page splitting. To restore pre-MySQL 5.7.5 behavior, the default setting ofinnodb_fill_factor=100
now leaves 1/16 of the space in clustered index pages free for future index growth. (Bug #19821087, Bug #74325)InnoDB: The
ha_innobase::index_flags
function returned invalid flags for spatial indexes. (Bug #19473391)InnoDB: An index record was not found on rollback due to inconsistencies in the
purge_node_t
structure. The inconsistency resulted in warnings and error messages such as “error in sec index entry update”, “unable to purge a record”, and “tried to purge sec index entry not marked for deletion”. (Bug #19138298, Bug #70214, Bug #21126772, Bug #21065746)InnoDB: The
ut_when_dtor
struct, added in MySQL 5.7 to address a Valgrind issue, was removed to reduce code complexity. (Bug #18309926)InnoDB: An
INSERT
operation raised an assertion when the transaction mode was modified after the transaction started. (Bug #15866285)InnoDB: Queries that use both
UNION
andUNION ALL
and disable the index would cause an assertion due to duplicate B-tree values. (Bug #76439, Bug #20752543)InnoDB: In debug builds, attempting to create a spatial index after dropping the
mysql.innodb_table_stats
table raised an assertion in thebtr_cur_open_at_rnd_pos_func
function. (Bug #76437, Bug #20753642)InnoDB: Transaction objects were passed to optimized temporary table APIs, causing an assertion. Optimized temporary tables, which do not support rollback and are not shared across connections, should ignore the transaction objects. (Bug #76415, Bug #20748479)
InnoDB: When
innodb_thread_concurrency=1
, queries on optimized temporary tables caused other sessions to hang. Queries on optimized temporary tables should not increment the number of active threads. (Bug #76346, Bug #20762059)Partitioning: During execution of correlated subqueries, the server reinitialized a scan executed on the same table without ending the previous scan. (Bug #20949314, Bug #76810)
Partitioning:
CREATE TABLE
statements that used an invalid function in a subpartitioning expression did not always fail gracefully as expected. (Bug #20310212)Partitioning: For an ordered index scan over multiple partitions, MySQL performs a merge sort across them using a priority queue whose entries hold pointers to buffers containing fetched rows. When all rows from all partitions are fetched, this queue is now empty. When this occurred, subsequent attempts to fetch rows were done by passing a null buffer pointer, which caused the server to fail. This could manifest itself when executing
HANDLER ... READ ... PREV
against a partitioned table. Now in such cases this pointer holdsNO_CURRENT_PART_ID
so that the partitioning handler is aware that the queue is empty. (Bug #20270687)Partitioning:
REPAIR TABLE ... QUICK
could fail when used with multiple partitioned tables. (Bug #76154, Bug #20647894)Partitioning: In certain cases,
ALTER TABLE ... REBUILD PARTITION
was not handled correctly when executed on a locked table. (Bug #75677, Bug #20437706)Replication: When using multiple replication channels, issuing
RESET SLAVE
on a non-default replication channel removes the channel, whereas issuingRESET SLAVE
on the default replication channel does not remove the channel, as it always exists. In previous versions, this meant that the default replication channel did not correctly reset some configuration and status parameters. The fix ensures that issuingRESET SLAVE
on the default replication channel resets all parameters. (Bug #21107331, Bug #21111229, Bug #77086)Replication: Repeatedly checking for ERR_LOCK_WAIT_TIMEOUT (as done, for example by repeatedly executing
SHOW SLAVE STATUS
) during a prolonged write lock on a table led to an assert. (Bug #21095969)Replication:
SHOW BINLOG EVENTS
was not showing the correct statement forXA COMMIT ... ONE PHASE
. Although the event was logged and replicated correctly,SHOW BINLOG EVENTS
was showing an incorrect statement when handling the event. The fix ensures that the statement is correctly displayed. (Bug #21053526)-
Replication: When changing
gtid_mode
online, ifautocommit
was set to 0 and aset gtid_next=UUID:NUMBER
statement had been issued, then changinggtid_mode
was not being blocked. The fix ensures that variables which can only be set outside transaction context can now only be set if the thread does not own a GTID and does not hold anonymous ownership. This changes the behavior of these variables:(Bug #20865683)
Replication: mysqlbinlog would apply any rewrite rules before applying the database filter. This meant that in cases when statement-based replication transactions were mixed with row-based replication transactions only one or the other type of transaction would be output. The fix changes the behavior so that the rewrite rules also apply to the
USE
db_name
clause, rewriting the database specified bydb_name
according to the setting of the--rewrite-db
parameter. This makes it possible to use the--database
option on the query and row events. In addition, it removes the suppression of theUSE
db_name
statement and ensures that the rewrite is done before the database filter. (Bug #20810442)Replication: Row unpacking did not function correctly in some cases when running the server with
binlog_row_image
set tominimal
. (Bug #20468712)Replication: When slaves, and especially semisynchronous replication slaves, connected to a master there was a chance they could encounter a SLAVE HAS MORE GTIDS THAN THE MASTER HAS error. During connection the slave sends all replicated GTIDs to the master, and the master checks if all the GTIDs matching its
server_uuid
are included in itsgtid_executed
GTID set. There was a chance that a GTID was already in the slave'sgtid_executed
GTID set, but not in the master'sgtid_executed
GTID set. This was due to the GTID being added intogtid_executed
after it was added to the binary log, meaning it was possible that a transaction had been replicated and applied on the slave, but not committed on the master yet. The fix ensures that the master checks if all GTIDs are in the union ofgtid_executed
andgtid_owned
. (Bug #20464737)Replication: A replication slave running with a
gtid_mode
other thanOFF
,log_bin=OFF
andrelay_log_info_repository=TABLE
was consuming the GTID of a transaction prematurely when applying a transaction that spanned across distinct relay log files. This was caused when the slave SQL thread was flushing the relay log information to themysql.slave_relay_log_info
table while in the middle of a transaction, or immediately after the GTID of a transaction, because of the rotation of the relay log. The fix skips saving thegtid_state
for operations that save the relay log information to themysql.slave_relay_log_info
table. (Bug #20451386)Replication: When
gtid_mode=ON
, issuing aSET gtid_next='UUID:NUMBER'
statement and then issuing a statement that caused an error, such asCREATE..SELECT
, led to an assertion failure onCOMMIT
. This was due togtid_next
being incorrectly set to undefined for implicitly committing statements, even if the statement failed with an error before the implicit commit happened. (Bug #20343644, Bug #20444828)Replication: If a slave was restarted with
--relay-log-recovery
enabled and the initialization of the default replication channel had failed, a slave could refuse to start or cause an assert in debug mode. (Bug #20191813, Bug #20236305)Replication: When using
RESET MASTER
, the GTID state (gtid_executed
andgtid_purged
) is reset. On a server withlog_bin=OFF
, usingRESET MASTER
fails because the binary log is not enabled. However, since MySQL 5.7.5, GTIDs can be enabled even when the binary log is disabled. So in this case there was no way to reset the GTID state. The fix ensures thatRESET MASTER
can be executed on a server with GTIDs enabled andlog_bin=OFF
, enabling you to reset the GTID state. (Bug #19706455)Replication: If statement based logging was in use, when updating multiple tables in a single statement, a single transaction could be logged as two different transactions. This was due to the binary logging process not properly identifying statements which were operating over transactional tables. The fix ensures that they are correctly identified, even if such statements do not change the contents of the tables. (Bug #16621582, Bug #21349028)
Replication: When starting more than one instance of mysqld on the same host at the same time, the instances could get the same
server_uuid
. The fix uses settings unique to each started mysqld instance to ensure that each gets a unique UUID. (Bug #16459136)Replication: Some replication thread statuses were not being shown in the
PROCESSLIST_INFO
column of thethreads
table. (Bug #77115, Bug #21127308)Replication: In MySQL 5.7.7 and earlier, GTIDs were automatically disabled whenever
--initialize
or--bootstrap
were enabled. In MySQL 5.7.8 and later GTIDs are not disabled when--initialize
or--bootstrap
are enabled. (Bug #76884, Bug #20980271)Replication: When using mysql-test-run.pl with the
--ps-protocol
option to run a test against a server withlog_bin=OFF
, settinggtid_next
and then executing a DDL statement caused an error. This was due to the DDL statement not being correctly logged to consume the GTID specified when settinggtid_next
. (Bug #76820, Bug #20954452)Replication: When
log_bin=ON
, if a read-only XA transaction was prepared but had an empty body, a subsequentXA ROLLBACK
caused an assertion. (Bug #76734, Bug #20902763)Replication:
explicit_defaults_for_timestamp
has been changed from a global variable to a global and session variable, and the session variable is now replicated. This means that you can change the variable and still be guaranteed that every statement uses the same value for the variable on master and slave, even if the variable is not changed synchronously on master and slave. (Bug #76657, Bug #20866059)Replication: When a slave was stopped,
replication_applier_status_by_worker
showedworker_id
as 1 and did not show the correct number. (Bug #76637, Bug #20857660)Replication: Setting
SESSION.GTID_NEXT=default
immediately after settingSESSION.GTID_NEXT='ANONYMOUS'
causes an ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID error, but this also changes thegtid_next
type fromANONYMOUS
toAUTOMATIC
, meaning that the next transaction could potentially cause an GTID_NEXT->TYPE != AUTOMATIC_GROUP || THD->OWNED_GTID.IS_EMPTY() assertion. To avoid this possibility, the fix ensures that settingSESSION.GTID_NEXT=default
does not change thegtid_next
type if it could cause an error. (Bug #76434, Bug #20753378)Replication: Additional replication channels could not be added if the server had been started with
server_id=0
, the default. The fix ensures that a replication slave checks theserver_id
is greater than 0 whenCHANGE MASTER TO
has been issued before continuing with the initialization of a channel. (Bug #76432, Bug #20753463, Bug #20712720)Replication: When a server was configured with
gtid_mode=ON
,log-bin=OFF
, and withautocommit
enabled, during commit it was possible to encounter an ASSERTION `IS_STARTED()' FAILED error. This was possible when an applier thread committed a transaction's GTID into thegtid_executed
table before transaction prepare when binary logging was disabled, or binary logging was enabled andlog_slave_updates
was disabled. The cause was that when the server was saving a transaction's GTID into thegtid_executed
table, the calculated transaction context could be committed during the save phase whenautocommit
was enabled. The fix ensures that the transaction context is calculated after saving the GTID's state, and then commit is executed on any remaining transactions. (Bug #76425, Bug #20748570)-
Replication: When using row-based logging with
autocommit
disabled andGTID_MODE=OFF_PERMISSIVE
, if a transaction started with aCREATE TEMPORARY TABLE
statement, then regardless of whether the table was transactional or non-transactional, the transaction began an automatic GTID violating transaction. However, ifGTID_NEXT='UUID:NUMBER'
was issued immediately after executing theCREATE TEMPORARY TABLE
statement, which setsgtid_next
type toGTID_GROUP
, upon committing the transaction, a check for possible violation of GTID consistency was causing an assertion failure because the gtid_next type had been changed fromAUTOMATIC_GROUP
toGTID_GROUP
.The fix ensures that transactions with an empty owned GTID correctly check if they break GTID consistency. As part of this fix, it was found that when
autocommit
was disabled, the statementCREATE TEMPORARY TABLE
did not start a transaction, so immediately settingGTID_NEXT='UUID:NUMBER'
could not cause an error. The fix ensures that whenautocommit
is disabled, executingCREATE TEMPORARY TABLE
orDROP TEMPORARY TABLE
starts a transaction, regardless of the state oflog_bin
,binlog_format
and whether a transactional or non-transactional storage engine is in use. This makes the behavior consistent, but is a change in logging whenlog-bin=OFF
. (Bug #76416, Bug #20748502) Replication: When using GTIDs with
log-bin=OFF
, a combination of statements which included aBINLOG
statement executing aFormat_description_log_event
would cause an assertion. The reason was that the server would run the routine to handle the end of a GTID violating transaction, which was incorrect because when--log-bin=OFF
the transaction should not have been handled as an offending transaction. The fix ensures that before the compatibility testing, the state oflog_bin
is checked. Iflog_bin=OFF
, then the compatibility checks are skipped. This makes the server not activate flags that would then trigger the incorrect run of the routine to handle GTID violating transactions that ultimately resulted in an assertion. (Bug #76406, Bug #20743468)Replication: When binary logging was enabled, using stored functions and triggers resulting in a long running procedure that inserted many records caused the memory use to increase rapidly. This was due to memory being allocated per variable. The fix ensures that in such a situation, memory is allocated once and the same memory is reused. (Bug #75879, Bug #20531812)
Replication: If an error occurred when using a multithreaded slave, issuing a
CHANGE MASTER TO
statement which resulted in an ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS error, and then issuingRESET SLAVE
, made it impossible to change master due to repeated ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS errors. Running the debug version of mysqld caused an unexpected exit in this case. The fix ensures that the recovery process for multithreaded slaves avoids this. (Bug #75574, Bug #20411374)Replication: When using semisynchronous replication performance was degrading when the number of threads increased beyond a certain threshold. To improve performance, now only the thread which is committing is responsible for deleting the active transaction node. All other operations do not touch this active transaction list. (Bug #75570, Bug #20574628)
Replication: When
gtid_executed_compression_period
is set to a number greater than 0, there is a thread that wakes up after every number of transactions specified bygtid_executed_compression_period
to perform range compression on themysql.gtid_executed
table. There was a small chance that the thread would miss a signal and not wake up, so that one pass of the compression algorithm would be missed and the table left uncompressed. The fix ensures that the thread wakes up consistently. (Bug #75014, Bug #20104307)Replication: Using mysqlbinlog to process log events greater than 1.6GB failed with an out of memory error. This was caused by an internal error converting the length variable. The fix upgrades the length variable to avoid overflow in both encoding and decoding functions. (Bug #74734, Bug #20350989)
Replication: Setting
gtid_next
inside a stored procedure and committing an empty transaction caused an error. This was due to the empty transaction not being correctly logged to consume the GTID specified by settinggtid_next
. (Bug #74253, Bug #19774317)Replication: Some messages that were meant to be printed when
log_warnings
was greater than 1 started appearing in the error log. The information regarding the multithreaded applier in particular was too verbose and much of this information was very technical and development oriented. The fix ensures that these messages are not logged. (Bug #74203, Bug #19729278)Replication: When using a multithreaded slave with
slave_preserve_commit_order=1
, certain combinations of transactions being applied in parallel could cause a deadlock and stop the slave responding. The fix introduces a check for such deadlocks, so that when a transaction needs to wait for another transaction to release a row lock,InnoDB
checks if there is a deadlock caused by the commit order. If it finds a deadlock caused by the commit order, it sets a deadlock flag for the slave worker which is holding the row lock. Then the worker rolls back its transaction and tries again. (Bug #74177, Bug #20136704)Replication: When
relay_log_recovery
is set, the error log entry that reports the new recovery positions has been extended to also report the old relay log positions. (Bug #74089, Bug #21305976)Replication: When a master with
--binlog_checksum=none
and--gtid-mode=ON
was replicating to a slave with--binlog_checksum=crc32
, restarting the slave's SQL thread caused an Event crc check error. This was due to theFormat_description_log_event
from the master not being correctly found in existing relay logs after restarting the slave's SQL thread. The fix ensures that thePrevious_gtids_log_event
is correctly skipped and that the correctFormat_description_log_event
is found in existing relay logs after restarting the slave's SQL thread. (Bug #73806, Bug #20644100, Bug #76746, Bug #20909880)Replication: When
gtid_mode=on
, GTIDs are automatically added to themysql.gtid_executed
table. If a GTID was manually inserted into themysql.gtid_executed
table and then automatic update inserted the same GTID, the server crashed. Manually inserting GTIDs intomysql.gtid_executed
is an unsupported operation, but this fix ensures that the server does not crash in such a situation. (Bug #73601, Bug #19451053)Replication: When using GTIDs, a multithreaded slave which had
relay_log_recovery=1
and that stopped unexpectedly could encounter a relay-log-recovery cannot be executed when the slave was stopped with an error or killed in MTS mode error upon restart. The fix ensures that the relay log recovery process checks if GTIDs are in use or not. If GTIDs are in use, the multithreaded slave recovery process uses the GTID protocol to fill any unprocessed transactions. (Bug #73397, Bug #19316063)Replication: When
master_info_repository=TABLE
the receiver thread stores received event information in a table. The memory used in the process of updating the table was not being freed correctly and this could lead to an out of memory error. The fix ensures that after an event is flushed to the relay log file by a receiver thread, the memory used is freed. (Bug #72885, Bug #19390463, Bug #69848, Bug #20124342)Replication: When two slaves with the same
server_uuid
were configured to replicate from a single master, the I/O thread of the slaves kept reconnecting and generating new relay log files without new content. In such a situation, the master now generates an error which is sent to the slave. By receiving this error from the master, the slave I/O thread does not try to reconnect, avoiding this problem. (Bug #72581, Bug #18731252)Replication: If a slave encountered a ER_NET_READ_INTERRUPTED or ER_NET_WRITE_INTERRUPTED error while getting a timestamp or server ID from the master, setting
MASTER_HEARTBEAT_PERIOD
and so on, the slave's receiver thread stopped. The fix ensures that these errors are treated as transient network errors, and the slave receiver thread attempts to automatically reconnect to the master in such a situation. (Bug #71374, Bug #18091217)-
Replication: Using mysqlbinlog to replay a relay log which ended with
GTID_LOG_EVENT
could cause the following error:ERROR 1790 (HY000) @@SESSION.GTID_NEXT cannot be changed by a client that owns a GTID. The client owns
UUID:GTID
. Ownership is released on COMMIT or ROLLBACK.If a relay log rotate happens (either through a receiver thread restart or after issuing the
ROTATE
command) exactly after writing aGTID_LOG_EVENT
, when replaying such a relay log's endROTATE_EVENT
, it was mistakenly identified as being inside a transaction, whereas the transaction was actually started afterGTID_LOG_EVENT
. This caused mysqlbinlog to appendSET @@SESSION.GTID_NEXT='AUTOMATIC'
, resulting in twoGTID_NEXT
statements one after the other. The fix ensures that mysqlbinlog generatesSET @@SESSION.GTID_NEXT='AUTOMATIC'
only outside of a transaction and when there has not been a previousGTID_LOG_EVENT
.Similarly, using mysqlbinlog to concatenate and replay a relay log which contained a partial GTID transaction caused the above error. A relay log can contain a partial GTID transaction when
AUTO_POSITION
is enabled if a receiver thread is restarted when it is in the middle of transferring a transaction from a master. On restart the slave retrieves the full transaction again. In this case, the first relay log contains a partial GTID transaction and the second relay log contains the full GTID transaction again. When using mysqlbinlog to concatenate such a relay log, the partial transaction was not being correctly detected and therefore aROLLBACK
was not being correctly generated. The fix identifies partial GTID transactions using the format description event of the second relay log, ensuring that aROLLBACK
is correctly added. (Bug #70711, Bug #17650326) Replication: The replication connection now sends the
program_name
attribute, “mysqld”, in line with the behavior of other client connections. In addition, a_client_role
attribute has been added and is set to “binary_log_listener”, to clarify the replication connection's role, as well as the_client_replication_channel_name
attribute, which is set to the replication channel's name. Similarly, mysqlbinlog now sets_client_role
to “binary_log_listener”. These changes are exposed through thesession_connect_attrs
Performance Schema table. (Bug #68782, Bug #16555723)On platforms where
char
is unsigned, mysql_config_editor could fail to detect failed operations. Affected platforms include ARM and PowerPC. (Bug #21355630)The
Rewriter
plugin linked against themysys
library, which is already linked into the server and thus available at load time when the plugin is installed. (Bug #21255496)Memory leaks found by enabling AddressSanitizer were corrected in mysql, mysqlcheck, mysqldump, mysqlshow, mysqlslap, mysqltest, mysql_client_test, mysql_upgrade, and
mysql_install_db
. (Bug #21246627, Bug #21246842, Bug #21246964, Bug #21247377, Bug #21250562, Bug #21250584, Bug #21250644, Bug #21250876, Bug #21250947, Bug #21253535, Bug #21253653, Bug #21254060, Bug #21255860)Multiple definitions of
key_memory_KEY_CACHE
caused compilation failure when ASAN was enabled. (Bug #21245718)For debug builds, failure of the range optimizer to properly propagate errors occurring during partition pruning could raise an assertion. (Bug #21211492)
A
SET PASSWORD
statement that failed withER_MUST_CHANGE_PASSWORD
could still change thepassword_last_changed
column for a row in themysql.user
table. (Bug #21192879)An optimizer hint assertion could be raised when a table was used in both parts of an
INSERT INTO ... SELECT
statement. (Bug #21192857)The
create_tmp_table()
return value was not checked, which could lead to a server exit. (Bug #21190532)Incorrect cost calculation for the semijoin Duplicate Weedout strategy could result in a server exit. (Bug #21184091)
-
Some Valgrind warnings in
Item_type_holder::join_types()
were spurious and have been silenced. (Bug #21156155)References: This issue is a regression of: Bug #19471564.
The optimizer hint parser could read freed memory. (Bug #21148405)
For debug builds,
VIRTUAL
generated columns could be marked writable during read operations and cause an assertion to be raised for partitioned tables. (Bug #21142905)For debug builds, a missing error test for full-text searches could cause an assertion to be raised. (Bug #21140111)
-
Outer references do not work as arguments to
MATCH()
, but the server did not properly detect them. Now it does and raises an error. (Bug #21140088)References: See also: Bug #20007383.
EXPLAIN
could raise an assertion trying to display very large full-text search rank values. (Bug #21140067)For debug builds, full-text searches could raise an assertion if the optimizer tried to use a covering index when that was not appropriate. (Bug #21140039)
SHOW STATUS
andSHOW VARIABLES
failed to produce output if the server was started with the Performance Schema disabled. (Bug #21139458)ST_Intersection()
could produce areal and point intersection results, but was not able to produce linear intersection results. (Bug #21109896)ALTER TABLE
statements that defined a generated column usingMATCH ... AGAINST
in its expression could raise an assertion. (Bug #21098119)The server could raise an assertion or produce an incorrect error message for inserts into a view if a single table for insertion could not be identified. (Bug #21097485)
open_files_limit
could be set higher than permitted by the operating system. (Bug #21074643)systemd timeout logic could be triggered if
InnoDB
log rebuilding or recovery took too long. Because the time this may take is unknown, systemd timeout during service start or stop is now disabled. (Bug #21071740)Comparisons of table names in optimizer hints did not respect the value of the
lower_case_table_names
system variable. (Bug #21056644)CMake configuration was adjusted to disable unnecessary warnings reported by Clang and display them only if
-DMYSQL_MAINTAINER_MODE=1
is used. (Bug #21041451)Multiple executions of a prepared
SET
statement that used a subquery could result in a server exit. (Bug #20982756)With
auto_generate_certs
enabled, the server automatically created SSL files if any ofca.pem
,server-cert.pem
, andserver-key.pem
were missing from the data directory. Now it creates the files only if all of them are missing (the same test used by mysql_ssl_rsa_setup). (Bug #20963082)The server compiled with Performance Schema support could not be started with
performance_schema=OFF
due to a dependency on it for thesys
schema, which expected to find Performance Schema tables. The Performance Schema now creates its tables during startup even if disabled. (Bug #20956599)For
CREATE TABLE ... SELECT
, it was possible to assign values to generated columns in the destination table. (Bug #20949226)The server could exit when the Performance Schema read thread status variables under load. (Bug #20927157, Bug #20922218, Bug #21103103)
CMake support was adjusted for the change of the
-Wno-unused-local-typedefs
option to-Wno-unused-local-typedef
in Clang 3.6. (Bug #20921370)For debug builds,
XA PREPARE
raised an assertion if a transaction contained at least one update and none wereInnoDB
updates. (Bug #20920851)Using
ST_Centroid()
with a geometry collection containing an invalid polygon could cause a server exit. (Bug #20918881)For small values of the
read_rnd_buffer_size
system variable, internal caching of temporary results could fail and cause query execution failure. (Bug #20895852)Invalid memory pointer access could occur during access to the
events_statements_history
Performance Schema table, resulting in a server exit. (Bug #20878306)For debug builds, passing
EXPORT_SET()
toVALIDATE_PASSWORD_STRENGTH()
could raise an assertion. (Bug #20863229)A failed
FLUSH PRIVILEGES
statement followed by statements to create or drop accounts could cause a server exit. (Bug #20857652)Large values of the
points_per_circle
argument to theST_Buffer_Strategy()
function could cause large amounts of memory to be used. To avoid inadvertent excessive memory use, the maximum value of this argument is now constrained to be the value of the newmax_points_in_geometry
system variable. This variable has default, minimum, and maximum values of 65,536, 3, and 1,048,576, respectively. (Bug #20842030, Bug #21212788)For certain inputs,
ST_Buffer()
could raise an assertion. (Bug #20841874)-
An assertion could be raised if the server used a string column as the key of a temporary table. (Bug #20835095)
References: This issue is a regression of: Bug #19695490.
SHOW VARIABLES
mutexes were being locked twice, resulting in a server exit. (Bug #20788853)ull2dec()
was modified to avoid a problem with GCC 5 in optimized mode. (Bug #20768820)Using GCC 5, debug builds failed due to compiler warnings. (Bug #20768717)
DDL operations on a server configured with
InnoDB
as read only caused a server exit due to invalid memory access during error reporting. (Bug #20763179)ALTER TABLE
could fail to prevent subqueries in the definition of generated columns, resulting in a server exit. (Bug #20757211)Invalid use of the
THD
structure with generated columns could cause an assertion to be raised. (Bug #20746926)Parser state was initialized incorrectly for parsing generated column expressions. (Bug #20745142)
For large values of
max_digest_length
, the Performance Schema could encounter an overflow error when computing memory requirements, resulting in a server exit. (Bug #20738072)Columns specified through
JOIN ... USING
orNATURAL JOIN
that were resolved from a derived table could raise an assertion. (Bug #20733540)-
MySQL 5.7.6 restricted the list of symbols exported by the C client library. One of these was
mysql_get_parameters
, but that is used by the DBD::mysql Perl module.mysql_get_parameters
is now exported. (Bug #20686665)References: See also: Bug #18427840, Bug #20476596, Bug #20821550.
Cleanup after a
MATCH()
operation could write to freed memory. (Bug #20685427)NDB
could raise an assertion for failure to get the tablespace name when attempting to acquire a metadata lock. (Bug #20676000)mysqlslap and
mysql_client_test
failed to use an SSL connection by default. (Bug #20654023)The Spencer
regex
library used for theREGEXP
operator could be subject to heap overflow in some circumstances. (Bug #20642505)A missing error check after a call to
find_field_in_tables()
within the optimizer could cause an assertion to be raised. (Bug #20615597)Optimization of
x IN (SELECT y FROM DUAL WHERE ...)
was treated the same asx IN (SELECT y FROM DUAL)
, losing theWHERE
clause and resulting in a server exit. (Bug #20615023)A buffer-overflow error could occur for mysqlslap during option parsing. (Bug #20605441)
For debug builds,
DROP DATABASE
raised an assertion if there were non-database files in the database directory. (Bug #20573701)For
CREATE TABLE ... SELECT
, an error occurred if a selected column was a generated column that depended on a nonselected column. To handle this, the destination table does not preserve information about whether selected columns are generated columns. (Bug #20566243)A user with an expired password could execute
ALTER USER
statements other than to assign a new password. (Bug #20553132)An OpenSSL error queue associated with each thread was not freed on thread release, resulting in a Valgrind error. (Bug #20551271)
The property of whether a view is updatable was calculated when it was created. If the view referred to another view that was dropped and recreated and the new definition of the referenced view had different updatability than the original definition, that could affect the updatability of the referring view. Not taking into account this change in updatability could cause an assertion to be raised. To avoid this problem, the server now assesses updatability when reading a view definition rather than at view creation time. (Bug #20515155)
Built-in SQL functions could raise an assertion or cause a server exit if the wrong thread pointer was used to produce an error or warning message. (Bug #20454979)
-
Incorrect calculation of the length of strings written to the binary log could raise an assertion or cause a server exit. (Bug #20444737)
References: This issue is a regression of: Bug #16066637.
The range optimizer interpreted a hidden key part (
InnoDB
primary key) as a minimum bounding rectangle (MBR) index. Such primary keys cannot be used as MBRs, and a server exit resulted.. (Bug #20430526)The
WITH CHECK OPTION
of a view was sometimes ignored if the view was included in another view. For discussion of the implications of this fix, see The View WITH CHECK OPTION Clause. (Bug #20407961)Calculation of “within” or “contains” relationships failed for some types of geometry collections. (Bug #20379981)
Long path name values for some options could lead to stack overflow. (Bug #20376760)
-
Setting the password for an account not using a built-in authentication plugin could cause the account to become unusable.
The fix for this problem involves a change to the authentication plugin API to add a new authentication_flags member to the server-side plugin descriptor. See Writing the Server-Side Authentication Plugin (Bug #20364862)
Spatial WKT export functions produced too-long string representations of coordinate values instead of switching to exponential notation. (Bug #20363531)
An off-by-one error in string-copying code could result in a buffer overflow. (Bug #20359808)
The
events_waits_summary_by_instance
Performance Schema table could fail to return rows for socket instruments. (Bug #20348824)Under certain conditions, the
libedit
command-line library could write outside an array boundary and cause a client program crash. (Bug #20318154)Invalid linestring values with a single point and unclosed polygons with fewer than four points could cause a server exit. Such invalid values now are rejected. (Bug #20316779)
mysql_config_editor could exit abnormally while encrypting passwords. (Bug #20294225)
A corrupt
mylogin.cnf
file could cause client programs to exit abnormally. (Bug #20294148)A deadlock error reported by InnoDB could cause rollback inside InnoDB while the transaction continued at the SQL layer. (Bug #20262654)
MySQL sometimes produced no warning when it was unable to interpret a character in a given character set. (Bug #20238729)
Host value matching for the grant tables could fail to use the most specific of values that contained wildcard characters. (Bug #20181776)
For MySQL distributions linked against yaSSL, a corrupt client key file could cause clients to exit. (Bug #20168526)
-
Use of
SELECT COUNT(DISTINCT)
in a subquery in theFROM
clause could produce incorrect results. (Bug #20145024)References: This issue is a regression of: Bug #18766378.
For join queries with a large number of tables, the server could exit converting the join to a semijoin. (Bug #20109861)
ALTER TABLE
operations that changed only an index comment were not being treated as a fast/in-place alteration. (Bug #20106553)Following execution of a
GRANT ... WITH GRANT OPTION
statement, execution of a prepared statement with a view could cause a server exit. (Bug #20030284)ADDTIME()
could produce an out-of-range result with a year >= 10,000. (Bug #19900900)Within a stored procedure, access to view columns after DDL or
FLUSH TABLES
statements in the procedure could cause a server exit. (Bug #19897405)References to select list columns of the outer query from the
HAVING
clause of a correlated subquery in the inner query should, but did not, return an error, resulting in a server exit. (Bug #19823076)-
Several
ST_Envelope()
problems were corrected:If the mimimum bounding rectangle (MBR) of a geometry degrades to a
Point
or horizontal or verticalLineString
,ST_Envelope()
returns that value rather than an invalid polygon.The return value for an empty geometry collection now is an empty geometry rather than
NULL
.If a geometry is geometrically invalid but has a valid WKB string, return a valid MBR rather than
NULL
.
(Bug #19811953, Bug #20196720)
For debug builds, an assertion could be raised when a top-level query had a
HAVING
clause that contained a subquery referencing a column from the top-level query. (Bug #19811896)GROUP BY
orORDER BY
on aCHAR(0) NOT NULL
column could lead to a server exit. (Bug #19660891)The server could exit if a grouped query had a nongrouped subquery that contained a reference to an aggregate function. (Bug #19585938)
Loading corrupt spatial data into a
MyISAM
table could cause the server to exit during index building. (Bug #19573096)Some spatial functions converted -0 to 0. This no longer occurs. (Bug #19504183)
For debug builds, certain
UPDATE
statements could raise an assertion. (Bug #19055268)The LooseScan execution strategy for semijoins failed to evaluate the
WHERE
condition on rows coming from the first inner table of an outer join. (Bug #18892055)An internal procedure that creates temporary tables and expected a flat list of expressions to map onto table columns sometimes received a list that was not flat, causing an assertion to be raised. (Bug #18745214)
For
MyISAM
orMEMORY
tables, a nested join with a subquery could product a result set with missing rows when theoptimizer_switch
condition_fanout_filter
flag was enabled. (Bug #18717059)For some status variables that should monotonically increase,
SHOW GLOBAL STATUS
in one session could show them as decreasing when other concurrent sessions changed user or disconnected. (Bug #18591145)On Windows, setting
query_cache_min_res_unit
to too large a value could result in a value of 0 and a subsequent server exit. (Bug #18487951)For debug builds,
SET
statements that assigned a subquery value to a variable could raise an assertion due to improper cleanup related toGROUP BY
orORDER BY
clauses. (Bug #18486509)The
validate_password
plugin was not installed by RPM packages for platforms using systemd or SysV-style initialization scripts. (Bug #18438833)Some queries involving spatial relation checks would produce correct results for
MyISAM
tables but notInnoDB
tables. (Bug #18422162)Deleting rows from an empty
MyISAM
table with a spatial index resulted in a spurious error message about a corrupt index. (Bug #18412756)Boolean full-text searches for
MyISAM
tables could fail. (Bug #18279587)A client that attempted to establish SSL connections from a large number of threads simultaneously could exit with a segmentation fault. (Bug #18052165)
Deletes from
CSV
tables could cause a server exit. (Bug #17902624)For
HANDLER
read statements that scanned a spatial index, type conversion errors of values read from the index could cause a server exit. (Bug #17846865)A query with an
IN
subquery where the left-hand side was a scalar subquery might cause a server exit. (Bug #17832047)-
The server could exit under conditions when a query contained the following construct but produced an empty result:
literal-valued row constructor <=> (subquery containing UNION)
(Bug #17668844)
If ownership of memory allocation was transferred between threads, Performance Schema memory instrumentation could report memory use of the threads incorrectly. (Bug #17473077)
For debug builds, statements including table-less subqueries could raise an assertion when executed within scheduled events. (Bug #17435114)
The
--help
message displayed by mysql_secure_installation did not show options related to option-file processing, such as--defaults-file
. (Bug #17339009)Memory usage values in the
memory_summary_global_by_event_name
Performance Schema table could be negative. (Bug #17243619)For debug builds, an assertion could be raised in character-set conversion code due to an overly strict condition. (Bug #13740934)
An event scheduler thread could be freed improperly, potentially leading to a server exit. (Bug #77593, Bug #21145277, Bug #21053167)
mysql-systemd-start failed if
datadir
was set in/etc/my.cnf
. (Bug #77357, Bug #21262883)The unused and unmaintained
BUILD/build_mccge.sh
script has been removed from the source tree. (Bug #77336, Bug #21246941)ST_IsValid()
could return false for some validMultiPolygon
arguments. (Bug #77317, Bug #21238969)ST_Buffer()
with aLineString
argument could produce aPolygon
that self-intersected. (Bug #77316, Bug #21238614)Compilation failed when building MySQL without the Performance Schema. (Bug #77292, Bug #21229433)
Updating the
setup_consumers
table to set history or long-history consumers had no affect on historical event logging for existing threads. (Bug #77278, Bug #21223458)SHOW GLOBAL STATUS
Com_
counters did not reflectxxx
SELECT
statements. (Bug #77231, Bug #21186946)The outdated and not-maintained
plugin/daemon_example/ChangeLog
file was removed. (Bug #77188, Bug #21168681)ST_ConvexHull()
could return incorrect results forMultiLineString
arguments. (Bug #77167, Bug #21153716)Executing a prepared
EXPLAIN
statement could cause the server to hang. (Bug #77144, Bug #21139522)If the server was started with the
ssl_cipher
system variable set, autogeneration and autodetection of SSL certificates did not work. (Bug #77078, Bug #21108296)Optimizer hint query block names are identifiers, but the parser did not recognize valid identifer names such as
123a
when used in@
syntax. (Bug #77047, Bug #21095608)query_block_name
-
For mysqldump, the
-T
option is supposed to be the short form of the--tab
option, but was mistakenly associated with--debug-info
instead. (Bug #77037, Bug #21088793)References: This issue is a regression of: Bug #66854.
SSL certificates autogenerated by the server could have CN values that exceeded 64 characters. In that case, the server now omits the
_
part of the CN values so the length falls within 64 characters. (Bug #77036, Bug #21087159)server_version
The Common Name value written by
mysql_ssl_rsa_setup
to theclient-cert.pem
client certificate file wasMySQL_Server_
rather thansuffix
_Auto_Generated_Server_CertificateMySQL_Server_
. (Bug #77035, Bug #21087116)suffix
_Auto_Generated_Client_CertificateDeallocation of Debug Sync structures within the
InnoDB
handlerton close connection method could raise an assertion. (Bug #77005, Bug #21069721)Queries on a geometry column returned an error instead of a result if there existed a
UNIQUE
index on the column. (Bug #77000, Bug #21067378)An assertion could be raised if a multiple-table
UPDATE
of a view, where the same column was used in theSET
andJOIN
clauses, was used as a prepared statement. (Bug #76962, Bug #21045724)With row-based binary logging, automatic dropping of a scheduled event that had reached the end of its lifetime could raise an assertion. (Bug #76958, Bug #21041908)
If a single-table subquery had identical
GROUP BY
andORDER BY
clauses on aUNIQUE NOT NULL
column, the results could be incorrectly ordered. (Bug #76947, Bug #21038929)The
PARSE_GCOL_EXPR
keyword used internally by the parser was treated as a reserved word and thus could not be used as an identifier without quoting it. (Bug #76943, Bug #21035515)When the directory specified for the
secure_file_priv
system variable did not exist, the server produced a Failed to normalize the argument error message. It now produces a message indicating that the directory did not exist. The same problem occurred for the--datadir
option to mysql_ssl_rsa_setup and was fixed the same way. (Bug #76918, Bug #21021894)For logging to the binary log, the server could rewrite
CREATE USER
andALTER USER
statements, adding anACCOUNT UNLOCK
clause not present in the original statement. This could unlock locked accounts and cause differences between master and slave servers. The clause is no longer written unless present in the original statement. (Bug #76911, Bug #20996273)The
INDEX_NAME
column of the Performance Schematable_io_waits_summary_by_index_usage
table could sometimes show incorrect index names for tables until they had been in use for some time. (Bug #76882, Bug #20980217)Compilation could fail in the query rewrite plugin code for some CMake options. (Bug #76800, Bug #20937654)
-
DO
statements containing multiple expressions could result in a memory leak.A consequence of the bug fix is that
DO
statement errors previously converted to warnings now are returned as errors. (Bug #76779, Bug #20924241, Bug #17479887) Previously, SSL files created automatically by the server were valid for one year. The validity period has been extended to ten years (the same as SSL files created by mysql_ssl_rsa_setup). (Bug #76778, Bug #20923066)
mysql_upgrade failed if the
show_compatibility_56
system variable was enabled. (Bug #76757, Bug #20914786)Unaligned memory access could cause spatial operations to fail. (Bug #76748, Bug #20911624)
Identifiers in normalized statements were sometimes quoted and sometimes not, an inconsistency that caused matching failure for statement digests and digest texts. This caused problems for Performance Schema aggregation by digest. Identifiers now are quoted consistently. (Bug #76723, Bug #20896539)
Ubuntu packages were missing dependencies for killall and psmisc. (Bug #76716, Bug #20893836)
SHOW GLOBAL VARIABLES
and selecting from theINFORMATION_SCHEMA
GLOBAL_VARIABLES
table resulted in a spurious warning about thesql_log_bin
system variable. (Bug #76626, Bug #20854952)mysqld --help --verbose was slow if the
InnoDB
buffer pool was configured to a large size. Now with those options, buffer pool allocation is not performed. (Bug #76625, Bug #20856397)An assertion could be raised for queries with a
GROUP BY
clause and a table for which the optimizer identified multiple candidate indexes. (Bug #76576, Bug #20819199)CREATE USER
events written to the binary log included the newACCOUNT
syntax even withlog_backward_compatible_user_definitions
enabled. (Bug #76560, Bug #20814051)-
The server rejected empty
COM_SHUTDOWN
packets. (Bug #76552, Bug #20810928)References: This issue is a regression of: Bug #14525642.
For some startup errors, the server could call
exit()
before shutting down plugins and thus failed to invoke theiratexit()
handlers. (Bug #76532, Bug #20798617)In
sql/handler.h
,HA_ATTACHABLE_TRX_COMPATIABLE
andHA_GENERATED_COLUMNS
were defined with the same value. (Bug #76503, Bug #20783191)mysqlimport --use-threads did not actually use multiple threads. (Bug #76480, Bug #20772273)
The mutex used for the optimizer cost model cost-constant cache was not instrumented by the Performance Schema. This instrument is now available as
wait/synch/mutex/sql/Cost_constant_cache::LOCK_cost_const
. (Bug #76460, Bug #20755430)-
These statement-timeout problems were corrected:
An assertion could be raised with
max_statement_time
set greater than zero and multiple concurrent sessions executing certainEXPLAIN
statements.The error message indicating that statement execution was interrupted referred to the
max_statement_time
system variable, even if the relevant timeout was a per-statement value. The error message is now more generic.It was not possible to set the
max_statement_time
system variable at server startup.Setting
max_statement_time
to set a statement timeout could cause memory leaks or assertion failures on Windows.Attempting to kill statements that use attachable transactions caused subsequent statements to function improperly, resulting in assertion failures. A
max_statement_time
timeout on such statements could produce a similar outcome.
NoteSubsequent to these changes, the
max_statement_time
system variable was renamed tomax_execution_time
.(Bug #76446, Bug #20788811, Bug #76915, Bug #21021670, Bug #76916, Bug #21021754, Bug #20705648, Bug #20705642, Bug #75782, Bug #20507804)
References: See also: Bug #77461, Bug #21306646.
Attempts to create a foreign key matching a
FULLTEXT
index failed. For debug builds, attempts to create a foreign key matching aSPATIAL
index raised an assertion. (Bug #76445, Bug #20752436)The
ORDER BY
clause of a derived table was appended to anINSERT
statement, but ordering for a table being inserted into is irrelevant and caused a server exit. (Bug #76436, Bug #20753569)A failing
ALTER TABLE
tablespace operation (DISCARD TABLESPACE
orIMPORT TABLESPACE
could produce an incorrect internal tablespace state, causing a succeeding statement to fail. (Bug #76424, Bug #20748660)Enabling the
sql_buffer_result
system variable could cause a server exit for multiple-tableUPDATE
statements. (Bug #76419, Bug #20748537)The value of
secure_file_priv
displayed asNULL
for both--secure_file_priv=NULL
(correct) and--secure_file_priv=""
(incorrect). (Bug #76401, Bug #20741572)A
Provides
rule in RPM.spec
files misspelled “mysql-embedded” as “mysql-emdedded”. (Bug #76385, Bug #20734434)Compiling using Clang 3.5 or higher with AddressSanitizer (ASAN) enabled caused the
gen_lex_hash
utility to abort on Clang LeakSanitizer memory leak check failures. (Bug #76351, Bug #20720615, Bug #22558597, Bug #80014)SHOW CREATE TABLE
did not correctly display generated columns that had a character set defined. (Bug #76328, Bug #20709462)The
Com_stmt_reprepare
status variable was missing from theglobal_status
andsession_status
Performance Schema tables. (Bug #76305, Bug #20697446)Attempts to establish SSL connections to a Community Edition server failed if the client had a password and the server did not have the general query log enabled. (Bug #76286, Bug #20693153)
Prepared statement execution statistics were not correctly tracked in the
prepared_statements_instances
Performance Schema table. (Bug #76284, Bug #20692556)Some server warnings referred to the now-deprecated mysql_install_db command. (Bug #76251, Bug #20681412)
Compilation could fail due to a missing dependency on
lex_token.h
forsql_yacc.cc.o
. (Bug #76235, Bug #20678411, Bug #27470071, Bug #89482)EXPLAIN
for a query containing an uncorrelated subquery could attempt to materialize the subquery twice, raising an assertion. (Bug #76205, Bug #20665051)Debian and Ubuntu package installers neglected to run mysql_ssl_rsa_setup during installation. (Bug #76163, Bug #20650118)
Global status variables related to SSL certificate metadata were available only within sessions established using SSL. (Bug #76157, Bug #20648276)
The
mysql_real_escape_string_quote()
C API function failed to escape backtick (`
) characters when theNO_BACKSLASH_ESCAPES
SQL mode was disabled. (Bug #76146, Bug #20645725)The message displayed to indicate that a password was expired and must be reset referred to the deprecated
SET PASSWORD
statement. It now refers toALTER USER
. (Bug #76053, Bug #20602572)ALTER USER
statements that named an authentication plugin did not check whether the plugin is valid. (Bug #76052, Bug #20602525)If a proxy user expired the password of the proxied user, the current proxy user session was affected (the server considered its password expired). To execute SQL statements again, it was necessary for the proxy user to disconnect and reconnect again. (Bug #76043, Bug #20599280)
mysqld --help --verbose tried to perform actions that have nothing to do with displaying a help message: Locking files, initializing system files, and checking for a
plugin
table. (Bug #75995, Bug #20581228)For a
SET = (
statement within a stored procedure, the server could exit if a subquery transformation was performed. (Bug #75994, Bug #20583321)subquery
)Code for reading and writing the grant tables assumed that these were
MyISAM
tables and did not handle errors that can be thrown if the tables are handled by a different storage engine. (Bug #75955, Bug #20561087)-
Several spatial function issues were resolved by use of Boost.Geometry for GIS algorithms:
ST_Centroid()
with aMultiPolygon
argument could produce incorrect results.Multiple calls to
ST_Intersection()
could return inconsistent results for some arguments.ST_Within()
andST_Touches()
could return incorrect results for some arguments.
(Bug #75829, Bug #20508769, Bug #69425, Bug #19270344, Bug #69538, Bug #19270334)
Nonoptimal cost estimates for key lookups could cause some queries to be executed with a table scan rather than key lookups. (Bug #75695, Bug #20443863)
Operations on a string exceeding
max_allowed_packet
bytes could returnNULL
and incorrectly replace an existing value inUPDATE
statements withNULL
rather than failing. (Bug #75539, Bug #20376498)The MeCab full-text parser plugin was omitted from RPM and Debian packages. (Bug #75429, Bug #20315007)
EXPLAIN
forINSERT ... SELECT
statements into a multiple-table view always displayed the first table of the view as the table being inserted into, even if it was not. (Bug #75424, Bug #20310257)The parser could dereference a null pointer after an out-of-memory error. (Bug #75372, Bug #20294206)
Some queries could return different results depending on whether the
semijoin
flag of theoptimizer_switch
system variable was enabled or disabled. (Bug #75270, Bug #20239912)With a small thread stack, queries with many expressions could produce a thread stack overrun error. (Bug #74985, Bug #20087571)
On platforms where the
char
is unsigned, the server was unable to parse collation definitions that included non-7-bit ASCII characters. Affected platforms include ARM and PowerPC. Thanks to Alexey Kopytov for the patch. (Bug #74891, Bug #20928289, Bug #21682439)If the server was started with the
explicit_defaults_for_timestamp
system variable enabled,CREATE TABLE
statements that defined a column asTIMESTAMP NOT NULL
failed. (Bug #74529, Bug #19881933)In the
threads
Performance Schema table, thePROCESSLIST_STATE
andPROCESSLIST_INFO
values did not change for thethread/sql/main
main thread instrument as the thread state changed. (Bug #74517, Bug #19887143)On OS X 10.10 (Yosemite), mysqld failed to start automatically. The startup item has been replaced with a launchd job, which enables the preference pane check box for automatic startup to work again. (Bug #74434, Bug #19858350)
Specifying a bad
init_file
system variable value could cause the server to hang at startup. (Bug #74402, Bug #19822257)mysql_install_db did not write a date to the
.mysql_secret
file. (Bug #74006, Bug #19659004)Incorrect results could be produced tor views and derived tables on the inner side of an outer join and from which non-nullable expressions such as literals were selected. (Bug #73953, Bug #20841369, Bug #67014, Bug #15967464, Bug #65936, Bug #14358878, Bug #67300, Bug #15936817, Bug #76327, Bug #20708288)
If a spatial column contained invalid spatial data, creating a
SPATIAL
index on the column failed to produce an error. (Bug #73871, Bug #19593342)Certain queries for the
INFORMATION_SCHEMA
TABLES
andCOLUMNS
tables could lead to excessive memory use when there were large numbers of emptyInnoDB
tables. (Bug #72322, Bug #18592390)Large integer literals converted to floats for comparison with decimal data could lose precision and produce incorrect results. (Bug #72056, Bug #18411494, Bug #21139707)
When choosing join order, the optimizer could incorrectly calculate the cost of a table scan and choose a table scan over a more efficient
eq_ref
join. (Bug #71584, Bug #18194196)The server interpreted
--tc-heuristic-recover
option values incorrectly due to an off-by-one error. Thanks to Laurynas Biveinis for the patch. (Bug #70860, Bug #19771769)On OS X, the
vio_io_wait()
call could cause stack corruption for a large number of file descriptors (more thanFD_SETSIZE
). (Bug #69903, Bug #17259750)Queries that included a
HAVING
clause based on nondeterministic functions could produce incorrect results. (Bug #69638, Bug #17055185)MySQL failed to compile using OpenSSL 0.9.8e. (Bug #68999, Bug #16861371)
For mysqlslap, the combination of
--auto-generate-sql-secondary-indexes
and--auto-generate-sql
failed because it tried to insert 36-digit UUID values into aVARCHAR(32)
column. Thanks to Tsubasa Tanaka for the patch. (Bug #55265, Bug #11762644)