[This is part 3 (last) of the announcement ]
* Partitioning: When multiple columns are used in KEY partitioning, their order may help determine the partition in which the row is placed. Changing this order by means of an ALTER TABLE that uses ALGORITHM=INPLACE can lead to inconsistency when placing rows in partitions; in other words, a row inserted before such an operation operation is placed in one partition, but the same row inserted afterwards is placed in a different one. For this reason, altering the order of a multicolumn index online is no longer allowed when that index is also used as the base for partitioning the table by KEY; instead, you must use a copying ALTER TABLE to perform the change. (Bug #17896265) * Replication: When enforce_gtid_consistency was set to WARN, if a second GTID consistency violating statement within a transaction was encountered, it was not raising a warning. This was due to the fact that by design the transaction context was marked as GTID violating, hence no other warnings were being issued until the transaction committed. The fix ensures that a warning is raised for all statements inside a transaction correctly. (Bug #20414559) * Replication: After restarting a slave, the first relay log was missing the Previous_gtids log event. Since MySQL version 5.7.6, a Previous_gtids log event is added to every log. This fix ensures that a Previous_gtids log event is correctly added to the first relay log. (Bug #20106390) * Replication: When purging binary logs and the first left binary log contained only a Previous_gtids log event, a lost_gtids->is_empty() assertion was caused. This was related to the fix for Bug#16741603 and has now been corrected. (Bug #20075721) * Replication: When using a slave configured to use a special character set such as UTF-16, UTF-32, or UCS-2, the receiver (I/O) thread failed to connect. The fix ensures that in such a situation, if a slave's character set is not supported then default to using the latin1 character set. (Bug #19855907) * Replication: If a client thread on a slave executed FLUSH TABLES WITH READ LOCK while the master executed a DML, executing SHOW SLAVE STATUS in the same client became blocked, causing a deadlock. The fix ensures that the read lock is only held during the period that the relay log is being updated and the deadlock is avoided. (Bug #19843808) * Replication: When using multi-source replication with multiple channels and with a multi-threaded slave enabled, resetting the slave and then executing RESET SLAVE ALL, START SLAVE or STOP SLAVE resulted in a crash. This has now been fixed and the multi-threaded slave can be restarted in a multi-source replication setup. (Bug #19784641) * Replication: The CHANGE REPLICATION FILTER statement can be used to create an empty filter, for example when clearing previously configured replication filters. This caused a crash in previous versions when creating an empty filter for REPLICATE_DO_TABLE, REPLICATE_IGNORE_TABLE, REPLICATE_WILD_DO_TABLE, or REPLICATE_WILD_IGNORE_TABLE. This fix ensures that these replication filters can be safely cleared by setting the filter to be empty. (Bug #19711674) * Replication: When using a MySQL version that had been compiled with the WITH_DEBUG option enabled, using expire_logs_days to purge binary logs caused a restart to crash the server. This problem arose after the fix for Bug #17283409. The fix ensures that current_thd is checked before calling DEBUG_SYNC(). (Bug #19553099) * Replication: When using a multi-threaded slave, the slave receiver (SQL) thread stopped with an ER_MTS_CANT_PARALLEL error when issuing a LOAD DATA INFILE statement that tried to load data into a non-transactional table on the master but failed, for example due to a primary key violation. This was caused by the multi-threaded slave applier incorrectly handling DELETE_FILE events. The fix ensures that a multi-threaded slave handles DELETE_FILE events correctly. (Bug #19552923) * Replication: Sometimes the slave I/O thread leaves a partial group in the current relay log, for example when it is killed or stopped. After it is restarted, a new relay log is created on rotation and a pair of ROTATE_EVENT and FORMAT_DESCRIPTION_EVENT is replicated from master and written into the new relay log. When using a multi-threaded slave, problems such as error 1755 were encountered when applying the remaining part of the group in the relay log. This fix ensures that if MASTER_AUTO_POSITION is enabled, then the worker rolls back the partial group, finishes its work, and then applies the new complete copy of the group. If MASTER_AUTO_POSITION is disabled, the worker does not roll back the partial group. (Bug #19545298) * Replication: When using row-based replication with slave_type_conversions enabled, a binary log with more than one Rows_log_event in succession caused a crash. This was due to the temporary tables generated as part of the slave_type_conversions process being released too early. This fix ensures that the temporary tables are not released too early, and also ensures that long transactions do not cause an out of memory error. (Bug #18770469, Bug #19704825) * Replication: When using binary log files that had been manually copied from the master, for example to avoid I/O thread reading delay, a multi-threaded slave generated error 1755. Because the Previous_gtids log event is logged using the master's server_id and not the slave's server_id, the previous events were not being skipped correctly. This fix ensures that the events in Previous_gtids log event are always skipped, regardless of whether they are from the relay log (generated on the slave) or from the binary log (generated on the master and manually copied to the slave as the relay log). (Bug #17812024) * Replication: When replicating from an earlier version MySQL master, such as version 4.1, checksums are not used for events. Replicating to a slave running a newer version of MySQL, such as version 5.6, which has slave_sql_verify_checksum enabled by default meant that the last 4 bytes of events from the older master were being incorrectly interpreted as the checksum. A warning is now generated and to avoid such a situation, set slave_sql_verify_checksum=0 to disable checksums on the slave. (Bug #17276183) * Replication: When using multi-source replication and a multi-threaded slave in a situation that required recovery of a channel, such as after a slave applier thread error, or after a crash, the channel was not being recovered correctly. This meant there was no attempt to fix gaps in transaction execution left by the stopped session, which led to some transactions being applied repeatedly. The fix ensures that in such a situation, the correct channel is passed through to multi-threaded slave recovery. (Bug #74906, Bug #20046222) * Replication: Ignorable log events were introduced in MySQL 5.6, but were found to not be functioning correctly. This has now been fixed. (Bug #74683, Bug #19949915) * Replication: When an XA transaction was active, executing an internal rollback, for example using the BINLOG statement, resulted in an assertion. The fix ensures that a rollback happens only for a slave when a transaction spans multiple binary log files. Rollback does not happen now if the Format_description comes from the BINLOG statement being executed in the MySQL client. (Bug #74597, Bug #19928622) * Replication: The GTIDs of transactions committed in a group were not added to gtid_executed in order and this sometimes caused temporary gaps in gtid_executed. When these gaps occurred, the server would have to add and remove intervals from the GTID set, and this requires a mutex, which would cause contention and could reduce performance. The fix ensures that GTIDs are added to gtid_executed in the same commit order without gaps. (Bug #74328, Bug #19982543) * Replication: In a replication topology where: + the slave had GTID_MODE=ON and MASTER_AUTO_POSITION=1 + the master had GTID_MODE=ON and had not executed any transactions since it was started if the slave used the MASTER_POS_WAIT function to wait until it had received the full binary log from the master while the master had not executed any transactions, then the MASTER_POS_WAIT function would never finish, or would time out. This was caused because after a server restart, the master's binary log ends with a Previous_gtids log event but this event was not being replicated, so the slave was not made aware of the master's binary log position. The fix ensures that the Previous_gtids log event is replicated correctly, so that the slave becomes aware of the correct binary log position on the master, ensuring that the MASTER_POS_WAIT function can finish. (Bug #73727, Bug #19507923) * Replication: When restarting MySQL with relay_log_recovery enabled to recover from a crash, if the SQL thread had never been started, the position from which to start recovery was not correctly initialized because Relay_Master_Log_File was missing. This fix ensures that in such a situation each of the relay logs, starting from the first relay log file, is searched for a rotate event from the master, which specifies where replication started from. This rotate event is then used to set the SQL thread's Relay_Master_Log_File and Relay_Log_Pos and recovery continues as normal. (Bug #73039, Bug #19021091) * Replication: When using GTIDs for replication and with MASTER_AUTO_POSITION enabled, if a slave requested GTIDs which had been already been purged by the master, the master was sending all available GTIDs. This happened because the master reads all available binary logs and searches for a binary log which contains a GTID that is not contained in the union of gtid_executed and gtid_retrieved. If such a GTID is found, the master starts sending the information starting from that location. In a situation where the union of the slave's gtid_executed and gtid_retreived set did not contain the master's gtid_purged set, the slave would expect GTIDs which had already been purged by the master. This fix ensures that in such a situation, the slave's I/O thread is aborted with an error "Master has purged binary logs containing GTIDs that the slave requires.". (Bug #73032, Bug #19012085) * Replication: When using a multi-threaded slave with GTID based replication, enabling --replicate-same-server-id caused the slave thread to stop with an error and replication could not be started. This was caused by a Previous_gtids log event not being correctly filtered in such a setup and reaching the worker thread. The fix ensures that Previous_gtids log event is correctly processed by the coordinator thread. (Bug #72988, Bug #18967791) * Replication: A kernel mutex contention was being caused because mysqlbinlog was calling localtime() for every event read, which in turn called stat(/etc/localtime). This fix ensures that mysqlbinlog uses localtime_r(), which is optimized to store the read only timezone internal structure. This also means that mysqlbinlog now establishes the time zone at the beginning of processing and you can not change it during processing. This is the same behavior as MySQL server. (Bug #72701, Bug #18808072) * Replication: In normal usage, it is not possible for a slave to have more GTIDs than the master. But in certain situations, such as after a hardware failure or incorrectly cleared gtid_purged, the master's binary log could be truncated. This fix ensures that in such a situation, the master now detects that the slave has transactions with GTIDs which are not on the master. An error is now generated on the slave and the I/O thread is stopped with an error. The master's dump thread is also stopped. This prevents data inconsistencies during replication. (Bug #72635, Bug #18789758) * Replication: When using a GTID based replication slave with auto positioning enabled, there was a possibility that the last fully received transaction could be requested again by the slave I/O thread when the GTID of the transaction was not in the slave's gtid_executed set. This situation could occur for example if the SQL thread had not applied the transaction or a RESET MASTER statement was issued on the slave to clean up its gtid_executed set. The fix ensures that a GTID based replication slave using auto positioning does not ask for a fully received transaction twice, regardless of the slave's gtid_executed set, and it now only adds a GTID to the Retrieved_Gtid_Set when the whole transaction has been received. (Bug #72392, Bug #18629623, Bug #17943188) * Replication: When using SHOW SLAVE STATUS to monitor replication performance, Seconds_Behind_Master sometimes displayed unexpected lag behind the master. This was caused by Previous_gtids log events being written to the slave's relay log with a timestamp behind the master, and then being used to calculate the Seconds_Behind_Master. This fix ensures that events generated on the slave that are added to the relay log and are not used when calculating Seconds_Behind_Master. (Bug #72376, Bug #18622657) * Replication: The global scope for the sql_log_bin system variable has been deprecated, and this variable can now be set with session scope only. The statement SET GLOBAL SQL_LOG_BIN now produces an error. It remains possible for now to read the global value of sql_log_bin, but doing so produces a warning. You should act now to remove from your applications any dependencies on reading this value, as the ability to do so will be removed in the next major MySQL release following MySQL 5.7. (Bug #67433, Bug #15868071) * For debug builds, an assertion could be raised during index selection if a spatial index used a column that was also part of the primary index. (Bug #20451454) * On Linux, trying to install a .dll plugin (intended for Windows) resulted in a memory leak. (Bug #20439894) * On 32-bit platforms, byte-count calculations for utf8 arguments for RPAD() could overflow and cause a server exit. (Bug #20316028) * Pushed joins were not working for NDB tables. (Bug #20234994) * mysqltest had a memory leak if another process shut down the server. (Bug #20221262) * For some queries with LIMIT, EXPLAIN could indicate that execution would be done using filesort, but execution actually was done using an index read. (Bug #20219846) * A bulk INSERT followed by other statements followed by LOAD DATA could produce incorrect AUTO_INCREMENT values. (Bug #20126635) * The mysql_session_track_get_first() C API function returned 1 instead of 0 even after a valid query was executed to change the session state. (Bug #20126551) * On Ubuntu 14.10, MySQL install operations could fail to reload AppArmor. (Bug #20092641) * During token processing, the parser check whether a token contained 7-bit data could be applied to the wrong token. (Bug #20086997) * For debug builds, the server could raise an assertion during DELETE processing due to failure to handle a subquery that was required to be a scalar subquery but returned more than 1 row. (Bug #20086791) * mysql_list_fields() and mysql_stmt_prepare() could leak memory. This problem was introduced in MySQL 5.7.5 as a result of the change to EOF packet handling. (Bug #20065461, Bug #20065517) * Some queries with argumentless functions, GROUP BY, and ROLLUP caused an assertion to be raised. (Bug #20034943) * For a privilege error on a table underlying a view, a more general error should be supplied for attempts to access the view, so as not to provide information about the view contents. This did not happen in strict SQL mode. (Bug #20032855) * NULL as an expression was not recognized as a literal for calculation of Performance Schema statement digests. (Bug #20015246) * A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege. (Bug #20007583) * The mysql client could exit prematurely when invoked with the --xml option. (Bug #19974879) * InnoDB table checksum calculation could yield an incorrect result if the value of the innodb_checksum_algorithm system variable was modified during the operation. (Bug #19931177) * The LIKE operator could produce unreliable results of the ESCAPE clause contained an expression that was constant at execution time but unknown prior to that. (Bug #19931126) * Execution of certain BINLOG statements while temporary tables were open by HANDLER statements could cause a server exit. (Bug #19894987) * Binary distributions for Solaris built with Sun Studio now ship with the stlport library due to a dependency of client programs on that library. (Bug #19845068) * SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user. (Bug #19817663) * For debug builds, the optimizer could produce a bad index scan cost when creating a temporary table for a derived table, and raise an assertion as a result. (Bug #19793998) * Unlocking a temporary table after locking and truncating it could cause a server exit. (Bug #19786309) * IN predicates could be incorrectly flagged as candidates for semi-join flattening, causing an assertion to be raised when flattening was attempted. (Bug #19779600, Bug #18932813) * Large values of the transaction_prealloc_size system variable could cause the server to allocate excessive amounts of memory. The maximum value has been adjusted down to 128K. A similar change was made for transaction_alloc_block_size. (Bug #19770858) * RPM and DEB packages set the default sql_mode value incorrectly (they did not set ONLY_FULL_GROUP_BY, which is now included in the default value). (Bug #19766800) * Source RPM packages were missing the proper dependency on the Boost library. (Bug #19714453) * The Enterprise Encryption plugin could mishandle string arguments. (Bug #19688008) * The optimizer detected functional dependency for equality expressions of the form col_name = expr, but not for expressions of the form (col_name, ...) = (col_name, ...). Now it handles the latter as well. (Bug #19687724) * Certain InnoDB errors caused stored function and trigger condition handlers to be ignored. (Bug #19683834, Bug #20094067) * On some 32-bit platforms, GET_LOCK(lock_name, -1) returned immediately due to timeout rather than waiting for the lock. (Bug #19674349) * If a DML statement containing a subquery caused a deadlock inside InnoDB, InnoDB would roll back the transaction. This would not be noticed in the SQL layer, with the result that execution continued, eventually leading to an assertion being raised inside InnoDB. (Bug #19670163) * With default_authentication_plugin set to sha256_password, password hashes written to the binary log were in the wrong format. (Bug #19660998) * GROUP BY on a CHAR(0) NOT NULL column could lead to a server exit. (Bug #19660891) * Under load, the server could exit while attempting to populate the OBJECT_TYPE column for selects from the Performance Schema events_waits_current table. (Bug #19658933) * ST_AsGeoJson() could fail when given an illegal max_dec_digits or options argument. (Bug #19657747) * Geohash spatial functions failed when given a geohash argument having a collation other than the default collation. (Bug #19657725) * Checks enforced by ONLY_FULL_GROUP_BY cannot reliably be run if a grouped query is part of CREATE VIEW. The MySQL server tried to run those checks and could exit; now only statements that actually use the view run the checks. (Bug #19636980) * For debug builds, an assertion could be incorrectly raised when a grouped query referred to a view. (Bug #19636409) * For debug builds: Adding a unique index to a POINT NOT NULL column triggered a warning and the key was not promoted to a primary key. Creating a unique index on a different non-NULL column in the same table then raised an assertion. (Bug #19635706) * When there is no change in session state, the OK packet sent from server to the client contained an unneeded byte at the end of the packet. (Bug #19625718) * Debug builds of mysql_install_db did not compile on Solaris 11 U2 due to use of the deprecated vfork() function. (Bug #19603400) * An assertion could be raised for either of these conditions: 1) A conversion to semi-join intended for scalar subqueries was applied to multiple-row subqueries. 2) An IN predicate for which the left-hand side was a scalar subquery converted to a semi-join was checked to see whether it could use materialization. (Bug #19586047) * For debug builds, if an intermediate or final result produced NaN or a negative number, ST_Distance() caused a server exit. This function now produces a ER_GIS_INVALID_DATA error instead. (Bug #19584716) * CMake configuration was adjusted to handle new warnings reported by Clang 3.5, using the -Wpointer-bool-conversion and -Wundefined-bool-conversion compiler options. (Bug #19584183) * If a CREATE TABLE or ALTER TABLE partitioning statement was executed in strict SQL mode and an ER_WRONG_TYPE_COLUMN_VALUE_ERROR error occurred, the sql_mode was reset to '' and the stack of error handlers was corrupted, leading to a server exit. (Bug #19584181) * Attempting to start the server on a port that was already in use produced Valgrind errors. (Bug #19566148) * Session state was not included with the results of queries saved in the query cache. (Bug #19550875) * Illegal CREATE TABLE statements could fail to create the table (as expected), but still generate table statistics in the Performance Schema. (Bug #19535945) * Setting session_track_system_variables to NULL could lead to an eventual server exit. (Bug #19514067) * The client protocol tracing plugin did not account for the removal of the EOF packet from the client/server protocol in MySQL 5.7.5. (Bug #19512199) * The default value for the condition filtering effect for equality conditions on nonindexed columns was adjusted from 0.005 to 0.1. The original value caused too-high estimates for the condition filtering effect for columns with low cardinality. (Bug #19505175) * A UNION statement for which the first query block returned a POINT column and the second returned a geometric column with a non-POINT value failed if the query used InnoDB temporary tables or stored the result in an InnoDB table. (Bug #19471564) * An assertion could be raised for queries evaluated using a semi-join LooseScan if an index scan was used on one index and a range scan on another index. (Bug #19465034) * For client programs, --secure-auth is now deprecated and --skip-secure=auth is illegal, but use of --skip-secure-auth resulted in a warning followed by the help message rather than an error. (Bug #19438612) * In strict SQL mode, some SELECT statements could execute differently within and without stored procedures. (Bug #19418619) * If the audit_log plugin encountered a disk-full error, the server would exit. Now, if the file system to which the audit log is being written fills up, a "disk full" error is written to the error log. Audit logging continues until the audit log buffer is full. If free disk space has not been made available by the time the buffer fills, client sessions will hang, and stopping the server at the time of client sessions hanging will result in audit log corruption. To avoid this if client sessions are hung, ensure that free space is available on the audit logging file system before stopping the server. (Bug #19411485) * With the validate_password plugin activated and dictionary lookups enabled, passing a user-defined variable to PASSWORD() could cause a server exit. (Bug #19388163) * Statements that used Geohash spatial functions could not be prepared. (Bug #19383904) * The XPath number() function failed when invoked with no argument. Now MySQL treats number() as if it had been invoked for the current context node (in other words, as if number(.) had been used instead), which is the behavior called for in the XPath specification for this case. (Bug #19323016) References: This bug is a regression of Bug #19056196. * Certain GRANT PROXY statements affected only in-memory privileges and were reverted by FLUSH PRIVILEGES or a server restart. (Bug #19309652) * For debug builds, certain UPDATE statements could raise an assertion. (Bug #19055268) * STR_TO_DATE() could mishandle conversion of numeric input to date, resulting in a server exit. (Bug #19047644) * Fixed a Valgrind warning for an out-of-bounds read while parsing '0E+'. (Bug #19047527) * Under certain conditions, DATE_FORMAT() could use the same buffer for its format argument and the function result, resulting in invalid memory reads. (Bug #19047488) * Conversion of a string to an IPv6 address could raise a Valgrind warning. (Bug #19047425) * For failure to create a temporary table due to being out of file descriptors, the server exited rather than returning an error. (Bug #18948649) * mysqldump failed to report a disk-full error if the dump destination was located on an NFS mount. (Bug #18817867) * Under certain conditions, a proxy user could expire the password of the proxied user. (Bug #18815349) * InnoDB permitted a foreign key to be created which referenced a parent table for which the user did not have sufficient privileges. (Bug #18790730) * The server could exit due to an optimizer failure to allocate enough memory for resolving outer references. (Bug #18782905, Bug #19892803) * The mysql_session_track_get_first() and mysql_session_track_get_next() C API functions could cause a client crash if passed invalid arguments. (Bug #18769620) * If two internal temporary tables were created based on the same aggregate function, the server could exit. (Bug #18766378) * For some queries that contained a derived table (subquery in the FROM clause), delay of materialization resulted in a suboptimal execution plan due to a less accurate row-count estimate. (Bug #18607971) * For some multiple-table UPDATE statements, the join order of the tables could incorrectly influence the result. (Bug #18449085) * The key length used in vio/viosslfactories.c for creating Diffie-Hellman keys has been increased from 512 to 1,024 bits. (Bug #18367167) * ST_Touches() could cause a server exit for some inputs. (Bug #18304448) * Copying InnoDB tables containing full-text columns from Windows to Linux caused a server exit on Linux during full-text index initialization. (Bug #18285007) * A server running with --default-authentication-plugin=sha256_password rejected connection attempts by MySQL 5.1 clients requiring a password. (Bug #18160400) * The validate_password plugin did not properly enforce password constraints for accounts authenticated by the sha256_password authentication plugin. (Bug #18140348) * For UPDATE and DELETE statements, the server could exit after attempting to access an uninitialized data structure. (Bug #18036143) * Execution of a prepared statement with a nested IN subquery and a view could cause a server exit. (Bug #17973601) * Starting the server with start service or mysqld_safe could result in failure to use the correct plugin directory. (Bug #17619241) * FLUSH TABLES on a FEDERATED table failed if the table had been idle longer than the wait_timeout time plus the TCP keepalive time. (Bug #17599258) * For FEDERATED tables, IGNORE handling for DELETE IGNORE statements was ignored. (Bug #17564775) * For debug builds, an assertion was raised for ALTER TABLE when accessing an indexed column for which the operation modified the column length, if the length was 767 and was being increased. (Bug #16886196) * Selecting all columns from INFORMATION_SCHEMA.TABLES did not reopen tables if they were in the table cache, but selecting a subset of those columns under the same conditions did reopen tables. (Bug #16869534) * On Windows, the replace utility did not work. (Bug #16581605) * For some full-text queries, incomplete optimizer cleanup regarding index use could affect subsequent queries against the same table. (Bug #75688, Bug #20442572, Bug #20261601) * For JSON-format EXPLAIN output, the filtered value was displayed to an unwarranted number of digits precsion. This value is now limited to two digits following the decimal point. (Bug #75663, Bug #20429156) * For a slow network connection, the timeout for downloading Boost (600 seconds) could be too short. A new CMake option, DOWNLOAD_BOOST_TIMEOUT, is now available to configure the timeout. (Bug #75238, Bug #20223893) * Several spelling errors in error messages and the source code were corrected. Thanks to Otto Kekäläinen for the patch. (Bug #75084, Bug #20135835) * When CMake did not find the required version of Boost, the error message did not indicate the required version. Now it does. (Bug #75026, Bug #20108908) * Enabling the log_timestamps system variable incorrectly required binary logging to be enabled. (Bug #75025, Bug #20108866) * For subqueries that used GET_LOCK() or RELEASE_LOCK() in decimal context, the server could create ill-defined temporary tables, resulting in a raised assertion. (Bug #74859, Bug #20031761) * default_password_lifetime was marked volatile, unnecessarily because it is protected with a mutex. Thanks to Stewart Smith for the patch. (Bug #74849, Bug #20029439) * Removed the unused grant_option global variable from mysqld.cc. Thanks to Stewart Smith for the patch. (Bug #74847, Bug #20029398) * InnoDB boolean full-text searches incorrectly handled + combined with parentheses; for example, +word1 +(>word2 <word3). (Bug #74845, Bug #20028323) * MySQL failed to compile with GCC 4.9.1 in debug mode. (Bug #74710, Bug #19974500) * An optimizer cost model constructor allocated but did not destroy a cost constant object, resulting in a memory leak. (Bug #74590, Bug #19895764) * For debug builds, certain queries could raise an assertion when a internal string operation produces a NULL pointer rather than an empty string. (Bug #74500, Bug #19875294, Bug #13358486) * For mysql_install_db, the --no-defaults option was not passed to mysqld. (Bug #74477, Bug #19863782) * For debug builds, the server could exit due to an optimizer failure to allocate enough memory for group references. (Bug #74447, Bug #19855522) * For 32-bit Solaris builds, alignment problems resulting from improper use of varargs function arguments caused core dumps and incorrect output. (Bug #74395, Bug #19821617) * For the Performance Schema table_io_waits_summary_by_table table, there was an off-by-one error for the COUNT_FETCH and COUNT_READ values. (Bug #74379, Bug #19814559) * Depending on contents, geometry collection objects were not properly destroyed, resulting in a memory leak. (Bug #74371, Bug #19813931) * Using (row subquery1) NOT IN (row subquery2) with NULL values in the left argument could cause an assertion failure. (Bug #74357, Bug #19805761) * Any index comment specified for ALTER TABLE ... ADD INDEX was ignored. (Bug #74263, Bug #19779365) * Reading a system variable with a NULL value inside a stored program caused any subsequent reads to return a NULL value even though the variable value might change across invocations of the stored program. (Bug #74244, Bug #19770958) * The -DENABLED_PROFILING=0 CMake option resulted in compilation errors. (Bug #74166, Bug #19730970) * With the change in MySQL 5.7.5 to InnoDB for the help tables in the mysql database, mysql_install_db became much slower for loading the help-table content. This was due to the INSERT statements loading with autocommit enabled. Now all the statements execute as a single transaction, not one transaction per statement. (Bug #74132, Bug #19703580) * On CentOS 6, specifying a relative path name for the --socket option caused MySQL startup script failure. (Bug #74111, Bug #19775856) * The group_concat_max_len system variable could be set to its maximum value at runtime, but not in an option file. (Bug #74037, Bug #19670915) * The server incorrectly wrote client-side error messages to the error log: Deadlock found when trying to get lock; try restarting transaction. (Bug #73988, Bug #19656296) * The client part of the sha256_password plugin could not be specified as a default client plugin (--default-auth=sha256_password) for users authenticating with other server plugins. (Bug #73981, Bug #19651687, Bug #17675203) * Miscalculation of memory requirements for qsort operations could result in stack overflow errors in situations with a large number of concurrent server connections. (Bug #73979, Bug #19678930) * REPEAT() wasted time concatenating empty strings. (Bug #73973, Bug #19646643) * The capabililty of using InnoDB for temporary tables in MySQL 5.7.5 resulted in certain queries failing: Some queries involving multiple-table UPDATE, queries involving long PRIMARY KEY values, and queries involving DISTINCT SUM(). (Bug #73927, Bug #19627741, Bug #73932, Bug #19628808, Bug #73702, Bug #19497209) * On Windows, setting the max_statement_time session variable greater than 0 resulted in a memory leak. (Bug #73897, Bug #19605472) * In Solaris 11.2, dtrace -V output changed from Sun D to Oracle D, causing detection of DTrace availability to fail during MySQL configuration. (Bug #73826, Bug #19586917) * DROP DATABASE failed if the database directory contained .cfg files (such as created by FLUSH TABLES FOR EXPORT). (Bug #73820, Bug #19573998) * On 32-bit systems, GLength() returned a non-INF value for LineString values of infinite length. (Bug #73811, Bug #19566186) * mysql_config --libs_r produces output containing link flags for libmysqlclient_r, even though that library was removed in MySQL 5.5 and replaced with a symlink to the underlying libmysqlclient library. The output now refers directly to libmysqlclient. (The implication is that it is no longer necessary to maintain the symlink for the sake of being able to use mysql_config --libs_r.) (Bug #73724, Bug #19506315) * For statement digest calculation, the Performance Schema failed to recognize signed literal numbers as values representable by ? and created multiple digests for statements that should have had the same signature. Now all instances of unary plus and unary minus followed by a number reduce to ? in digests. (Bug #73504, Bug #19389709) * Compilation on Windows using Visual Studio 2013 resulted in "unresolved external symbol" errors. (Bug #73461, Bug #19351573) * With the query cache enabled, certain queries that began with comment sequences could cause invalid memory read errors. (Bug #73434, Bug #19322795) * OLD_PASSWORD() is deprecated, but no warning was produced when it was invoked. (Bug #73376, Bug #19285177) * A server warning error message referred to the obsolete table_cache system variable rather than to table_open_cache. Thanks to Daniël van Eeden for the patch to fix some of the instances. (Bug #73373, Bug #19285052, Bug #75081, Bug #20135780) * Certain queries for which subquery materialization or UNION DISTINCT was used together with a hash index on a temporary table could produce incorrect results or cause a server exit. (Bug #73368, Bug #19297190) * If a table had a NOT NULL column, for an INSERT statement on the table for which the column value was not specified, the server produced ERROR 1048 "Column cannot be null" rather than Warning 1364 "Field doesn't have a default value" if there was a BEFORE trigger with an action type different from ON INSERT. (Bug #73207, Bug #19182009) * The IS_FREE_LOCK() and IS_USED_LOCK() function implementations contained a race condition due to which they could access freed memory when a user lock was concurrently checked and freed. Accessing freed memory could result in an incorrect function return value or server exit. (Bug #73123, Bug #19070633) * SHOW EVENTS in the performance_schema database returned an access-denied error, rather than an empty result as is done for INFORMATION_SCHEMA. Now an empty result is returned. (Bug #73082, Bug #19050141) * LOCK TABLES sometimes acquired an insufficiently strong lock for implicitly locked tables. (Bug #72887, Bug #18913551) * The server no longer logs the following warnings because they are uninformative: Client failed to provide its character set. 'charset' will be used as client character set. (Bug #72543, Bug #18708334) * The ENABLED_LOCAL_INFILE CMake option incorrectly was enabled by default. (Bug #72106, Bug #18448743) * The server could fail to parse inserted strings for SET columns for which the column definition had exactly 64 elements. (Bug #71259, Bug #18020499) * Use of ODBC-format date literals could produce incorrect query results. (Bug #69233, Bug #16812821) * mysql_setpermission failed to properly quote user names in SQL statements that it generated. (Bug #66317, Bug #14486004) * For FEDERATED tables, DELETE FROM tbl_name statements were sent to the remote server as TRUNCATE TABLE tbl_name statements, with possible side effects on transaction handling and AUTO_INCREMENT processing. (Bug #42878, Bug #11751864) * A file created for an internal temporary table could cause problems if the file was orphaned for some reason and the file name was reused for later queries. (Bug #32917, Bug #11747548) * mysql_tzinfo_to_sql failed in STRICT_ALL_TABLES SQL mode if time zone tables contained malformed information. (Bug #20545, Bug #11745851) * For Windows, the noinstall Zip archive was split into two separate Zip archives. The MySQL test suite, MySQL benchmark suite, and debugging binaries/information components were moved into their own Zip archive named mysql-5.7.6-m16-winx64-debug-test.zip for 64-bit and mysql-5.7.6-m16-win32-debug-test.zip for 32-bit. This change was made to reduce the file size of the more common download.