-
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
mysqlsystem table columns is increased:The
definercolumn of theeventandproctablesThe
grantorcolumn of theprocs_privandtables_privtables
In each case, the column previously was defined as
CHAR(77), where 77 was chosen to permit astring containing a user name up to 16 characters, auser_name@host_name@character, and a host name up to 60 characters. Each column now is defined asCHAR(93), reflecting an increase in permitted user name length from 16 to 32 characters. A similar change from
CHAR(77)toCHAR(93)applies to theDEFINERcolumn of theseINFORMATION_SCHEMAtables:EVENTS,ROUTINES,TRIGGERS,VIEWS. Along with the changes toINFORMATION_SCHEMAtables, output from any correspondingSHOWstatements now displaysDEFINERvalues 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
mysqlsystem 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 anER_USER_COLUMN_OLD_LENGTHerror will occur in those system table contexts where avalue from 78 to 93 characters long is given. (WL #9262)user_name@host_name -
-
The
audit_logplugin 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 filter definitions and a set of loadable functions that enable filter manipulation. To simplify installing the tables and functions along with the
audit_logplugin, an installation script is now provided. For more information, see Installing or Uninstalling MySQL Enterprise Audit, and Audit Log Filtering.By default, audit log filtering now logs no auditable events for any users. This differs from legacy audit log behavior (before MySQL 5.7.13), which logs all auditable events for all users; to produce log-everything behavior, see the installation instructions. (WL #5705)
References: See also: Bug #21464781, Bug #71855.
On platforms for which systemd support is installed, systemd has the capability of managing multiple MySQL instances. For details, see Managing MySQL Server with systemd. Consequently, mysqld_multi and mysqld_multi.server are not installed because they are unnecessary. (Bug #81093, Bug #23134620)
MySQL Server now includes an SQL interface for keyring key management, implemented as a set of loadable functions that access the functions provided by the internal keyring service. For more information, see General-Purpose Keyring Key-Management Functions. For information about the keyring service functions invoked by the functions, see The Keyring Service. For general keyring information, see The MySQL Keyring. (WL #8841)
support-files/MacOSX/ReadMe.txtis no longer included in MySQL distributions. (Bug #81038, Bug #23088916)
-
The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.1t. For a description of issues fixed in this version, see 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)
The minimum number of X Plugin worker threads dropped below the number of threads configured by
mysqlx_min_worker_threads. (Bug #23074173)During installation of X Plugin, the
DROP USERstatement of an internal user was being added to the binary log, while the matchingCREATE USERstatement was not. This was causing an error in replication as the internal user did not exist on slaves. The fix ensures that theDROP USERstatement is not added to the binary log. (Bug #22989849)An error occurred when using method chaining to group results, for example
Crud.Find({ name:$.name, count:count(*) }).GroupBy($.name);. (Bug #22950240)X Plugin threads were registered in the Performance Schema tables as
thread/sql/daemon_plugin. This has been changed tothread/mysqlx/worker. (Bug #22901644)When a
Mysqlx_idle_worker_thread_timeoutwas configured, once the timeout had completed worker threads consumed 100% of CPU when they should have been idle. (Bug #81236, Bug #23204368)Client disconnections were logged as
EOF. The log message has been improved toPeer disconnection. (Bug #81199, Bug #23178878)
-
JSON: This release adds an unquoting extraction operator
->>, sometimes also referred to as an inline path operator, for use withJSONdocuments stored in MySQL. The new operator is similar to the->operator, but performs JSON unquoting of the value as well. For a JSON columnmycoland JSON path expressionmypath, the following three expressions are equivalent:JSON_UNQUOTE(mycol->"$.mypath")mycol->>"$.mypath"
The
->>operator can be used in SQL statements whereverJSON_UNQUOTE(JSON_EXTRACT())would be allowed. This includes (but is not limited to)SELECTlists,WHEREandHAVINGclauses, andORDER BYandGROUP BYclauses.For more information, see Functions That Search JSON Values, and JSON Path Syntax. (Bug #78736, Bug #21980346, WL #9124)
For better separation of output from multiple statements,
mysqltestnow flushes output sent tostdoutwhen the output destination is not a file. Previously, flushing occurred only for file output. (Bug #21435906)The version of the
tcmalloclibrary 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 TABLEto change the default value of a columncol_name, which may change the value of a generated column expression that refers to the column usingDEFAULT(. For this reason,col_name)ALTER TABLEoperations that change the definition of a column now cause a table rebuild if any generated column expression usesDEFAULT(). (Bug #80299, Bug #22680839)
-
InnoDB: A rollback operation run concurrently with an operation involving a virtual generated 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
InnoDBmemcached plugin. (Bug #23187607)InnoDB: An
ALTER TABLEoperation that added anAUTO_INCREMENTcolumn 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 TABLEoperation that attempted to add a virtual generated 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 TABLEoperation 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_mysqlfunction was not checked. (Bug #22939581, Bug #80761)InnoDB: An
ALTER TABLE ... IMPORT TABLESPACEoperation on file-per-table tablespace containing an encrypted table failed when run in a different session than the precedingALTER TABLE ... DISCARD TABLESPACEoperation. (Bug #22918999, Bug #80708)InnoDB: A
FLUSH TABLESoperation 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 INDEXwere not permitted for tables created with theENCRYPTIONattribute. (Bug #22897921)InnoDB:
InnoDBmemcached code assumed the nonexistence of thehtonll()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
INSERToperation on a table with aFULLTEXTindex andFTS_DOC_IDcolumn failed because the insertedFTS_DOC_IDvalue exceeded the permitted gap between consecutiveFTS_DOC_IDvalues. To avoid this problem, the permitted gap between the largest usedFTS_DOC_IDvalue and newFTS_DOC_IDvalue was raised from 10000 to 65535. (Bug #22679185)InnoDB: Validation code for transparent page compression incorrectly permitted
innodb_strict_mode=OFF, which allowed theCOMPRESSIONattribute 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 TABLESPACEreturned an error if the remote general tablespace data file was missing. (Bug #22232892, Bug #79330)InnoDB: An
ALTER TABLEoperation that changed table row format fromCOMPACTtoCOMPRESSEDraised 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 TABLEoperation 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 EXPORToperation appeared to stall. A loop in theibuf_contract_in_backgroundfunction failed to exit. (Bug #21133329, Bug #77011)InnoDB: A full-text query raised an assertion. Under certain circumstances, DDL operations such as
ALTER TABLE ... RENAMEcaused full-text auxiliary tables to be removed on server restart. (Bug #13651665)Replication: With
gtid_mode=ON, executing an empty query before settinggtid_nextmade the latter action fail. It was because only statements that do not change the data can be executed before one can successfully changegtid_next, and an empty query was not considered one of those “safe” statements. This fix allows the setting ofgtid_nextafter 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 theserver_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_tswas not initialized during the construction of aQuery_eventobject. 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 therelaylog.log_lockit 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 failedDROP USERor a partially failedDROP VIEWconsume respectively the relevant GTID and save it into@@GLOBAL.GTID_EXECUTEDandmysql.gtid_executedtable when binary logging is disabled. (Bug #21686749)Replication: When using row-based replication in a cascading or circular replication setup, where a master is replicating to server 1 which is then replicating to server 2, merge tables were not being correctly applied on server 2. This could cause an unexpected halt on server 2 while server 1 was unaffected. (Bug #17018343)
Replication: An intermittent ASan error was being reported on the
rpl.rpl_checksum_cachetest. 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 TOstatement for each replication channel. (Bug #78467, Bug #21855705)Replication: If a multithreaded replication slave running with
relay_log_recovery=1stopped 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 Replica. Prior to this fix, to recover from this situation required manually settingrelay_log_recovery=0, starting the slave withSTART SLAVE UNTIL SQL_AFTER_MTS_GAPSto fix any transaction inconsistencies and then restarting the slave withrelay_log_recovery=1. This process has now been automated, enabling relay log recovery of a multithreaded slave upon restart automatically. (Bug #77496, Bug #21507981)Fedora builds now are configured using
-DMYSQL_MAINTAINER_MODE=0to 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_okvplugin configuration directory was missing, attempts to rotate theInnoDBmaster key could cause a server exit. (Bug #23149683)-
INSERTwithON DUPLICATE KEY UPDATEandREPLACEon 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_tagtoNULLcould 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
ANDorORoperator, the optimizer could choose that index too often and create execution plans that produced incorrect results. (Bug #22810883)CREATE TABLEstatements in mysqlpump output could be missingKEYclauses 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_sizeto a very large value could cause some operations to fail and result in a server exit. (Bug #22594514)For an
InnoDBtable containing generated columns, using the table in a join could result in a server exit due to improper error checking. (Bug #22561845)REPLACEon a table with an indexed generated column could cause a server exit if the index prefix length was calculated incorrectly. (Bug #22445211)An
UPDATEoperation affecting a virtual generatedBLOBcolumn could cause a server exit. (Bug #22444212)SHOW CREATE TABLEfor a table containing a generated column could cause a server exit or produce anIllegal mix of collationserror. (Bug #22392268)On a slave server, replication of an
UPDATEstatement that updated an indexedBLOBvirtual generated column of anInnoDBtable could cause a server exit. (Bug #22241015)An assertion could be raised when a deadlock occurred due to a
SELECT ... GROUP BY ... FOR UPDATEquery 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-caoption had an invalid path, yaSSL returned an error message different from OpenSSL. Now both returnSSL connection error: SSL_CTX_set_default_verify_paths failed. (Bug #21920657)Installing MySQL from a yum or
zypperrepository resulted in/var/log/mysqld.logbeing created with incorrect user and group permissions. (Bug #21879694, Bug #78512)With
show_compatibility_56=OFF,SHOW VARIABLESandSHOW STATUSstatements having aWHEREclause did not work. (Bug #21783883)The
audit_logplugin failed to abort the current operation when told to do so by a plugin handler for aMYSQL_AUDIT_PARSE_PREPARSEevent. (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-cipheroption also to be applied to the--tls-versionoption, with unpredictable results. (Bug #81139, Bug #23129821)A
DELETEfrom joined tables using a derived table in theWHEREclause 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.hor<mysql/mysql.>and did not set the include path. This was due to use of#include <notation rather thanfile_name>#include "in internal MySQL header files, which have been adjusted. (Bug #80935, Bug #23047194)file_name"MySQL did not compile under Solaris 12 using Sun Studio. To correct this, instances of
__attribute__were changed toMY_ATTRIBUTE. (Bug #80748, Bug #22932576)The
service_mysql_keyring.handservices.hheader files misspelledmysql_keyring_service_stasmysql_keyring_file_service_st. (Bug #80688, Bug #22908232)-
The fix for Bug #79194 did not cover the
eq_refaccess method, with the result that left joins could return incorrect results.NoteThis 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 instrings/decimal.cproduced Valgrind warnings due to reading uninitialized buffer contents. (Bug #80461, Bug #22782203, Bug #22839915)Starting the server with
--initializefailed if thekeyring_file_datasystem variable was also set at startup. To handle this, with--initializethe server no longer skips registration of plugins loaded with the--early-plugin-loadoption. (Bug #80451, Bug #22777039)Loading the
Rewriterquery rewrite plugin when there was noquery_rewritedatabase resulted in Valgrind warnings. (Bug #80333, Bug #22710312)The optimizer transformed
EXISTS (SELECT * ...)constructs toEXISTS (SELECT 1 ...)before all columns in the inner subquery had been resolved, which could result in rejection of valid queries that included aHAVINGclause withoutGROUP BYin 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 DISTINCTor aGROUP BYclause was used and the column containing theNULLvalue was part of the select list; anInnoDBtemporary 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
UserandProxied_usercolumns in themysql.proxies_privsystem table from 16 to 32 characters. (Bug #78254, Bug #21762656)Failure of
UNINSTALL PLUGINcould lead to inaccurate or confusing errors for subsequentINSTALL PLUGINoperations. (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)