Dear MySQL users,
MySQL Server 5.7.13, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.7.13 is
recommended for use on production systems.
Since MySQL Server 5.7.12, we have introduced the concept of
Rapid Plugins. Out of the box, 5.7.13 follows the same stability promise
as our current release process, but it also allows for plugins with
additional functionality to be installed very easily. The first plugin
to be released with MySQL Server 5.7.13 following this concept is the
new X Plugin, which exposes a new communications protocol called the X
Protocol. The expanded capabilities of the X Protocol enable us to
provide the new X DevAPI in our MySQL Connectors and Client
applications, like the new MySQL Shell. The goal of the X DevAPI is to
support a new schema object type called document collections as well as
relational and combined document store/relational capabilities. Now
developers, designers and DBAs can deploy MySQL databases that implement
document store, relational, or hybrid document/relation models. For
documentation about how to get started using MySQL as a document store,
see http://dev.mysql.com/doc/refman/5.7/en/document-store.html.
For an overview of what's new in MySQL 5.7, please see
http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html
For information on installing MySQL 5.7.13 on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/5.7/en/installing.html
MySQL Server 5.7.13 is available in source and binary form for a number of
platforms from our download pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 5.7.13 is also available from our repository for Linux
platforms, go here for details:
http://dev.mysql.com/downloads/repo/
Windows packages are available via the Installer for Windows or .ZIP
(no-install) packages for more advanced needs. The point and click
configuration wizards and all MySQL products are available in the
unified Installer for Windows:
http://dev.mysql.com/downloads/installer/
5.7.13 also comes with a web installer as an alternative to the full
installer.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:
http://bugs.mysql.com/report.php
The following section lists the changes in MySQL 5.7 since
the release of MySQL 5.7.12. It may also be viewed
online at
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-13.html
Enjoy!
Changes in MySQL 5.7.13 (2016-06-02)
Account Management Notes
* In MySQL 5.7.8, the maximum length of MySQL user names
was increased from 16 to 32 characters, but some
applicable contexts for this increase were overlooked.
Additional changes in maximum user name length now have
been applied:
+ The size of these mysql system table columns is
increased:
o The definer column of the event and proc tables
o The grantor column of the procs_priv and
tables_priv tables
In each case, the column previously was defined as
CHAR(77), where 77 was chosen to permit a
user_name@host_name string containing a user name up
to 16 characters, a @ character, and a host name up
to 60 characters. Each column now is defined as
CHAR(93), reflecting an increase in permitted user
name length from 16 to 32 characters.
+ A similar change from CHAR(77) to CHAR(93)applies to
the DEFINER column of these INFORMATION_SCHEMA
tables: EVENTS, ROUTINES, TRIGGERS, VIEWS. Along
with the changes to INFORMATION_SCHEMA tables,
output from any corresponding SHOW statements now
displays DEFINER values up to 93 characters.
Examples of affected statements: SHOW EVENTS, SHOW
TRIGGERS, SHOW PROCEDURE STATUS.
If you upgrade to this MySQL release from an earlier
version, you must run mysql_upgrade (and restart the
server) to incorporate the changes to the mysql system
database. A server from MySQL 5.7.13 or higher for which
mysql_upgrade has not been run continues to permit a
maximum of 77 characters in the system tables mentioned
previously, and an ER_USER_COLUMN_OLD_LENGTH error will
occur in those system table contexts where a
user_name@host_name value from 78 to 93 characters long
is given.
Audit Log Notes
* The audit_log plugin that forms the basis for MySQL
Enterprise Audit now supports fine-grained filtering of
events. This enables a reduction in the number of log
entries written to the audit log file, which increases
overall performance due to fewer write operations during
log recording. It also simplifies subsequent audit log
processing in terms of readability and processing time.
Fine-grained audit log filtering is rule based,
implemented using tables that store rule definitions and
a set of user-defined functions (UDFs) that enable rule
manipulation. To simplify installing the tables and UDFs
along with the audit_log plugin, an installation script
is now provided. For more information, see Installing or
Uninstalling MySQL Enterprise Audit
(http://dev.mysql.com/doc/refman/5.7/en/audit-log-install
ation.html), and Audit Log Filtering
(http://dev.mysql.com/doc/refman/5.7/en/audit-log-filteri
ng.html).
By default, rule-based audit log filtering logs no
auditable events for any users. This differs from
pre-MySQL 5.7.13 legacy audit log filtering, which logs
all auditable events for all users. To produce
log-everything behavior with rule-based filtering, see
the installation instructions.
Configuration Notes
* On platforms for which systemd support is installed,
systemd has the capability of managing multiple MySQL
instances. For details, see Configuring Multiple MySQL
Instances Using systemd
(http://dev.mysql.com/doc/refman/5.7/en/server-management
-using-systemd.html#systemd-multiple-mysql-instances).
Consequently, mysqld_multi and mysqld_multi.server are
not installed because they are unnecessary. (Bug #81093,
Bug #23134620)
Security Notes
* The linked OpenSSL library for the MySQL Commercial
Server has been updated to version 1.0.1t. Issues fixed
in the new version are described at
http://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL
Community build of MySQL Server, which uses the yaSSL
library instead. (Bug #23229564)
* MySQL Server now includes an SQL interface for keyring
key management, implemented as a set of user-defined
functions (UDFs) that access the functions provided by
the internal keyring service. For more information, see
Keyring Key Management Functions
(http://dev.mysql.com/doc/refman/5.7/en/keyring-udfs.html
). For information about the keyring service functions
invoked by the UDFs, see The Keyring Service
(http://dev.mysql.com/doc/refman/5.7/en/keyring-service.h
tml). For general keyring information, see The MySQL
Keyring
(http://dev.mysql.com/doc/refman/5.7/en/keyring.html).
Functionality Added or Changed
* For better separation of output from multiple statements,
mysqltest now flushes output sent to stdout when the
output destination is not a file. Previously, flushing
occurred only for file output. (Bug #21435906)
* support-files/MacOSX/ReadMe.txt is no longer included in
MySQL distributions. (Bug #81038, Bug #23088916)
* The version of the tcmalloc library included in MySQL
distributions was very old. It has been removed and is no
longer included with MySQL. (Bug #80994, Bug #23068660)
* The my_make_scrambled_password() function in the C client
library was restricted earlier in MySQL 5.7 (not exported
to client programs). The function has once again been
made visible to client programs. (Bug #80974, Bug
#23061746)
* It is possible to use ALTER TABLE to change the default
value of a column col_name, which may change the value of
a generated column expression that refers to the column
using DEFAULT(col_name). For this reason, ALTER TABLE
operations that change the definition of a column now
cause a table rebuild if any generated column expression
uses DEFAULT(). (Bug #80299, Bug #22680839)
* This release adds an unquoting extraction operator ->>,
sometimes also referred to as an inline path operator,
for use with JSON documents stored in MySQL. The new
operator is similar to the -> operator, but performs JSON
unquoting of the value as well. For a JSON column mycol
and JSON path expression mypath, the following three
expressions are equivalent:
+ JSON_UNQUOTE( JSON_EXTRACT(mycol, "$.mypath") )
+ JSON_UNQUOTE(mycol->"$.mypath")
+ mycol->>"$.mypath"
The ->> operator can be used in SQL statements wherever
JSON_UNQUOTE(JSON_EXTRACT()) would be allowed. This
includes (but is not limited to) SELECT lists, WHERE and
HAVING clauses, and ORDER BY and GROUP BY clauses.
For more information, see Functions That Search JSON
Values
(http://dev.mysql.com/doc/refman/5.7/en/json-search-funct
ions.html), and JSON Path Syntax
(http://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.
html). (Bug #78736, Bug #21980346)
Bugs Fixed
* InnoDB: A rollback operation run concurrently with an
operation involving a generated virtual column caused a
server exit. (Bug #23313102)
References: This issue is a regression of: Bug #21869656.
* InnoDB: Potential buffer overflow issues were corrected
for the InnoDB memcached plugin. (Bug #23187607)
* InnoDB: An ALTER TABLE operation that added an
AUTO_INCREMENT column on a table with virtual columns
raised an assertion. (Bug #23052231)
* InnoDB: Statements executed in a transaction that was
rolled back asynchronously by a higher priority
transaction caused a deadlock error and subsequent
replication failure. (Bug #23021168, Bug #80898)
* InnoDB: An ALTER TABLE operation that attempted to add a
generated virtual column and a full-text index raised an
assertion. (Bug #23014521)
* InnoDB: The full-text index cache was freed during a
background index cache synchronization. (Bug #22996488)
* InnoDB: A full-text index operation raised an assertion.
(Bug #22963169)
* InnoDB: Memory was allocated to I/O slots unnecessarily,
causing an apparent memory leak. (Bug #22956469, Bug
#80772)
* InnoDB: An ALTER TABLE operation raised an assertion when
attempting to create a key containing a generated column.
(Bug #22951879)
* InnoDB: A startup failure due to an invalid option
resulted in a server exit after a subsequent restart. An
error returned by the innobase_start_or_create_for_mysql
function was not checked. (Bug #22939581, Bug #80761)
* InnoDB: An ALTER TABLE ... IMPORT TABLESPACE operation on
file-per-table tablespace containing an encrypted table
failed when run in a different session than the preceding
ALTER TABLE ... DISCARD TABLESPACE operation. (Bug
#22918999, Bug #80708)
* InnoDB: A FLUSH TABLES operation on a table with a
discarded tablespace raised an assertion. (Bug #22899690,
Bug #80669)
* InnoDB: A DML operation involving a table with a virtual
column raised an assertion. (Bug #22899305)
* InnoDB: An invalid read at innobase_get_computed_value()
raised a Valgrind error. (Bug #22898168, Bug #80667)
* InnoDB: Online DDL operations like ALTER TABLE ... ADD
INDEX were not permitted for tables created with the
ENCRYPTION attribute. (Bug #22897921)
* InnoDB: InnoDB memcached code assumed the nonexistence of
the htonll() function on OS X, resulting in a build
failure on OS X 10.10 and later. (Bug #22865112)
* InnoDB: Starting the server in read-only mode failed when
encrypted tables were present. The call to
fil_encryption_rotate() was not skipped when the server
was started in read-only mode. (Bug #22723797)
* InnoDB: An R-tree purge operation raised an assertion.
(Bug #22698076, Bug #80327)
* InnoDB: An INSERT operation on a table with a FULLTEXT
index and FTS_DOC_ID column failed because the inserted
FTS_DOC_ID value exceeded the permitted gap between
consecutive FTS_DOC_ID values. To avoid this problem, the
permitted gap between the largest used FTS_DOC_ID value
and new FTS_DOC_ID value was raised from 10000 to 65535.
(Bug #22679185)
* InnoDB: Validation code for transparent page compression
incorrectly permitted innodb_strict_mode=OFF, which
allowed the COMPRESSION attribute to be applied to a
general tablespace. Page compression is only supported
with file-per-table tablespaces. (Bug #22615096, Bug
#80182)
* InnoDB: An memory order issue related to atomic
operations caused assertion failures on ARM64 and POWER
platforms. (Bug #22608616)
* InnoDB: DROP TABLESPACE returned an error if the remote
general tablespace data file was missing. (Bug #22232892,
Bug #79330)
* InnoDB: An ALTER TABLE operation that changed table row
format from COMPACT to COMPRESSED raised an assertion. A
function involved in the operation passed incorrect page
size information. (Bug #22046353)
* InnoDB: With innodb_autoinc_lock_mode=0, multiple threads
waiting for a table-level lock caused an unexpected
deadlock. (Bug #21983865, Bug #78761)
* InnoDB: A race condition in trx_kill_blocking() raised an
assertion. (Bug #21508537)
* InnoDB: An OPTIMIZE TABLE operation on a table with a
full-text index raised an assertion. (Bug #21378944)
* InnoDB: A buffer pool load operation resulted in a
"Cannot allocate 0 bytes" error. (Bug #21371070)
* InnoDB: A FLUSH TABLES ... FOR EXPORT operation appeared
to stall. A loop in the ibuf_contract_in_background
function failed to exit. (Bug #21133329, Bug #77011)
* InnoDB: A full-text query raised an assertion. Under
certain circumstances, DDL operations such as ALTER TABLE
... RENAME caused full-text auxiliary tables to be
removed on server restart. (Bug #13651665)
* Replication: With gtid_mode=ON, executing an empty query
before setting gtid_next made the latter action fail. It
was because only statements that do not change the data
can be executed before one can successfully change
gtid_next, and an empty query was not considered one of
those "safe" statements. This fix allows the setting of
gtid_next after an empty query. (Bug #22811150)
* Replication: Slaves running MySQL 5.7 could not connect
to a MySQL 5.5 master due to an error retrieving the
server_uuid, which is not part of MySQL 5.5. This was
caused by changes in the method of retrieving the
server_uuid. (Bug #22748612)
References: This issue is a regression of: Bug #21455603.
* Replication: Setting certain semisynchronous-replication
configurations on the master server when semisynchronous
replication was not enabled on it might cause the server
to exit. This fix prevents the unexpected exits to occur
in the situation. (Bug #22602324)
* Replication: The variable explicit_defaults_ts was not
initialized during the construction of a Query_event
object. That caused Valgrind warnings for dependency on
an uninitialized variable. This fix makes sure the
variable is initialized. (Bug #22110916, Bug #78999)
References: This issue is a regression of: Bug #18885916,
Bug #72794.
* Replication: In the next_event() function, which is
called by a slave's SQL thread to read the next even from
the relay log, the SQL thread did not release the
relaylog.log_lock it acquired when it ran into an error
(for example, due to a closed relay log), causing all
other threads waiting to acquire a lock on the relay log
to hang. With this fix, the lock is released before the
SQL thread leaves the function under the situation. (Bug
#21697821)
References: See also: Bug #20492319.
* Replication: A partially failed statement was not
correctly consuming an auto-generated or specified GTID
when binary logging was disabled. The fix ensures that a
partially failed DROP TABLE, a partially failed DROP USER
or a partially failed DROP VIEW consume respectively the
relevant GTID and save it into @@GLOBAL.GTID_EXECUTED and
mysql.gtid_executed table when binary logging is
disabled. (Bug #21686749)
* Replication: An intermittent ASan error was being
reported on the rpl.rpl_checksum_cache test. The error
reported was related to the binary log sender doing a
heap-use-after-free on a given memory address. (Bug
#78995, Bug #22109863)
* Replication: mysqldump has been updated to make it
compatible with multi-source replication. Now when
replication channels other than the default channel are
found, mysqldump --dump-slave outputs a CHANGE MASTER TO
statement for each replication channel. (Bug #78467, Bug
#21855705)
* Replication: If a multi-threaded replication slave
running with relay_log_recovery=1 stopped unexpectedly,
during restart the relay log recovery process could fail.
This was due to transaction inconsistencies not being
filled, see Handling an Unexpected Halt of a Replication
Slave
(http://dev.mysql.com/doc/refman/5.7/en/replication-solut
ions-unexpected-slave-halt.html). Prior to this fix, to
recover from this situation required manually setting
relay_log_recovery=0, starting the slave with START SLAVE
UNTIL SQL_AFTER_MTS_GAPS to fix any transaction
inconsistencies and then restarting the slave with
relay_log_recovery=1. This process has now been
automated, enabling relay log recovery of a
multi-threaded slave upon restart automatically. (Bug
#77496, Bug #21507981)
* Fedora builds now are configured using
-DMYSQL_MAINTAINER_MODE=0 to silence GCC 6 warnings. (Bug
#23274249)
* Allocation of a large number (2^20) of Performance Schema
index statistic objects could cause a server exit. (Bug
#23188107)
* If the keyring_okv plugin configuration directory was
missing, attempts to rotate the InnoDB master key could
cause a server exit. (Bug #23149683)
* INSERT with ON DUPLICATE KEY UPDATE and REPLACE on a
table with a foreign key constraint defined failed with
an incorrect "duplicate entry" error rather than a
foreign key constraint violation error. (Bug #23135731)
References: This issue is a regression of: Bug #78853,
Bug #22037930.
* Contention in Performance Schema mutex instrumentation
creation and destruction has been reduced, such that
mutexes for which instruments are frequently created and
destroyed are maintained in separate pages from those for
which instruments are rarely created and destroyed. (Bug
#22965826)
* With certain build options, an uninitialized variable in
get_key_scans_params() could produce a compilation error.
(Bug #22916059)
* Adding new tokens to the parser caused query digest
values to change. (Bug #22906606)
* For debug builds, CONCAT_WS() could raise an assertion if
there was nothing to append. (Bug #22888420)
* Fixed Valgrind warnings for failed LEAST() evaluations.
(Bug #22883278)
* INET_NTOA() could cause a server exit when producing an
error message. (Bug #22881810)
References: This issue is a regression of: Bug #22042027.
* The my_write() call could cause a server exit if it
attempted to check the current connection and the
connection had been killed. (Bug #22867809)
References: This issue is a regression of: Bug #21688407.
* Invoking Enterprise Encryption functions in multiple
threads simultaneously could cause a server exit. (Bug
#22839278)
* Setting log_syslog_tag to NULL could cause a server exit.
(Bug #22834781)
References: This issue is a regression of: Bug #22180046.
* If the expression for an indexed generated column
contained an AND or OR operator, the optimizer could
choose that index too often and create execution plans
that produced incorrect results. (Bug #22810883)
* CREATE TABLE statements in mysqlpump output could be
missing KEY clauses and would not load. (Bug #22726732)
* Attempting to use Enterprise Encryption functions after
creating and dropping them could cause a server exit.
(Bug #22669012)
* Setting sort_buffer_size to a very large value could
cause some operations to fail and result in a server
exit. (Bug #22594514)
* For an InnoDB table containing generated columns, using
the table in a join could result in a server exit due to
improper error checking. (Bug #22561845)
* REPLACE on a table with an indexed generated column could
cause a server exit if the index prefix length was
calculated incorrectly. (Bug #22445211)
* An UPDATE operation affecting a generated virtual BLOB
column could cause a server exit. (Bug #22444212)
* SHOW CREATE TABLE for a table containing a generated
column could cause a server exit or produce an Illegal
mix of collations error. (Bug #22392268)
* On a slave server, replication of an UPDATE statement
that updated an indexed BLOB virtual generated column of
an InnoDB table could cause a server exit. (Bug
#22241015)
* An assertion could be raised when a deadlock occurred due
to a SELECT ... GROUP BY ... FOR UPDATE query executed
using a Loose Index Scan. (Bug #22187476)
* mysqlpump could exit due to improper handling of error
conditions in a dump thread. (Bug #22017120)
* Several potential buffer overflow issues were corrected.
(Bug #21977380, Bug #23187436, Bug #23202778, Bug
#23195370, Bug #23202699)
* If the CA certificate as given to the --ssl-ca option had
an invalid path, yaSSL returned an error message
different from OpenSSL. Now both return SSL connection
error: SSL_CTX_set_default_verify_paths failed. (Bug
#21920657)
* Installing MySQL from a yum or zypper repository resulted
in /var/log/mysqld.log being created with incorrect user
and group permissions. (Bug #21879694, Bug #78512)
* With show_compatibility_56=OFF, SHOW VARIABLES and SHOW
STATUS statements having a WHERE clause did not work.
(Bug #21783883)
* The audit_log plugin failed to abort the current
operation when told to do so by a plugin handler for a
MYSQL_AUDIT_PARSE_PREPARSE event. (Bug #21457956)
* Memory leaks reported by Valgrind for mysqlpump were
fixed. (Bug #21237667)
* Some string functions returned one or a combination of
their parameters as their result. If one of the
parameters had a non-ASCII character set, the result
string had the same character set, resulting in incorrect
behavior when an ASCII string was expected. (Bug
#18740222)
* On Fedora 24, upgrades using a Community MySQL Server RPM
failed to replace an installed MariaDB Galera server due
to a change in the MariaDB package. (Bug #81390, Bug
#23273818)
* The mysql_read_defaults_options() function was missing a
break statement, causing any option value for the
--ssl-cipher option also to be applied to the
--tls-version option, with unpredictable results. (Bug
#81139, Bug #23129821)
* A DELETE from joined tables using a derived table in the
WHERE clause failed if one of the joined tables was used
in the derived table. (Bug #81014, Bug #23074801)
* Compiling of clients that used the MySQL C API could fail
if they used an obsolete path to mysql.h or
<mysql/mysql.> and did not set the include path. This was
due to use of #include <file_name> notation rather than
#include "file_name" in internal MySQL header files,
which have been adjusted. (Bug #80935, Bug #23047194)
* MySQL did not compile under Solaris 12 using Sun Studio.
To correct this, instances of __attribute__ were changed
to MY_ATTRIBUTE. (Bug #80748, Bug #22932576)
* The service_mysql_keyring.h and services.h header files
misspelled mysql_keyring_service_st as
mysql_keyring_file_service_st. (Bug #80688, Bug
#22908232)
* The fix for Bug #79194 did not cover the eq_ref access
method, with the result that left joins could return
incorrect results.
Note
This bug fix has a very small negative performance effect
such that it fails to cache an eq_ref-accessed row that
is on the inner side of an outer join. Regular inner
joins are not affected.
(Bug #80526, Bug #22833364)
References: This issue is a regression of: Bug #79194,
Bug #22176604.
* The sanity() macro in strings/decimal.c produced Valgrind
warnings due to reading uninitialized buffer contents.
(Bug #80461, Bug #22782203, Bug #22839915)
* Starting the server with --initialize failed if the
keyring_file_data system variable was also set at
startup. To handle this, with --initialize the server no
longer skips registration of plugins loaded with the
--early-plugin-load option. (Bug #80451, Bug #22777039)
* Loading the Rewriter query rewrite plugin when there was
no query_rewrite database resulted in Valgrind warnings.
(Bug #80333, Bug #22710312)
* The optimizer transformed EXISTS (SELECT * ...)
constructs to EXISTS (SELECT 1 ...) before all columns in
the inner subquery had been resolved, which could result
in rejection of valid queries that included a HAVING
clause without GROUP BY in the subquery. (Bug #80231, Bug
#22655856)
* For a server compiled with
-DWITH_PERFSCHEMA_STORAGE_ENGINE=0, a memory leak could
occur for buffered log messages used during server
startup. (Bug #80089, Bug #22578574)
* A query could return incorrect results under these
conditions: A column with a default value contained NULL;
SELECT DISTINCT or a GROUP BY clause was used and the
column containing the NULL value was part of the select
list; an InnoDB temporary table was used during query
processing. (Bug #79591, Bug #22343910)
* A null pointer dereference of a parser structure could
occur during stored procedure name validation. (Bug
#79396, Bug #22286421)
* Database initialization failed during installation using
Ubuntu 15.10 packages. (Bug #79377, Bug #22252900)
* mysql_upgrade failed to widen the User and Proxied_user
columns in the mysql.proxies_priv system table from 16 to
32 characters. (Bug #78254, Bug #21762656)
* Failure of UNINSTALL PLUGIN could lead to inaccurate or
confusing errors for subsequent INSTALL PLUGIN
operations. (Bug #74977, Bug #20085672)
* mysqld_multi displayed misleading error messages when it
was unable to execute my_print_defaults. (Bug #74636, Bug
#19920049)
* Previously, upgrading the server using an RPM package
(including installation using yum) required upgrading the
client package to the same MySQL version, which may be
undesirable for some installations. This rule has been
relaxed so that upgrading to a General Availability (GA)
server version requires only that some GA client version
be installed, which is less likely to require a client
upgrade. (Bug #72230, Bug #18518216)
* mysqldump failed silently with no error message when it
encountered an error while executing FLUSH LOGS. (Bug
#71783, Bug #18284273)
On Behalf of the MySQL/ORACLE RE Team
Hery Ramilison
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql