[ This is part 2 of the announcement ] Bugs Fixed, continued
* InnoDB: A type name (srv_shutdown_state) was the same as a variable name. The srv_shutdown_state type name has been changed to srv_shutdown_t. (Bug #16735398) * InnoDB: On Windows, the full-text search (FTS) object ID was not in the expected hexadecimal format. (Bug #16559254) References: See also Bug #16559119. * InnoDB: The buf_buddy_relocate function would perform an unnecessary hash lookup. (Bug #16596057) * InnoDB: Server shutdown would result in a hang with the following message written to the error log: "[NOTE] InnoDB: Waiting for purge thread to be suspended." (Bug #16495065) * InnoDB: InnoDB would fail to start when innodb_data_file_path specified the data file size in kilobytes by appending K to the size value. (Bug #16287752) * InnoDB: Fetching and releasing pages from the buffer pool and tracking the page state are expensive and complex operations. Prior to the bug fix, these operations were performed using a page mutex. Using a page mutex to track several things is expensive and does not scale well. The bug fix separates fetch and release tracking (in-use state) of a page from page I/O state tracking. Fetch and release is now tracked using atomics where available. For portability, a new CMake build option, INNODB_PAGE_ATOMIC_REF_COUNT (default ON), can be used to disable atomic page reference counting on platforms where atomics support is not available. When atomic page reference counting is enabled (default), "[Note] InnoDB: Using atomics to ref count buffer pool pages" is printed to the error log at server startup. If atomic page reference counting is disabled, "[Note] InnoDB: Using mutexes to ref count buffer pool pages" is printed instead. (Bug #16249481, Bug #68079) * InnoDB: An insert buffer merge would cause an assertion error due to incorrectly handled ownership information for externally stored BLOBs. InnoDB: Assertion failure in thread thread_num in file ibuf0ibuf.cc l ine 4080 InnoDB: Failing assertion: rec_get_deleted_flag(rec, page_is_comp(pag e)) (Bug #14668683) * InnoDB: Decreasing the auto_increment_increment value would have no affect on the next auto-increment value. (Bug #14049391, Bug #65225) * InnoDB: Table renaming errors would appear in the LATEST FOREIGN KEY ERROR section of the SHOW ENGINE INNODB STATUS output. (Bug #12762390, Bug #61746) * InnoDB: The page latching algorithm for b-trees would lock sibling leaf pages, prolonging dictionary locks. The bug fix implements prefectching of sibling leaf pages to reduce index lock holding time. (Bug #12734249, Bug #61736) * InnoDB: An INSERT ...ON DUPLICATE KEY UPDATE statement run on a table with multiple unique indexes would sometimes cause events to be incorrectly written to the binary log. (Bug #11758237, Bug #50413) * InnoDB: BUF_READ_AHEAD_AREA would frequently call ut_2_power_up for workloads with a high I/O rate. The calculation is now performed once and the result is stored in the buf_pool_t structure. (Bug #11762242, Bug #54814) * InnoDB: UNIV_SYNC_DEBUG, which was disabled in univ.i with the fix for Bug#16720368, is now enabled. (Bug #69617, Bug #17033591) * Partitioning: Queries using the index_merge optimization (see Index Merge Optimization (http://dev.mysql.com/doc/refman/5.7/en/index-merge-optimizati on.html)) could return invalid results when run against tables that were partitioned by HASH. (Bug #17588348, Bug #70588) References: See also Bug #16862316, Bug #17648468, Bug #18167648. * Partitioning: When no partition had returned a row since the last HA_ERR_KEY_NOT_FOUND error, the use of uninitialized memory in the priority queue used for returning rows in sorted order could lead to a crash of the server. (Bug #17401628) * Replication: When running the server with --gtid-mode=ON, STOP SLAVE followed by START SLAVE resulted in a mismatch between the information provided by INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO and the Slave_open_temp_tables status variable: the INNODB_TEMP_TABLE_INFO table showed that no temporary tables existed, but Slave_open_temp_tables had a nonzero value. (Bug #18236612) * Replication: Attempting to use semisynchronous replication concurrently with SSH connections caused the server to fail. (Bug #18219471) * Replication: When MASTER_HEARTBEAT_PERIOD was not included in CHANGE MASTER TO, the statement reset Slave_heartbeat_period to its default value and Slave_received_heartbeats to 0. Now the heartbeat period is not changed by CHANGE MASTER TO unless explicitly set using MASTER_HEARTBEAT_PERIOD. In addition, the statement no longer resets Slave_received_heartbeats. (Bug #18185490) * Replication: The MASTER_SSL_CRL and MASTER_SSL_CRLPATH options are not available when using yaSSL; MySQL Replication now sets these to NULL automatically whenever yaSSL is enabled. (Bug #18165937) * Replication: mysqlbinlog did not free up memory used by its event buffer when using the --rewrite-db option. (Bug #18164998) * Replication: After setting MASTER_SSL_CRLPATH using a CHANGE MASTER TO statement, the option value was not displayed properly in the SSL_CRL_PATH column of the Performance Schema replication_connection_configuration table. (Bug #18174719) * Replication: Setting --slave-parallel-workers to 1 or greater and starting the slave caused the slave SQL thread to use but not release memory until the slave was restarted with STOP SLAVE and START SLAVE. (Bug #18001777, Bug #71197) * Replication: When a slave was configured with replication filters and --log-warnings=2, every statement which was filtered caused an entry to be written in the error log. For busy servers which generated many statements to be filtered, the result was that the error log could quickly grow to many gigabytes in size. Now a throttle is used for such errors, so that an error message is printed only once in a given interval, saying that this particular error occurred a specific number of times during that interval. (Bug #17986385) * Replication: When the master and the slave both had gtid_mode=OFF set initially, and the slave SQL thread was stopped while there remained anonymous transactions in the relay log, if the slave was then restarted with gtid_mode=ON, then the slave assigned GTIDs such transactions. This could cause problems when the slave was later promoted to a master, as the transactions would be played again on the promoted master's slaves, leading quickly to inconsistencies on those slaves. (Bug #17813449) References: See also Bug #17827018. * Replication: When the master and the slave both had gtid_mode=ON set initially, and the slave SQL thread was stopped while there remained GTID transactions in the relay log, if the slave was then restarted with gtid_mode=OFF, then the slave SQL thread executed any anonymous transaction it encountered without writing its GTID to the binary log, with the result that the GTID was lost. This could cause problems when the slave was later promoted to a master, as the transaction would be played again on the promoted master's slaves, leading quickly to inconsistencies on those slaves. (Bug #17827018) References: See also Bug #17813449. * Replication: When the binary log I/O cache grew to exactly 32768 bytes and the current transaction was preceded by a transaction whose size was greater than 32768 bytes, events could be corrupted when written into the binary log. (Bug #17842137) * Replication: Creating and dropping large numbers of temporary tables could lead to increased memory consumption. (Bug #17806014) * Replication: SHOW SLAVE STATUS used incorrect values when reporting MASTER_SSL_CRL and MASTER_SSL_CRLPATH. (Bug #17772911, Bug #70866) References: This bug was introduced by Bug #11747191. * Replication: Binary log events could be sent to slaves before they were flushed to disk on the master, even when sync_binlog was set to 1. This could lead to either of those of the following two issues when the master was restarted following a crash of the operating system: + Replication cannot continue because one or more slaves are requesting replicate events that do not exist on the master. + Data exists on one or more slaves, but not on the master. Such problems are expected on less durable settings (sync_binlog not equal to 1), but it should not happen when sync_binlog is 1. To fix this issue, a lock (LOCK_log) is now held during synchronization, and is released only after the binary events are actually written to disk. (Bug #17632285, Bug #70669) * Replication: mysqlbinlog --verbose failed when it encountered a corrupt row event in the binary log. Such a row event could also cause the slave to fail. (Bug #17632978) References: See also Bug #16960133. * Replication: When log_warnings is greater than 1, the master prints binary log dump thread information---containing the slave server ID, binary log file name, and binary log position---in mysqld.1.err. A slave server ID greater than 2 billion was printed with a negative value in such cases. (Bug #17641586, Bug #70685) * Replication: When running the slave with --slave-parallel-workers at 1 or greater, setting --slave-skip-errors=all caused the error log to be filled with with instances of the warning Slave SQL: Could not execute Query event. Detailed error: ;, Error_code: 0. (Bug #17581990, Bug #68429) References: See also Bug #17986385. * Replication: When semi-synchronous replication was configured on an independent server with no slaves and rpl_semi_sync_master_wait_no_slave was set to OFF, the master still waited for an ACK from the slave. When rpl_semi_sync_master_wait_no_slave is set to OFF, the master should revert to normal replication when the number of slaves reaches zero during the specified timeout period. Now in such cases the server checks whether semi-synchronous replication is switched on, and, if so, goes on to check whether any slaves are connected. If none are connected, semi-synchronous replication is disabled until such time that the user sets the value of rpl_semi_sync_master_wait_no_slave to ON. (Bug #17510411, Bug #70360) * Replication: A number of possible state messages used as values for the PROCESSLIST_STATE column of the Performance Schema threads table were longer than the width of the column (64 characters). The long state messages have now been rewritten, and shortened accordingly. This fix applies in MySQL 5.7 and later. (Bug #17319380) * Replication: Seconds_Behind_Master in the output of SHOW SLAVE STATUS could under some conditions be reported as 0 when it should have had a value greater than zero. (Bug #17233214) References: See also Bug #16579028. * Replication: The server did not handle correctly the insertion of a row larger than 4 GB when using row-based replication. (Bug #17081415) * Replication: When using row-based replication, an additional auto-increment column on the slave version of a table was not updated correctly; a zero was inserted instead. (Bug #17066269, Bug #69680) * Replication: Statements involving the Performance Schema tables should not be written to the binary log, because the content of these tables is applicable only to a given MySQL Server instance, and may differ greatly between different servers in a replication topology. The database administrator should be able to configure (INSERT, UPDATE, or DELETE) or flush (TRUNCATE TABLE) performance schema tables on a single server without affecting others. However, when replicating from a MySQL 5.5 master to a MySQL 5.5 or later slave, warnings about unsafe statements updating Performance Schema tables were elevated to errors. For MySQL 5.6 and later slaves, this prevented the simultaneous use of performance_schema and GTIDs (see Replication with Global Transaction Identifiers (http://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html )). This fix causes all updates on tables in the performance_schema database to be filtered on the master and not replicated, regardless of the type of logging that is in effect. Prior to this fix, statements using were handled by being marked as unsafe for replication, which caused warnings during execution; the statements were nonetheless written to the binary log, regardless of the logging format in effect. Existing replication behavior for tables in the INFORMATION_SCHEMA database is not changed by this fix. For more information, see MySQL Performance Schema (http://dev.mysql.com/doc/refman/5.7/en/performance-schema.htm l). (Bug #16814264) References: See also Bug #14741537, Bug #18259193. * Replication: Invalid event offsets in the binary log were not always handled correctly, which could lead to replication failure. (Bug #16736412, Bug #69087) * Replication: Semisynchronous replication became very slow if there were many dump threads (such as from mysqlbinlog or slave I/O connections) working at the same time. It was also found that semisynchronous master plugin functions were called even when the dump connections did not support semisynchronous replication, which led to locking of the plugin lock as well as wasting time on necessary code. After this fix, non-semisynchronous dump threads no longer call semisynchronous master functions to observe binary events. (Bug #70218, Bug #17434690) * Replication: The semisynchronous replication plugin was called twice for a DDL statement, incrementing Rpl_semi_sync_master_yes_tx by 2 instead of 1 each time such a statement was executed. (Bug #70410, Bug #17509011) * During compilation, attempts to create sql_yacc.h could be made from multiple directories simultaneously. (Bug #18319335) * MySQL distributions for Solaris now include a source tarball for gcc under the share directory, to comply with GPL conditions resulting from inclusion of the C++ runtime library. (Bug #18306484) * mysql_secure_installation attempted to free memory incorrectly and exited abnormally after a failed attempt to read an option file. (Bug #18255657) * Compilation failed if MySQL was configured with CFLAGS set to include a -Werror option with an argument. (Bug #18173037) * A shared libmysqld embedded server library was not built on Linux. (Bug #18123048, Bug #16430656, Bug #68559) * The default compiler flags are picked up from cmake/build_configurations/compiler_options.cmake. This can be switched off by the CMake -DWITH_DEFAULT_COMPILER_OPTIONS=0 option. However, it could also be switched off for the C or C++ compilers if the CFLAGS or CXXFLAGS environment variables were set. Those environment variables now have no such effect. To specify compiler flags, use -DWITH_DEFAULT_COMPILER_OPTIONS=0 option, or the -DCMAKE_C_FLAGS=flags and -DCMAKE_C_FLAGS=flags options can be used. (Bug #18158812) * While printing the server version, the mysql client did not check for buffer overflow in a string variable. (Bug #18186103) * mysql_secure_installation exited if mysql_install_db had been run with the --skip-random-passwords option. (Bug #18181665) * When the optimizer attempted to use MRR or DS-MRR to read an internally created temporary table, the server could exit or raise an assertion. (Bug #18172819) * A bug in the range optimizer code that handles index merge could lead to a server exit or missing rows in the result set. (Bug #18136628) * Building MySQL from source on Windows using Visual Studio 2008 would fail with an identifier not found error due to a regression introduced by the patch for Bug#16249481. (Bug #18057449) * Repeated rebuilds in the same source tree resulted in libmysqld.a increasing in size each time. (Bug #18082702) * mysql_config improperly produced nonempty output when invoked with the --libmysqld-libs (or a synonym) if MySQL was configured with the WITHOUT_SERVER option. (Bug #18102839) * Type casting during LIKE pattern match operations could cause a server exit. (Bug #18114294) * SHOW GRANTS could be used to view the password hash for a proxied user. Password hash display now requires the SUPER privilege. (Bug #18057514) * On Microsoft Windows, the rw-lock backup implementation for the my_atomic_* functions was always used. Now, the native Microsoft Windows implementation is used, where available. (Bug #18054042) * Link failures were fixed on Solaris SPARC and Linux 64-bit platforms. (Bug #18004599) * When tables are reopened from the table cache and the current thread is not instrumented for the Performance Schema, the server exited attempting to populate OWNER_THREAD_ID in the table_handles table. (Bug #18047865) * A memory leak occurred within the Performance Schema during server startup. (Bug #18003651) * storage/ndb/CMakeLists.txt reset the CMake cache for some compiler flags for which the result should have been saved. (Bug #17949504) * Compilation used different warning flags for Clang and GCC, producing different warning output depending on which compiler you use. Warning output is now consistent for the two compilers. (Bug #17959689) * Building libevent was incorrectly dependent on MySQL being configured with the -DWITH_INNODB_MEMCACHED=1 option. (Bug #17964544) * On Solaris, configuration failed if no STL_LIBRARY_NAME was found. (Bug #17954277) * The audit log plugin could cause a server exit during log file rotation operations when there were many operations happening for multiple connections. (Bug #17930339) * The SUM_SORT_MERGE_PASSES column value in the Performance Schema events_statements_summary_by_digest table was calculated incorrectly. (Bug #17938255) * During shutdown, a mutex that was still locked could be removed, causing a server exit. (Bug #17959898) * If the Performance Schema events_statements_summary_by_digest table was full when a statement with a new digest was found, the Performance_schema_digest_lost status variable was not incremented. (Bug #17935314) * FORCE INDEX [FOR ORDER BY] (index_name) did not work for joins. The fix for this bug also also changes the warning created for EXPLAIN. Instead of printing only {IGNORE|USE|FORCE} INDEX it now also prints FOR {GROUP BY|ORDER BY|JOIN} if that was specified in the query. (Bug #17889511) * Shutdown of open connection threads could fail to occur cleanly during server shutdown. (Bug #17863690) * DECIMAL NOT NULL items could return NULL in subqueries. (Bug #17921777) * mysql_secure_installation exited if it connected using SSL and the user had an expired password. (Bug #17880395) * With the compressed client/server protocol enabled, Performance Schema statement instrumentation could raise an assertion. (Bug #17794846) * For debug builds, inserts into a multiple-table view could raise an assertion. (Bug #17834434) * The optimizer could push down a condition when the index did not have the key part present in the condition. (Bug #17814492) * For debug builds, the filesort algorithm could raise a spurious assertion. (Bug #17734642) * The mysql_get_option symbol was missing from libmysql.dll. (Bug #17733103) * Build and execution problems were fixed for builds made with gcc 4.8.1 in 32-bit mode on SPARC. (Bug #17740390) * The server could exit when executing an INSERT ... SELECT with UNION, ROLLUP, and ON DUPLICATE KEY UPDATE with a subquery. (Bug #17727506) References: This bug is a regression of Bug #16967281. * The patch for Bug #16041903 introduced an incorrect DBUG_ASSERT that in debug builds raised a spurious assertion. (Bug #17746721) * Valgrind errors were produced during row comparator setup. (Bug #17755540) * In some cases, UNIX_TIMESTAMP() could return NULL when it should return 0. (Bug #17728371) * An assertion could be raised if a filesort failed to resize its main buffer when record properties changed. (Bug #17757914) * The resetconnection command for mysql did not report proper errors if the server was down or the user password had expired. (Bug #17772561) * Compilation failed if MySQL was configured using -DWITH_LIBWRAP=1. (Bug #17738805) * Contraction information in a collation could be mishandled, resulting in incorrect decisions about whether a character is part of a contraction, and miscalculation of contraction weights. (Bug #17760379) * The cache used for the Index Merge access method was freed only after successful retrieval of all rows. Interruption or failure of the operation led to a file descriptor leak. (Bug #17708621) * The optimizer calculated the cost for joined buffer scans incorrectly, evaluating rows filtered out by attached conditions not once, but once per join buffer. (Bug #17694707) * Incorrect reference counting in the range optimizer module resulted in potential for missing or duplicate rows in the query result set. (Bug #17619119) * Using the mysqldump --set-gtid-purged option with no value caused mysqldump to crash. (Bug #17650245) * A race condition between Performance Schema statement event threads led to a server exit. (Bug #17637970) * For debug builds, an aggregate function in a subquery join condition could raise an assertion. (Bug #17602807) * If SAFE_MUTEX was enabled (true only for debug builds), THR_LOCK_mutex was used before being initialized. (Bug #17641055, Bug #70639) * After the fix for Bug #16409270, it was not possible to #include <mysql.h> following #include <windows.h>. (Bug #17514554) * An addressing error in accessing the join buffer could produce invalid results or a server exit. (Bug #17513341) * The parser permitted some queries with multiple ORDER BY clauses, which then failed during execution and caused a server exit. (Bug #17473479) * For debug builds, the server could exit for statements that inserted into a BLOB column declared as NOT NULL using a subquery that retrieved from a BLOB column and included GROUP BY NULL. (Bug #17458917) * Insufficient cleanup after removal of a SELECT_LEX structure caused dereferencing of a NULL pointer and a server exit. (Bug #17458169) * Within a CASE expression, use of a subquery referencing the VALUES() function could cause a server exit. (Bug #17458914) References: This bug is a regression of Bug #14789787. * mysql_config incorrectly included some flags to generate compiler warning output. (Bug #17400967) * The parser silently accepted duplicate ORDER BY clauses and/or LIMIT clauses before ORDER BY clauses in subqueries. These caused failures during query execution. Fixing this problem results in some changes in parser behavior. The parser no longer accepts: + A LIMIT clause before an ORDER BY clause + A LIMIT clause in a parentheses-less SELECT statement before a UNION keyword + An INTO clause after a PROCEDURE ANALYSE() clause (Bug #17426017, Bug #17703542, Bug #17727401) * SET PASSWORD combined with assignment of a variable from a subquery result could raise an assertion. (Bug #17458750) * On Windows, mysql_secure_installation exited if the root password was expired. (Bug #17415203) * For CASE expressions involving floating-point numbers, the max_length and decimal values could be computed incorrectly. The logic for CASE was corrected to be the same as for COALESCE(), which performs a similar operation. (Bug #17388045) * If accepting a connection attempt failed due to an out-of-memory error, the server could access a stale thread structure for a previously disconnected connection, resulting in Valgrind errors. (Bug #17398792) * With semi-join optimization enabled, queries with nested subqueries could cause a server exit due to incorrect resolution of references to columns in the middle query block. (Bug #17398972) * The SHA256 password authentication algorithm allocated a buffer one byte too short. (Bug #17397073) * A client crash occurred if mysql_set_server_option() or several other C API functions were called before mysql_real_connect(). (Bug #17338958) * In some cases, the optimizer wrote fixed-length temporary MyISAM tables to disk rather than variable-length temporary tables. (Bug #17231940) * Enabling the validate_password plugin could result in incorrect password hashes being stored in the mysql.user table. (Bug #17065383) * For debug builds, the second execution of a prepared statement processed using a semi-join could cause a server exit. (Bug #16988465) * A spurious assertion was raised for queries processed using a semi-join LooseScan optimization that required rows to be returned in order. (Bug #16977389) * A circular dependency problem involving sql/sql_builtin.cc was resolved. (Bug #16877045) * For accounts authenticated using the sha256_password plugin, setting the password after the password had been expired did not clear the password-expired flag. (Bug #16872181) * During server shutdown, file information was freed before calling query_logger.cleanup(), leading to a memory leak. (Bug #16859266) * For prepared INSERT INTO ... SELECT statements, nonexistent column names were not reported during statement preparation, but only later at statement execution. (Bug #16820562) * Multiple-table updates failed to update under certain conditions. (Bug #16767011) * Crash recovery of temporary tables used uninitialized memory. (Bug #16754540) * On Mac OS X 10.7, a race condition involving vio_shutdown() and the select-based implementation of vio_io_wait() could cause a server exit. (Bug #16354789, Bug #17733393) * Host names in example URLs used within the source code were replaced by names in the example.com domain, the domain intended by IANA for this purpose. (Bug #15890092) * On Mac OS X, preloading of client plugins specified with the LIBMYSQL_PLUGINS environment variable could fail unless the plugins were located in the hardwired default plugin directory. The C API now checks during plugin preloading for a LIBMYSQL_PLUGIN_DIR environment variable which can be set to the path name of the directory in which to look for client plugins. (Bug #13994567, Bug #18110355) * For utf8 and utf8mb4 strings, handler functions unnecessarily called a Unicode conversion function. (Bug #14057034) * Certain (... NULL ...) IN (...) expressions returned NULL when they should return 0, such as SELECT (NULL, 1) IN ((0, 0), (0, 0)). (Bug #13944462) * Several -W warning flags were turned off for compilation in maintainer mode if MySQL was configured with -DWITH_INNODB_MEMCACHED=1. (Bug #13898319) * The optimizer set up for dynamic range access in some cases where range access cannot be used, resulting in fallback to a table scan. (Bug #13814468) * Executing mysqladmin shutdown for a server running with the thread pool plugin enabled and servicing a large number of concurrent connections caused the server to exit abnormally. (Bug #13788920) * Calling the ExtractValue() function with an invalid XPath expression could in some cases lead to a failure of the server. (Bug #12428404, Bug #61065) * Use of a nonmulti-byte algorithm for skipping leading spaces in multi-byte strings could cause a server exit. (Bug #12368495) * With ONLY_FULL_GROUP_BY SQL mode enabled, a query that uses GROUP BY on a column derived from a subquery in the FROM clause failed with a column isn't in GROUP BY error, if the query was in a view. (Bug #11923239) * For the utf8_bin collation, ORDER BY LOWER(col_name) could produce incorrect ordering. (Bug #69005, Bug #16691598) * Several issues identified by the Coverity static analysis tool were fixed. Thanks to Honza Horak for the patch. (Bug #70830, Bug #17760511) * On Windows, the --local-service server option did not work, and was not displayed in the --help message. (Bug #69637, Bug #17049656) * The server wrote an excessive number of "Sort aborted" messages to the error log. (Bug #70173, Bug #17372396) * It was not possible to query a view with an ORDER BY clause that referenced an alias in the SELECT clause of the view definition, unless all columns in the view were named in the select list. To handle this problem, the server now writes a view differently into the .frm file that stores the view definition. If you experience view-evaluation errors such as just described, drop and recreate the view so that the .frm file contains the updated view representation. (Bug #69678, Bug #17077305) * Overhead was reduced within critical sections of the my_fopen() and my_register_filename() mysys functions. Thanks to Po-Chun Chang for the patch. (Bug #70848) * The prototype of the Performance Schema instrumentation API mysql_cond_timedwait() call was fixed to be drop-in compatible with pthread_cond_timedwait(). This fix affects only implementers of third-party plugins. (Bug #70628, Bug #17702677) * For debug builds, JSON-format EXPLAIN statements for queries that involve semi-join materialization could cause a server exit. (Bug #70014, Bug #17305943) * For an existing user, GRANT with an empty password (IDENTIFIED BY [PASSWORD] '') did not change the password. (Bug #69899, Bug #17256161) * The make_atomic_cas_body64 implementation on IA32 with gcc but without gcc builtins could be miscompiled due to an incorrect constraint. The patch also causes MySQL to use builtin atomics when compiled using Clang. (Bug #63451, Bug #17242996) * The wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_sync mutex was not properly instrumented for the Performance Schema. (Bug #70939, Bug #17813333) * Complex updates of Performance Schema tables involving joins or subqueries failed to update every row. (Bug #70025, Bug #17309657) * For the path specified with the --basedir option, mysql_plugin attempted to unlink the path rather than free the memory in which the path was stored. (Bug #69752, Bug #17168602) * Compilation problems were fixed for errors reported by Clang and gcc when compiling in C++11 mode. (Bug #66803, Bug #14631159) * The optimizer could choose ref access over eq_ref access when cost of a nonunique access was evaluated before cost of a unique index. (Bug #54808, Bug #11762236) * COUNT(DISTINCT) sometimes produced an incorrect result when the last read row contained a NULL value. (Bug #68749, Bug #16539979, Bug #71028, Bug #17867117) * When run by root, mysqld --help --verbose exited with a nonzero error code after displaying the help message. (Bug #70058, Bug #17324415) * MySQL client programs from a Community Edition distribution could not connect using SSL to a MySQL server from an Enterprise Edition. This was due to a difference in certificate handling by yaSSL and OpenSSL (used for Community and Enterprise, respectively). OpenSSL expected a blank certificate to be sent when not all of the --ssl-ca, --ssl-cert, and --ssl-key options were specified, and yaSSL did not do so. To resolve this, yaSSL has been modified to send a blank certificate when an option is missing. (Bug #68788, Bug #16715064) * sql_resolver.cc referred to partitioning code that should have been protected by an #ifdef, even when MySQL was configured with -DWITH_PARTITION_STORAGE_ENGINE=OFF. (Bug #71010, Bug #17876794) * An incorrect result could be returned for a query with an IF() predicate in the WHERE clause combined with OUTER JOIN in a subquery that is transformed to a semi-join. (A workaround is to disable semi-join using SET optimizer_switch='semijoin=off';) (Bug #70608, Bug #17600176) * Downloading of the Google Mock library could fail during configuration. This is fixed by requiring CMake 2.8.2 or higher. (Bug #69854, Bug #17231722) * A full-text search combined with derived tables (subqueries in the FROM clause) caused a server exit. Now if a full-text operation depends on a derived table, the server produces an error indicating that a full-text search cannot be done on a materialized table. (Bug #68751, Bug #16539903) * Some scripts displayed out-of-date information regarding where to report bugs. (Bug #68742, Bug #16530527) * CMake produced not-useful warnings about INTERFACE_LINK_LIBRARIES policy. (Bug #71089, Bug #17905155, Bug #17894997) * CMake produced a warning in ssl.cmake due to malformed syntax. (Bug #71094, Bug #17905144) * Previously, the first stage executed within a statement was stage/sql/init. This collided with a different stage named init and was incompatible with the starting stage for SHOW PROFILE. The first stage executed within a statement is now named stage/sql/starting. (Bug #71201, Bug #17993294) * Some files in the Performance Schema file_instances table were not being removed because the file-removal operation was not instrumented. (Bug #69782, Bug #17209750) * mysqldump --single-transaction acquired metadata locks for each dumped table but did not release them until the dump operation finished. Consequently, other DDL operations on a dumped table blocked even after the table itself had been dumped. mysqldump now attempts to release metadata locks earlier. (Bug #71017, Bug #17862905) * Updating a FEDERATED table with UPDATE... JOIN caused a server exit when the local table contained a single row and that row could be joined to a row in the FEDERATED table. (Bug #68354, Bug #16324629) * The mysqladmin, mysqlbinlog, mysqlcheck, mysqldump, mysqlimport, mysqlslap, and mysqlshow programs now support a --secure-auth option that prevents sending passwords to the server in old (pre-4.1) format. This option is enabled by default; use --skip-secure-auth to disable it. (Bug #69051, Bug #16723046) * During configuration, CMake improperly checked for the C++ header file cxxabi.h. (Bug #71268, Bug #18147458) * On Mac OS X, the libmysqlclient dylib file linked to itself. (Bug #61699, Bug #13890998, Bug #61243, Bug #12590037) * gcov printed warnings without file names. (Bug #33269, Bug #11747622) * cmake/configure.pl listed instances of WITH_COMMENT rather than the correct option COMPILATION_COMMENT. (Bug #65834, Bug #14298560) * FLUSH STATUS cleared a variable that could result a subsequent implicit commit of an XA transaction causing a server exit. (Bug #70854, Bug #17911445) * A deadlock error occurring during subquery execution could cause an assertion to be raised. (Bug #69969, Bug #17307201) * The Performance Schema stage/sql/Waiting to get readlock instrument is no longer used and has been removed. (Bug #71298, Bug #18035404) * A query that creates a temporary table to find distinct values and has a constant value in the projected list could produce incorrect results. (Bug #70657, Bug #17634335) * mysqlbinlog leaked memory in relation to --rewrite-db processing. (Bug #71283, Bug #18027692) * Messages written by the server to the error log for LDML collation definition problems were missing the collation name. (Bug #68144, Bug #16204175) * Configuring with -DWITH_DEBUG=1 did not have the same effect as configuring with -DCMAKE_BUILD_TYPE=Debug. (Bug #70647, Bug #17632854) * mysqlcheck did not correctly handle table names containing dots. (Bug #68015, Bug #16064833) * Previously, for EXPLAIN output, the rows-examined estimate for Performance Schema tables always displayed as 1000. Now a more accurate estimate is displayed based on sizing parameters used when allocating memory for each table. This results in no change of behavior because Performance Schema tables have no indexes. (Bug #71278, Bug #18024455) * Optimizer trace output from the range optimizer could include raw binary data and generate unprintable characters. Now binary data is printed in hex format. (Bug #71273, Bug #18023222) * The -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMake option was ignored but should not have been. If -DWITH_EXAMPLE_STORAGE_ENGINE=0 is given, the EXAMPLE storage engine is built as a plugin. (Bug #70859, Bug #17772560) References: See also Bug #18324650. * For logarithmic functions, if the argument is less than or equal to 0.0E0, response is now as follows: In strict mode, the error "Invalid argument for logarithm" is reported. In non-strict mode, a NULL value is returned. (Bug #50507, Bug #11758319) * Aggregating the results of a subquery in the FROM clause could produce incorrect results. (Bug #71244, Bug #18014565) * Some BETWEEN expressions on unsigned values were evaluated using signed arithmetic. Thanks to Xiaobin Lin for the patch. (Bug #70622, Bug #17606942) * For system variables that take a string value, SET statements permitted an unquoted value, but values that contained dots were parsed incorrectly and only part of the value was assigned. For example, SET GLOBAL slow_query_log_file = my_slow.log assigned the value my_slow. Now such values must be quoted or an error occurs. (Bug #69703, Bug #17075846) * A temporal literal string without delimiters and more than 14 digits was validated as a TIMESTAMP/DATETIME value with a two-digit precision fractional seconds part. But fractional seconds should always be separated from other parts of a time by a decimal point. (Bug #69714, Bug #17080703) * On Windows, mysql_install_db.pl could be run only from within the bin directory under the installation directory. (Bug #42421, Bug #11751526) * mysql_install_db referred to the obsolete mysqlbug script for reporting problems. It now refers to http://bugs.mysql.com/ instead. (Bug #29716, Bug #11746921) * The deprecated msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, and mysqlaccess utilities were removed. (Bug #27482, Bug #69012, Bug #69014, Bug #69015, Bug #69016, Bug #69017, Bug #11746603, Bug #16699248, Bug #16699279, Bug #16699284, Bug #16699317, Bug #18179576) ---------------------- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql