What's new in this version:
- InnoDB: The ib_cursor_moveto function did not accept a search tuple with fewer fields than are defined for the index.
- InnoDB: The ib_table_truncate function failed to release a transaction, resulting in a hang on server shutdown.
- InnoDB: The ib_open_table_by_id function passed an incorrect argument to dict_table_open_on_id.
- InnoDB: On Unix-like platforms, os_file_create_simple_no_error_handling_func and os_file_create_func opened files in different modes when innodb_flush_method was set to O_DIRECT.
- 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.
- InnoDB: The page_zip_verify_checksum function returned false for a valid compressed page.
- InnoDB: An ALTER TABLE ... IMPORT TABLESPACE operation on a table with prefix index failed with a schema mismatch error.
- InnoDB: A failure to load a change buffer bitmap page during a concurrent delete tablespace operation caused a server exit.
- InnoDB: Importing a tablespace with a full-text index resulted in an assertion when attempting to rebuild the index.
- InnoDB: After dropping a full-text search index, the hidden FTS_DOC_ID and FTS_DOC_ID_INDEX columns prevented online DDL operations.
- InnoDB: The InnoDB memcached plugin handled unsigned NOT NULL integer columns incorrectly. Thanks to Piotr Jurkiewicz for the patch.
- InnoDB: A DROP DATABASE operation raised an assertion.
- InnoDB: An index record was not found on rollback due to inconsistencies in the purge_node_t structure.
- Partitioning: In certain cases, ALTER TABLE ... REBUILD PARTITION was not handled correctly when executed on a locked table.
- Replication: If flushing the cache to the binary log failed, for example due to a disk problem, the error was not detected by the binary log group commit logic. This could cause inconsistencies between the master and the slave. The fix uses the binlog_error_action variable to decide how to handle this situation. If binlog_error_action=ABORT_SERVER, then the server aborts after informing the client with an ER_BINLOGGING_IMPOSSIBLE error. If binlog_error_action=IGNORE_ERROR, then the error is ignored and binary logging is disabled until the server is restarted again. The same is mentioned in the error log file, and the transaction is committed inside the storage engine without being added to the binary log.
- Replication: When using GTIDs, a multi-threaded 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 multi-threaded slave recovery process uses the GTID protocol to fill any unprocessed transactions.
- 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.
- Compilation failed when building MySQL without the Performance Schema.
- Incorrect cost calculation for the semi-join Duplicate Weedout strategy could result in a server exit.
- MySQL Enterprise Firewall recorded prepared statements as they were received by the server, not as normalized digests.
- 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 MySQL Enterprise Firewall and for Performance Schema aggregation by digest. Identifiers now are quoted consistently.
- For MySQL Enterprise Firewall operation, max_digest_length had to be larger than mysql_firewall_max_query_size or normalized statements were truncated.
- Enabling MySQL Enterprise Firewall and binary logging could result in the server reading freed memory.
- For large values of max_digest_length, the Performance Schema could encounter an overflow error when computing memory requirements, resulting in a server exit.
- The Spencer regex library used for the REGEXP operator could be subject to heap overflow in some circumstances.
- A buffer-overflow error could occur for mysqlslap during option parsing.
- An off-by-one error in string-copying code could result in a buffer overflow.
- GROUP BY or ORDER BY on a CHAR(0) NOT NULL column could lead to a server exit.
- 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.
- mysql-systemd-start failed if datadir was set in /etc/my.cnf.
- A call to the MySQL Enterprise Firewall sp_set_firewall_mode() stored procedure with an invalid user name produced an error but added the user to the firewall_users table anyway.
- Ubuntu packages were missing dependencies for killall and psmisc.
- 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.