During data directory initialization or upgrade, MySQL now creates a
'mysql.session'@'localhost'reserved account. This account is used internally by plugins to access the server. It is locked so that it cannot be used for client connections. (Bug #25642343)
Solaris: On Solaris, MySQL binary distributions are now linked against
libatomic.so, so they are no longer dependent onlibstatomic.so. (Bug #25909965)
-
InnoDB: The
innodb_undo_logsconfiguration option is deprecated and will be removed in a future MySQL version. Theinnodb_rollback_segmentsconfiguration option performs the same function and should be used instead.The
Innodb_available_undo_logsstatus variable is deprecated and will be removed in a future MySQL version. (WL #10322) -
The
libmysqldembedded server library is deprecated and will be removed in MySQL 8.0. These are also deprecated and will be removed:The mysql_config
--libmysqld-libs,--embedded-libs, and--embeddedoptionsThe CMake
WITH_EMBEDDED_SERVER,WITH_EMBEDDED_SHARED_LIBRARY, andINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIRoptionsThe (undocumented) mysql
--server-argoptionThe mysqltest
--embedded-server,--server-arg, and--server-fileoptionsThe mysqltest_embedded and mysql_client_test_embedded test programs
(WL #9721, WL #9722, WL #9816)
MySQL Enterprise Edition now includes a
keyring_awsplugin that communicates with the Amazon Web Services Key Management Service as a back end for key generation and uses a local file for key storage. For more information, see The MySQL Keyring. (WL #9143)
mysqladmin was added to Docker/Minimal packages because it is needed by InnoDB Cluster. (Bug #25998285)
For Windows, MSI installer packages now include a check for the required Visual Studio redistributable package, and produce a message asking the user to install it if it is missing. (Bug #25658832)
Debian/Ubuntu packages now support multiple MySQL instances with systemd. See Managing MySQL Server with systemd. (Bug #24559588, Bug #82785)
MySQL Enterprise Edition now supports LDAP pluggable authentication of MySQL users. This enables MySQL Server to use LDAP (Lightweight Directory Access Protocol) to authenticate MySQL users by accessing directory services such as X.500. For more information, see LDAP Pluggable Authentication. (WL #5847)
-
Incompatible Change: Plugins such as Group Replication and X Plugin now use the
mysql.sessionaccount added in this release. If you are upgrading from a previous release which did not include themysql.sessionaccount, you must run mysql_upgrade to ensure the account is created. If mysql_upgrade is not run, plugins fail to start with the error message There was an error when trying to access the server with user: mysql.session@localhost. Make sure the user is present in the server and that mysql_upgrade was run after a server update. User accounts previously used for this purpose, such asmysqlxsys, are no longer created. (Bug #26042764)References: See also: Bug #24311527, Bug #25642343, Bug #25750822, Bug #25103980, Bug #83841.
-
The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2l. Issues fixed in the new OpenSSL 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 #26160962)
-
These functions previously accepted either WKB strings or geometry arguments. Use of geometry arguments is now deprecated and generates a warning. Geometry arguments will not be accepted in MySQL 8.0.
For information about migrating queries that refer to those functions away from using geometry arguments to using WKB arguments, see Functions That Create Geometry Values from WKB Values. (WL #10166)
mysql-test-run.pl now has a
--test-progressoption to cause display of the percentage of tests remaining. (Bug #25601131, Bug #20755059, Bug #76455)-
These changes were made to the
--xml-reportoption for mysql-test-run.pl:A
<failure>tag identifies any test failing on a retry attempt.Separate statistics and fields are included for skipped and disabled tests.
The XML report is created in the build directory if no absolute path is given for out-of-source builds.
For combination runs, a field named
variationis included in the<testcase>tag.Results for all tests belonging to a suite are aggregated within a single
<testsuite>tag.Information regarding failures is reported with a brief reason in an attribute named
message, along with other details within the tag.
(Bug #25349924)
-
mysql-test-run.pl now supports a
--report-unstable-testsoption that has these effects:Reports any test that has passed using at least one retry attempt in a separate category called “Unstable tests” in the summary.
If all failures are due to unstable tests, mysql-test-run.pl produces a warning but exits successfully.
Adds a new XML tag to report unstable tests, if the
--xml-reportoption is also specified.
(Bug #24473420, Bug #25984429)
mysqltest now supports a
replace_numeric_roundcommand that takes an argument value from 0 to 16 indicating the number of decimals to round numeric values to. This can be used to help prevent result content mismatch errors for tests in which slightly different results are obtained across platforms due to precision differences. Thanks to Daniel Black for the patch. (Bug #23280117, Bug #81399)
X Plugin now handles expired SSL certificates correctly. (Bug #25835833)
The output of clauses such as
GROUP BYandHAVINGhas been improved by moving thegrouping_criteriaexpression to the derived query. (Bug #25549637, Bug #24497007)
Replication: The
group_replication_transaction_size_limitvariable was added to enable you to protect a group against large transactions causing a failure. (Bug #84785, Bug #25510757)Group Replication: Group Replication now supports
SAVEPOINTSQL transactions. (WL #9837, WL #10520)RPM
.specfiles now include support for running unit tests. (Bug #25814143, Bug #85743)The mysql client now supports a
--binary-as-hexoption that causes display of binary data using hexadecimal notation (0x). Thanks to Daniël van Eeden for the patch. (Bug #25340722, Bug #84391)valueThe
audit_logfilter parser now produces errors for unexpected JSON elements in filter definitions. (Bug #24360663)
InnoDB: An
ALTER TABLEoperation that rebuilt an encrypted table did not set the encryption attribute properly. (Bug #26243264)InnoDB: The length of a virtual column field in a virtual index record was less than the expected template column length. (Bug #25793677)
InnoDB: The server allocated memory unnecessarily for an operation that rebuilt the table. (Bug #25573565, Bug #85043)
InnoDB: With
foreign_key_checksdisabled,InnoDBincorrectly printed messages to the error log when operations were performed on a table that referenced a nonexistent foreign key. (Bug #25365223)InnoDB: During a
TRUNCATE TABLEoperation on a file-per-table tablespace, a dictionary operation lock was released before eviction of dirty pages from the buffer pool, causing a latch order violation. (Bug #25357789)InnoDB: When using an index merge optimizer switch, a
SELECT COUNT(*)operation sometimes returned 0. Partitioning code incorrectly performed amemcpyinstead of a column copy of columns read by the index, causing the wrong records to be copied. (Bug #25332330, Bug #81031)InnoDB: After a
RENAME TABLEoperation that moved a table to a different schema,InnoDBreturned an error on restart indicating that it could not locate the tablespace data file.InnoDBfailed to updateINNODB_SYS_DATAFILESdata dictionary table during theRENAME TABLEoperation. (Bug #25189192, Bug #84038)InnoDB: Loading
InnoDBtables required more memory in MySQL 5.7 due primarily to the addition of in-memory structure members introduced with temporary table optimizations. The in-memory structure members, only used for temporary tables, are now only allocated as needed. (Bug #25080442)InnoDB: During an
ALTER TABLEoperation that rebuilt a table containing a virtual column,InnoDBfailed to apply a concurrent insert log record. (Bug #24961167)InnoDB:
InnoDBfailed to apply the concurrent delete log for an in-placeALTER TABLEoperation due to a virtual column validation issue. (Bug #24960450)InnoDB: Changes to the
InnoDBrecovery process in MySQL 5.7 could require up to three scans of the redo log during recovery. To reduce the number of scans, the first and second scans were merged. With this change, there is only one scan unless the redo log record hash table that is populated by the scan reaches its memory threshold. In this case, a second scan is initiated that performs a simultaneous scan and apply. (Bug #22963951, Bug #80788)-
Partitioning: When a query performed a reverse-ordered range scan (to satisfy
ORDER BY ... DESC) using index condition pushdown on a partitionedInnoDBtable, it could take an unreasonably long time to finish. This was due to the fact that the condition pushdown check failed to get the bounds of the range, so that the scan continued to read index tuples until it reached the first value in the index. (Bug #83470, Bug #24929748)References: See also: Bug #84107.
Replication: With GTIDs generated for incident log events, MySQL error code 1590 (ER_SLAVE_INCIDENT) could not be skipped using the
--slave-skip-errors=1590startup option on a replication slave. (Bug #26266758)Replication: A
USEstatement that followed aSET GTID_NEXTstatement sometimes had no effect. (Bug #26128931)-
Replication: Groups can now contain members running different server versions to enable you to do online upgrades of a replication group. The rules for combining members in a group with different versions are:
If you have a group with 8.0 members, you cannot add a 5.7 member
If you have a group with 5.7 members you can add a 8.0 member, but it remains in read-only mode. Writing to this member is dangerous while the group contains multiple server versions and should be avoided.
In a single-primary group, if the current primary leaves the group and a new primary must be elected, the primary is first chosen from the lower version members. If no lower version member is found, the primary is chosen from newer version members. (Bug #25876807)
Replication: When first starting the MySQL server following an installation from RPM, passwword validation plugin is activated by default (true only for RPM installations). If binary logging was already enabled at this time, the activation was logged, even though plugin activations should not be recorded in the binary log. (Bug #25672750)
Replication: If the binary log on a master server was rotated and a full disk condition occurred on the partition where the binary log file was being stored, the server could stop unexpectedly. The fix adds a check for the existence of the binary log when the dump thread switches to next binary log file. If the binary log is disabled, all binary logs up to the current active log are transmitted to slave and an error is returned to the receiver thread. (Bug #25076007)
Replication: Interleaved transactions could sometimes deadlock the slave applier when the transaction isolation level was set to
REPEATABLE-READ. (Bug #25040331)Replication: If a relay log index file named relay log files that did not exist,
RESET SLAVE ALLsometimes did not fully clean up properly. (Bug #24901077)Replication: The
slave_skip_errorssystem variable did not permit error numbers larger than 3000. Thanks to Tsubasa Tanaka for the patch. (Bug #24748639, Bug #83184)Replication: mysqlbinlog, if invoked with the
--rawoption, does not flush the output file until the process terminates. But if also invoked with the--stop-neveroption, the process never terminates, thus nothing is ever written to the output file. Now the output is flushed after each event. (Bug #24609402)Replication: A memory leak in mysqlbinlog was fixed. The leak happened when processing fake rotate events, or when using
--rawand the destination log file could not be created. The leak only occurred when processing events from a remote server. Thanks to Laurynas Biveinis for his contribution to fixing this bug. (Bug #24323288, Bug #82283)-
Replication: A slave server could lose events not yet applied when
MASTER_AUTO_POSITION=0, both replication threads were stopped, and the applier delay was changed usingCHANGE MASTER TO MASTER_DELAY=. (Bug #23203678, Bug #81232)NReferences: See also: Bug #25340185, Bug #84375.
Replication: Transmission of large GCS messages could take so long the sender appeared to have died. (Bug #22671846)
-
Replication: Multithreaded slaves could not be configured with small queue sizes using
slave_pending_jobs_size_maxif they ever needed to process transactions larger than that size. Any packet larger thanslave_pending_jobs_size_maxwas rejected with the error ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX, even if the packet was smaller than the limit set byslave_max_allowed_packet.With this fix,
slave_pending_jobs_size_maxbecomes a soft limit rather than a hard limit. If the size of a packet exceedsslave_pending_jobs_size_maxbut is less thanslave_max_allowed_packet, the transaction is held until all the slave workers have empty queues, and then processed. All subsequent transactions are held until the large transaction has been completed. The queue size for slave workers can therefore be limited while still allowing occasional larger transactions. (Bug #21280753, Bug #77406) -
Replication: An incident event that broke replication was not written to the binary log with a GTID, so that it was not possible to skip the event using
SET gtid_next=. Instead, it was necessary to set the relay log file and relay log positions directly; this meant that, when autopositioning was enabled, it was necessary first to disable it, then to set the relay log file and position, and finally to re-enable autopositioning.valueNow in such cases MySQL writes the incident event into the statement cache, so that a GTID is generated and written for it prior to flushing, and that the slave applier works with the change. Then users can skip the event using the SQL statement
SET gtid_next=, followed byvalueBEGINandCOMMIT. (Bug #19594845) Replication: In certain cases, the master could write to the binary log a
last_committedvalue which was smaller than it should have been. This could cause the slave to execute in parallel transactions which should not have been, leading to inconsistencies or other errors. (Bug #84471, Bug #25379659)Replication: When using
group_replication_ip_whitelist=AUTOMATIC, IPs in the private network are permitted automatically, but some class C IP addresses were not being permitted correctly. (Bug #84329, Bug #25503458)Replication: The replication applier thread returns Error 3002
ER_INCONSISTENT_ERRORwhen there is a difference between an expected error number and the actual error number. It is now possible to ignore this error by using 3002 withslave_skip_errors. (Bug #83186, Bug #24753281)-
Replication: MySQL lost its GTID position following a restart when a dump from mysqldump had been used to load data.
To keep this problem from occurring, the
mysql.gtid_executedtable is now excluded automatically from dumps made bymysqldump. (Bug #82848, Bug #24590891)References: See also: Bug #87455, Bug #26643180.
-
Replication: Corruption of relay logs for one channel in multi-source replication caused good channels not to be initalized during a server restart. In addition, when run with
--skip-slave-start=false, the server also failed to start slave threads for those channels which were in good condition, despite the fact that it should have started the slave threads for all good channels.Now, regardless of any errors on other channels, the server attempts to create and initialize channels that are in good condition, and starts slave threads for the good channels if
--skip-slave-startis disabled. As part of this fix,START SLAVEandSTOP SLAVE, which are intended to operate on all channels, are also modified such that they continue executing on all good channels even if they find bad channels among them. (Bug #82209, Bug #24285104) Replication: The SQL thread was unable to GTID skip a partial transaction. (Bug #81119, Bug #25800025)
Group Replication: In the case of delayed initialization of the Group Replication plugin deployed in single-primary mode, secondaries were able to get writes through an asynchronous replication channel, which is not allowed in normal initialization of the Group Replication plugin. (Bug #26314756)
Group Replication: When
binlog_checksumwasNONEfollowing startup, when Group Replication was started and an error occurred, the server remained in theRECOVERINGstate and could not be shut down. (Bug #25793366, Bug #85667)-
Group Replication: In a Group Replication setup where circular asynchronous replication was implemented between members of different replication groups, view change log events were repeatedly replicated between the groups with new generated GTIDs each time. This fix ensures that view change log events are ignored outside the named replication group in which they occur, and never generate new GTIDs. (Bug #25674926)
References: See also: Bug #26049695, Bug #25928854, Bug #25721175.
-
Group Replication: In a setup where single-primary Group Replication was combined with asynchronous replication, for example with servers
S1andS2forming a group, andS2andS3functioning as master and slave, secondaries such asS2accepted transactions and were then able to enter the group. This fix prevents a secondary from creating an asynchronous replication channel when it belongs to a single-primary group, and Group Replication from starting while asynchronous replication is running. (Bug #25574200, Bug #85047)References: See also: Bug #86325, Bug #26078602.
Group Replication: In the event that a member failed to join a group the member was not stopping and continued to accept transactions. To avoid this set your members to use
super_read_only=1in themy.cfgfile. Group Replication now checks for this setting upon successful startup, and setssuper_read_only=0. This ensures that members which do not successfully join a group cannot accept transactions. (Bug #25474736, Bug #84728)Group Replication: When an existing
GTID_NEXTtransaction was assigned a conflicting GTID by the server, Group Replication generated an assert upon detecting two transactions with same GTID. This was because Group Replication generates the GTID after conflict detection, which is later than with asynchronous replication. When the transaction has been committed, the server issues a warning that the GTID has already been used, and the transaction is rolled back. (Bug #84153, Bug #25232042)Linux: The generic Linux build for MySQL 8.0 now supports Non-Uniform Memory Access (NUMA) on its host system. Systems that use the build need to have
libnumainstalled on them. See Installing MySQL on Unix/Linux Using Generic Binaries for more details. (Bug #26005558)Linux: The generic Linux build for MySQL 8.0 is now built on Oracle Linux 6 using
glibc2.12. Systems that use the build need to haveglibc2.12 or later installed on them. (Bug #26005558)Debian client packages were missing information about conflicts with akonadi-backend-mysql packages. (Bug #26002288)
mysqldump could write database names in
USEstatements incorrectly. (Bug #25998635)If the
mysql_stmt_close()C API function was called, it freed memory that later could be accessed ifmysql_stmt_error(),mysql_stmt_errno(), ormysql_stmt_sqlstate()was called. To obtain error information after a call tomysql_stmt_close(), callmysql_error(),mysql_errno(), ormysql_sqlstate()instead. (Bug #25988681)Queries could be cached incorrectly, leading to incorrect query results, under these circumstances:
InnoDBtable; rows are being inserted but have not yet been committed; a query uses the table as a base table in a derived table; the optimizer chooses to materialize the derived table. (Bug #25943038, Bug #86047)Man pages for a few utilities were missing from Debian/Ubuntu packages. (Bug #25811814)
The
field-tunit test failed to run with AddressSanitizer enabled. Thanks to Laurynas Biveinis for the patch. (Bug #25803823, Bug #85678)Debian client packages were missing information about conflicts with native packages. (Bug #25799475)
The Perl path in
#!lines at the beginning of Perl scripts has been adjusted to/usr/local/bin/perlfor FreeBSD 11. (Bug #25719975)-
For debug builds, the assertion added for Bug#59686 was too strict and could be raised when it should not have been. (Bug #25685958)
References: See also: Bug #59686.
A server exit occurred for downgrades to MySQL 5.7 from a MySQL 8.0 installation for which the optimizer cost tables contained generated columns. (Bug #25650399)
The server exited abnormally attempting to access invalid memory. (Bug #25501659)
With
mysqldsecured by TCP wrappers and thehosts.allowandhosts.denyfiles configured to restrict access from an IP address, connection attempts from that address resulted in too many messages to the error log. (Bug #25476479, Bug #84708)mysqlpumpno longer includes theslave_master_infoandslave_relay_log_infotables in dumps of themysqlsystem database. Restoring a dump file containing these tables caused problems by changing the replication state improperly. (Bug #25469190)Changes made by calling
mysql_options()to setMYSQL_OPT_SSL_MODEcould be affected by latermysql_options()calls. Now settingMYSQL_OPT_SSL_MODEis unaffected by latermysql_options()calls. (Bug #25452210)A race condition could occur for
CREATE TABLEstatements withDATA DIRECTORYorINDEX DIRECTORYclauses. (Bug #25451091)MySQL compilation in different directories produced different builds to leakage of absolute paths into debug information and
__FILE__. (Bug #25436469, Bug #84608, Bug #25859274, Bug #85855)On SELinux in Enforcing mode, the
keyring_okvplugin failed to connect to the Oracle Key Vault server. (Bug #25420001)ALTER TABLE ... MODIFYon aDATETIME NOT NULLcolumn using anAFTERclause resulted in anER_INVALID_USE_OF_NULLerror. (Bug #25385334)The range optimizer could create an incorrect query tree, resulting in a server exit. (Bug #25369742, Bug #25586531)
mysqld_failed to start the server if the
--datadiroption was specified with a relative path name. (Bug #25364806)XA PREPARE,XA ROLLBACK, andXA COMMITfor a transaction from a disconnected session did not take a global commit lock and modified the binary log andInnoDBredo log even whenFLUSH TABLES WITH READ LOCKwas in effect. This could lead to inconsistent backups when backup tools assumed that the server was in a read-only state. (Bug #25364178, Bug #84442)GROUP_CONCAT(DISTINCT)returned nonunique values if the data size was greater than the value of thetmp_table_sizesystem variable. (Bug #25331425, Bug #84320)-
The fix for Bug #78777 had different effects depending on whether the Performance Schema is enabled. (Bug #25309017, Bug #84305)
References: This issue is a regression of: Bug #78777.
An aggregate function in some nested queries could cause a server exit. (Bug #25303711)
Virtual generated column expressions that used the
CONV()orHEX()functions could cause problems if the connection character set was changed. In this context, the table character set is now used for these functions regardless of connection character set. (Bug #25287633)The
Rewriterplugin did not perform locking properly if theread_onlysystem variable was enabled. (Bug #25264253)With
read_onlyenabled, creation of non-TEMPORARYtables by non-SUPERusers was permitted under certain conditions. (Bug #25250768)For a table having a
TIMESTAMPorDATETIMEcolumn having a default ofCURRENT_TIMESTAMP, the column could be initialized to0000-00-00 00:00:00'if the table had aBEFORE INSERTtrigger. (Bug #25209512, Bug #84077)Certain stored functions, if used in a query
WHEREclause, could be handled using Index Condition Pushdown (which should not happen), resulting in a server exit. (Bug #25196653, Bug #25174454)Certain queries against
InnoDBtables that used a primary key and a subquery could return incorrect results if theindex_merge_intersectionflag of theoptimizer_switchsystem variable was enabled. (Bug #24829050, Bug #79675)Initialization of the
keyring_okvplugin failed if theSTANDBY_SERVERsetting was missing from theokvclient.oraconfiguration file, effectively making this a mandatory setting.STANDBY_SERVERis now optional. (Bug #24816271)On x86 machines, the
uint3korr()macro read 4 bytes of data instead of the intended 3 bytes. (Bug #24807826, Bug #83264)An assertion was raised during a fetch operation by the memcached plugin. (Bug #24605783)
Queries that contained
UNIONin a subquery andGROUP BYcould return incorrect results. (Bug #24595639)The server could dereference a null pointer when a deterministic function returning
LONGTEXTwas used in a subquery. (Bug #24595581)Incorrect behavior could occur for
INSERTstatements executed in stored-program or prepared-statement context, if theVALUESpart of anON DUPLICATE KEY UPDATEclause referred to aBLOBvalue in theINSERTcolumn list. (Bug #24538207, Bug #25361251, Bug #25530880, Bug #25684790)systemd support scripts in Debian packages contained hardcoded references to the data directory, making it difficult to change the data directory using
--datadir. (Bug #24398446, Bug #82417)MySQL failed to compile under macOS 10.10.5 using Clang. (Bug #24352163, Bug #82340)
If a
REPLACEstatement tried to update a row in a table containing a virtual generated column of typeBLOB, subsequent DML statements could behave incorrectly. (Bug #23573575)Some
PROXYgrants were not replicated to slaves, causing incorrect replication. (Bug #23289541, Bug #81424, Bug #23623115)The help output from mysqlxtest has been improved. (Bug #23107137, Bug #81086)
Compiler flags were adjusted to eliminate numerous warnings that occurred when compiling the
keyring_fileplugin using Clang. (Bug #22834591, Bug #80524)If enabling the Event Scheduler caused an event defined as
ON COMPLETION NOT PRESERVEto be dropped because its execution time had passed, the drop event was not written to the binary log, causing slaves not to replicate it and replication failure if an event of the same name was created later. (Bug #22150112)LOAD XMLperformance became noticeably slower when the XML file being read contained a great many spaces, such as those introduced by indenting or pretty-printing. Now all leading whitespace is trimmed from each such value before reading it into memory. (Bug #16212207)