* The code base was modified to account for new warning checks introduced by gcc 4.8. (Bug #16729109)
* Compiling failed with -DMY_ATOMIC_MODE_RWLOCKS=1 or on platforms on which MySQL did not support lockless atomic operations (such as ARM). (Bug #16736461) * In a prepared statement or stored routine, if the HAVING clause of a subquery referenced some column of the GROUP BY of the parent query, the server could exit. (Bug #16739050) * Password rewriting in the general query log now also applies to prepared statements. (Bug #16732621) * The deprecated thread_concurrency system variable has been removed. (Bug #16661195) * Overhead for setting PROCESSLIST_STATE values in the Performance Schema THREADS table has been reduced. (Bug #16633515) * The read-only open_files_limit system variable did not show maximum number of open files the mysqld process could have, but instead the number that was requested after adjusting the --open-files-limit command-line option. (Bug #16657588) * Kill handling in the thread pool plugin was subject to timeout problems and Valgrind warnings. (Bug #16633880) * Within a stored procedure, repeated execution of a prepared CREATE TABLE statement for a table with partitions could cause a server exit. (Bug #16614004) * Some problems compiling on Solaris in 64-bit mode with gcc and g++ were corrected. (Bug #16555106) * The Windows authentication plugin failed to free a context buffer for each connection. (Bug #16591288) * The DBUG_PRINT() macro unnecessarily evaluated arguments when debugging was not enabled. (Bug #16556597) * Some rows for a session could be missing sporadically from the Performance Schema session_connect_attrs table while the session was executing a workload. (Bug #16576980) * The server could make the wrong decision about whether an account password was expired. (Bug #16604641) * Enabling the query cache could cause repeatable-read transactions to return incorrect results. (Bug #16497925) * When index condition pushdown was used on a descending range scan and the first range interval did not contain any qualifying records, the result of the range scan could be empty even if other range intervals contained qualifying records. (Bug #16483273) * The server could attempt a filesort operation for a zero-size sort length, causing it to exit. (Bug #16503160) * SHOW WARNINGS and SHOW ERRORS did not properly reset the warning count. (Bug #16522662) * my_load_defaults() was modified to accommodate some problems under compilation with gcc 4.7.2 that could cause a client crash during option processing. (Bug #16497125) * Opening a cursor on a SELECT within a stored procedure could cause a segmentation fault. (Bug #16499751) References: This bug is a regression of Bug #14740889. * Geometry methods that worked with WKB data performed insufficient input data validation, which could cause Valgrind errors or a server exit. (Bug #16510712, Bug #12772601) * Missing variable initialization led to incorrectly returning an error from st_select_lex_unit::explain and led to a failed assertion. (Bug #16484966) * Clients could determined based on connection error message content whether an account existed. (Bug #16513435) * CREATE TABLE or ALTER TABLE can fail if the statement specified unsupported options or something was missing. Previously, such errors were returned as ER_ILLEGAL_HA. Now they are returned as the new ER_MISSING_HA_CREATE_OPTION error. (Bug #16498740) * Failure to handle a full-text search wildcard properly could cause the server to exit. (Bug #16446108) * Some INFORMATION_SCHEMA queries that used ORDER BY did not use a filesort optimization as they did in MySQL 5.5. (Bug #16423536) * Performance Schema parameter autosizing at startup did not take into account later autosizing changes to other startup parameters on which the Performance Schema parameters depended. (Bug #16430532) * The WKB reader for spatial operations could fail and cause a server exit. (Bug #16451878) * For queries using ref access on CHAR and VARCHAR data types, the ref access condition could be evaluated again as part of the query condition or pushed down as an index condition to the storage engine. (Bug #16437630) * A full-text search syntax error failed to print to standard output. (Bug #16429688, Bug #16765397) * Optimizer heuristics inappropriately preferred range access over ref access in cases when the ref access referred to a column of a table earlier in the join seqence. (Bug #16437940) * The ER_OUTOFMEMORY error was used in some places without the proper parameter being passed, resulting in incorrect diagnostic output. (Bug #16449659) * Unlike MyISAM, InnoDB does not support boolean full-text searches on nonindexed columns, but this restriction was not enforced, resulting in queries that returned incorrect results. (Bug #16434374) * If a table has been marked as containing only NULL values for all columns if it is a NULL-complemented row of an outer join, then rollup on the column which cannot be nullable results in a server exit. (Bug #16436014) * If the optimizer was using a loose index scan, the server could exit while attempting to create a temporary table. (Bug #16436567) * Incorrect results or a server exit could be caused by a reference to an aggregated expression inside a nested subquery, where the aggregated expression was evaluated in a query block more than two levels outer to the reference. (Bug #16436383) * In debug builds, failure in the range optimizer for an ER_LOCK_DEADLOCK or ER_LOCK_WAIT_TIMEOUT error could go undetected and cause the filesort code to raise an assertion. In release builds, this problem manifested as clients receiving an ER_FILSORT_ABORT rather than the correct error code. (Bug #16366881) * If a lock timeout resulted from an UPDATE with a nested SELECT being unable to access rows being accessed by another thread, the error could go unchecked and cause an assertion to be raised later. (Bug #16367039) * In debug builds, failure in the range optimizer for an ER_LOCK_DEADLOCK or ER_LOCK_WAIT_TIMEOUT error could go undetected and cause an assertion to be raised when a response was sent to the client. In release builds, this problem manifested as clients receiving an OK for a statement that had failed. (Bug #16366994, Bug #16247110) * Manually-created accounts (using INSERT) with a malformed password effectively had no password. (Bug #16414396) * Several scripts in the sql-bench directory that were supposed to be executable did not have the executable access bit set. (Bug #16395606) * For debug builds, DBUG_EXPLAIN resulted in a buffer overflow when the debug system variable value was more than 255 characters. (Bug #16402143) * For debug builds, with an XA transaction in IDLE or PREPARED status, execution of a query with the query cache enabled could cause a server exit. (Bug #16388996) * A race condition in vio_shutdown() could cause a server exit. (Bug #16354789) * An assertion could be raised when creating a index on a prefix of a TINYBLOB column in an InnoDB column. (Bug #16368875) * For debug builds, set_field_to_null() could raise an assertion for attempts to insert NULL into a NOT NULL column. (Bug #16362246) * A server exit could occur for queries of the form SELECT (SELECT 1 FROM t1) IN (SELECT a FROM t1) when attempting to evaluate the constant left-hand argument to the IN subquery predicate. (Bug #16369522) * An assertion could be raised if, in greedy search mode, the optimizer identified join orders but was unable to choose one. (Bug #16361170) * Debugging flags used to set the debug system variable were ignored if they were a prefix of keywords already in the debugging list. (Bug #16415978) * If the primary key for the mysql.proc system table was removed (an unsupported and not-recommended operation), the server exited for subsequent stored procedure invocation. Similar problems could occur for other system tables. Now an error occurs instead. (Bug #16373054) * Oracle RPM packages were unusable by yum due to issues with the obsoletes line in the .spec file causing yum to interpret the package as obsoleting itself. (Bug #16298542) * Re-execution of a stored procedure could cause a server exit in Item_field::fix_outer_field. (Bug #16317443) * A GROUP_CONCAT() invocation containing subquery having an outer reference caused the server to exit. (Bug #16347343) * For debug builds, GROUP_CONCAT(... ORDER BY) within an ORDER BY clause could cause a server exit. (Bug #16347426) * The validate_password plugin did not always enforce appropriate constraints against assigning empty passwords. (Bug #16346443) * For debug builds, the server could exit for queries involving a nested subquery, a subquery tranformed into a semi-join and using a view. (Bug #16317076) * No warning was generated if a duplicate index existed after dropping a column associated with a multiple-column index. (Bug #16315351) * SELECT DISTINCT with WITH ROLLUP could result in a Duplicate entry 'NULL' for key '<auto_key>' error. (Bug #16314835) * The server could exit in do_copy_not_null() due to an improper NULL-value check. (Bug #16316564) * Transforming some subqueries that select temporal or BIGINT types or to a semijoin caused a server exit on the second execution of prepared statements or stored programs. (Bug #16319671) * The range optimizer could set up incorrect ranges for queries that used XOR operations. (Bug #16272562) * mysql_secure_installation could not connect to the server if the account used had an expired password. It invoked mysql noninteractively, resulting in that program failing to connect. Now mysql supports a --connect-expired-password option that indicates to the server that it can handle sandbox mode for expired-password accounts even if invoked noninteractively, and mysql_secure_installation invokes mysql with this option. (Bug #16248315) * If loose index scan was used on a query that used MIN(), a segmentation fault could occur. (Bug #16222245) * The usual failed-login attempt accounting was not applied to failed COM_CHANGE_USER commands. (Bug #16241992) * For debug builds, an assertion could be raised if a failed LOAD DATA INFILE statement will followed by an INSERT for the same table within the same session. (Bug #16240526) * For debug builds, an assertion was incorrectly raised for queries executed using eq_ref access and filesort. (Bug #16164885) * A user variable referenced during execution of a prepared statement is set to memory that is freed at the end of execution. A second execution of the statement could result in Valgrind warnings when accessing this memory. (Bug #16119355) * Misoptimization of left expressions in prepared statements could cause a server exit. (Bug #16095534) * A prepared statement that used GROUP_CONCAT() and an ORDER BY clause that named multiple columns could cause the server to exit. (Bug #16075310) * The server could exit the second time a stored routine was invoked that performed an UPDATE or DELETE using an invalid column in the join clause. (Bug #16078466) * If my_write() encountered a disk-full condition, it could return an incorrect error value. (Bug #16078792) * Creating a FEDERATED table without specifying a connection string caused a server exit. (Bug #16048546) * ORDER BY MATCH ... AGAINST could cause a server exit. (Bug #16073689) * Certain queries containing ORDER BY or SQL_CALC_FOUND_ROWS could cause a server exit for JSON-format EXPLAIN statements. (Bug #16077396, Bug #16078113) * Client programs from MySQL 5.6.4 and up could confuse older servers during the connection process by using newer protocol features not understood by older servers. (Bug #15965409) * When a partition is missing, code in ha_innodb.cc would retry 10 times and sleep for a microsecond each time while holding LOCK_open. The retry logic for partitioned tables was introduced as a fix for Bug#33349 but did not include a test case to validate it. This fix removes the retry logic for partitioned tables. If the problem reported in Bug#33349 reappears, a different solution will be explored. (Bug #15973904) * The mysql.server script exited with an error if the status command was executed with multiple servers running. (Bug #15852074) * Use of the VALUES() function in the VALUES() clause of an INSERT statement could result in Valgrind warnings or an unstable server, possibly leading to a server exit. (Bug #14789787) * In some cases, REVOKE could fail to revoke the GRANT OPTION privilege. (Bug #14799187) * The Debug Sync facility could lose a signal, leading to a spurious ER_DEBUG_SYNC_TIMEOUT error. (Bug #14765080) * The mysql client allocated but did not free a string after reading each line in interactive mode, resulting in a memory leak. (Bug #14685362) * The optimizer trace could print ranges for key parts that were not usable for range access. (Bug #14615536) * Killing a connection while it was in the process of disconnecting could lead to an assertion being raised, Valgrind warnings, and general unstability. (Bug #14560522) * When running a query on INFORMATION_SCHEMA.INNODB_BUFFER_PAGE that requested table_name and index_name values, query results would include index pages without table_name or index_name values. (Bug #14529666) * Several COM_xxx commands in the client-server protocol did not have length checks for incoming network packets, which could result in various problems for malformed input. (Bug #14525642) * Passwords in statements were not obfuscated before being written to the audit log. (Bug #14536456) * If used to process a prepared CALL statement for a stored procedure with OUT or INOUT parameters, mysql_stmt_store_result() did not properly set the flags required to retrieve all the result sets. (Bug #14492429) * INSERT ... ON DUPLICATE KEY UPDATE on a view could cause a server exit. (Bug #14261010) * With the thread pool plugin in use, normal connection termination caused the Aborted_clients status variable to be incremented. (Bug #14081240) * A build failure occurred if HAVE_CRYPT was 0. (Bug #14036425) * Grouping by an outer BLOB column in a subquery caused a server exit. (Bug #13966809, Bug #14700180) * On Windows, command-line options of the form --opt_name="opt_value" worked but --opt_name='opt_value' did not. On all platforms, for Performance Schema options of the form --performance_schema_instrument="instrument=value", invalid instrument names now are rejected. (Bug #13955232) * The server could exit after failing to handle an out-of-memory condition in open_normal_and_derived_tables(). (Bug #13553905) * The server could exit due to improper handling of the error from an invalid comparison. (Bug #13009341) * MySQL Installer, if run in custom install or change mode, offered installation options that had no effect. (Bug #12928601) * The thread pool plugin produced an error message containing an incorrect maximum thread_pool_prio_kickup_timer value. (Bug #12817590) * Metadata returned for a prepared SELECT statement that had outer joins could indicate that columns containing NULL values were NOT NULL. (Bug #12818811) * For debug builds, the server could exit as a result of a series of statements that used a user variable such that its character set/collation changed from statement to statement. (Bug #12368577) * Incorrect results could be returned from queries that used several aggr_func(DISTINCT) functions (where aggr_func() is an aggregate function such as COUNT()) when these referred to different columns of the same composite key. (Bug #12328597) * The CMake check for unsigned time_t failed on all platforms. (Bug #11766815) * An identifier containing special characters could become too long after conversion of such characters to encoded format, resulting in SQL errors or failure to find files. (Bug #11766880) * mysql_convert_table_format ignored --engine or -e as a synonym for the --type option. (Bug #11756950) * mysqladmin debug causes the server to write debug information to the error log. On systems that supported mallinfo(), the memory-status part of this output was incorrect in 64-bit environments when mysqld consumed more than 4GB memory. Now the server uses malloc_info() to obtain memory-status information. malloc_info() does not report the memory that the glibc malloc() implementation internally allocates using mmap(). However, it does provide the memory usage information in all the memory arenas. This bug fix also involves a change of output format. The server now writes memory information in XML format rather than as plain text. Example: Memory status: <malloc version="1"> <heap nr="0"> <sizes> <size from="33" to="33" total="1056" count="32"/> <size from="65" to="65" total="65" count="1"/> <size from="113" to="113" total="226" count="2"/> <size from="129" to="129" total="2451" count="19"/> <size from="145" to="145" total="290" count="2"/> <size from="161" to="161" total="1288" count="8"/> <size from="209" to="209" total="418" count="2"/> </sizes> <total type="fast" count="0" size="0"/> <total type="rest" count="66" size="5794"/> <system type="current" size="10833920"/> <system type="max" size="10833920"/> <aspace type="total" size="10833920"/> <aspace type="mprotect" size="10833920"/> </heap> <total type="fast" count="0" size="0"/> <total type="rest" count="66" size="5794"/> <system type="current" size="10833920"/> <system type="max" size="10833920"/> <aspace type="total" size="10833920"/> <aspace type="mprotect" size="10833920"/> </malloc> (Bug #11746658) * When an ALTER TABLE operation was performed with an invalid foreign key constraint, the error reported was ER_CANT_CREATE_TABLE rather than ER_CANNOT_ADD_FOREIGN. (Bug #64617, Bug #13840553) * If an account had a nonzero MAX_USER_CONNECTIONS value, that value was not always respected. (Bug #65104, Bug #14003080) * On 64-bit Mac OS X systems, CMake used x86 rather than x86_64 when determining the machine type. (Bug #58462, Bug #11765489) * For failure to create a new thread for the event scheduler, event execution, or new connection, no message was written to the error log. This could lead to the impression that the event scheduler was running normally when it was not. (Bug #67191, Bug #14749800, Bug #16865959) * Compilation on Solaris using gcc produced incorrect builds for 32-bit systems. (Bug #68675) * The mysql client incorrectly used latin1 for certain comparisons even if started with a multibyte default character set, resulting in a client crash. (Bug #68107, Bug #16182919) * In option files, the server could misinterpret option settings if the value was given after the option name with no = sign in between. (Bug #67740, Bug #15930031) * The url columns in the mysql datatbase help tables were too short to hold some of the URLs in the help content. These columns are now created as type TEXT to accommodate longer URLs. (Bug #61520, Bug #12671635) * mysqld --help and mysqld --verbose --help performed unnecessary logging. (Bug #68578, Bug #16442113) * Performance of prepared DML statements containing ? parameter substitution markers was improved under row-based logging format: Since the binary log in this case need not include the statement text, and since the statement will not be forced to statement-based logging as some DDL statements might be, there is no need to substitute ? markers to produce a statement suitable for logging. (Bug #67676, Bug #16038776) * ELT(LEAST(...),..) could return a non-NULL value even if LEAST() returned NULL. (Bug #67578, Bug #16171537) * InnoDB does not support full-text parser plugins, but failed to report an error if they were specified. Now an ER_INNODB_NO_FT_USES_PARSER error is returned. (Bug #62004, Bug #12843070) * If Loose Index Scan was used to evaluate a query that compared an integer column to an integer specified as a quoted string (for example, col_name = '1'), the query could return incorrect results. (Bug #68473, Bug #16394084) * IF() function evaluations could produce different results when executed in a prepared versus nonprepared statement. (Bug #45370, Bug #11753852) * If a function such as AES_DECRYPT() that requires SSL support failed, the error could affect later calls to functions that require SSL support. (Bug #68340, Bug #16315767) * In a MySQL server newer than MySQL 5.5 using a nonupgraded mysql.user table (for which mysql_upgrade had not been run), statements to set passwords caused a server exit due to a faulty check for the password_expired column. (Bug #68385, Bug #16339767) * It is now possible to suppress installation of the mysql-test directory after compiling MySQL from source by invoking CMake with the INSTALL_MYSQLTESTDIR option explicitly set to empty: cmake . -DINSTALL_MYSQLTESTDIR= Previously, attempts to do this resulted in an error. (Bug #58615, Bug #11765629) * When only counting events but not timing them, Performance Schema would report MIN_TIMER_WAIT values as a large number instead of 0. (Bug #68768, Bug #16552425) * The Turbo Boyer-Moore algorithm used for LIKE pattern matches failed to handle some patterns. The server now uses the original Boyer-Moore algorithm. (Bug #59973, Bug #11766777) * If mysqld crashed during a shutdown initiated by /etc/init.d/mysql stop, mysqld_safe restartd mysqld when it should not have. (Bug #34084, Bug #13864548) * Using range access with an index prefix could produce incorrect results. (Bug #68750, Bug #16540042) * For debug builds, metadata locking for CREATE TABLE ... SELECT could raise an assertion. (Bug #68695, Bug #16503173) * Long table or column names could cause mysqlshow to exit. (Bug #53956, Bug #11761458) * A new CMake option, WITH_EDITLINE, is provided to indicate whether to use the bundled or system libedit/editline library. The permitted values are bundled (the default) and system. WITH_EDITLINE replaces WITH_LIBEDIT, which has been removed. (Bug #68558, Bug #16430208) * When specified in an option file, the plugin-dir client option was ignored. (Bug #68800, Bug #16680313) * Overhead for the skip_trailing_space() function was reduced. (Bug #68477, Bug #16395778) * If an UPDATE containing a subquery caused a deadlock inside InnoDB, the deadlock was not properly handled by the SQL layer. The SQL layer then tried to unlock the row after InnoDB rolled back the transaction, raising an assertion inside InnoDB. (Bug #69127, Bug #16757869) * Configuring MySQL with -DWITH_EXTRA_CHARSETS=none caused a build failure. (Bug #58672, Bug #11765682) * The !includedir directive in option files did not read .cnf or .ini files that included a dot in the file name preceding the extension. (Bug #51609, Bug #11759306) * Indexes on derived tables that were used during the first invocation of a stored procedure were not used in subsequent invocations. (Bug #68350, Bug #16346367) * Boolean plugin system variables did not behave well on machines where char is unsigned; some code attempted to assign a negative value to these. (Bug #59905, Bug #11864205) * For DELETE and UPDATE statements, EXPLAIN displayed NULL in the ref column for some cases where const is more appropriate. (Bug #68299, Bug #16296268) * The optimizer could choose a poor execution plan for queries with ORDER BY ... LIMIT. (Bug #69013, Bug #16697792) * FOUND_ROWS() could return an incorrect value if the preceding query used filesort. (Bug #69119, Bug #16760474) References: This bug is a regression of Bug #68458. * In the absence of SQL_CALC_FOUND_ROWS in the preceding query, FOUND_ROWS() should return the number of rows in the result set, but this did not always happen if the query contained ORDER BY. (Bug #69271, Bug #16827872) * sql-common/client_plugin.c contained a nonportable use of a va_list parameter. (Bug #62769, Bug #13252623) * mysqldump assumed the existence of the general_log and slow_log tables in the mysql database. It failed if invoked to dump tables from an older server where these tables do not exist. (Bug #65670, Bug #14236170) * Configuring with cmake -DWITHOUT_SERVER to build clients without the server failed for builds outside of the source tree. (Bug #66000, Bug #14367046) * Full-text search on InnoDB tables failed on searches for words containing apostrophes. (Bug #69216, Bug #16801781) * Full-text search on InnoDB tables failed on searches for literal phrases combined with + or - operators. (Bug #68720, Bug #16516193) * Optimizations that used extended secondary keys (see Use of Index Extensions (http://dev.mysql.com/doc/refman/5.7/en/index-extensions.html) ) worked only for InnoDB, even for storage engines with the requisite underlying capabilities. (Bug #68469, Bug #16391678) * Successful queries served from the query cache did not clear warnings. (Bug #49634, Bug #11757567) * With big_tables enabled, queries that used COUNT(DISTINCT) on a simple join with a constant equality condition on a non-duplicate key returned incorrect results. (Bug #52582, Bug #11760197) * If ALTER TABLE was used to set the default value for a TIMESTAMP or DATETIME column that had CURRENT_TIMESTAMP as its default when it was created, the new default was not shown by SHOW CREATE TABLE, and incorrect values could be inserted into the column. (Bug #45669, Bug #11754116) * mysql_install_db incorrectly tried to create the mysql.innodb_table_stats and mysql.innodb_index_stats tables if InnoDB was not available. (Bug #68438, Bug #16369955) * If one session had any metadata lock on a table, another session attempting CREATE TABLE [IF NOT EXISTS] for the same table would hang. This occurred due to an attempt in the second session to acquire an exclusive metadata lock on the table before checking whether the table already existed. An exclusive metadata lock is not compatible with any other metadata locks, so the session hung for the lock timeout period if another session had the table locked. Now the server attempts to acquire a shared metadata lock on the table first to check whether it exists, then upgrade to an exclusive lock if it does not. If the table does exist, an error occurs for CREATE TABLE and a warning for CREATE TABLE IF NOT EXISTS. (Bug #63144, Bug #13418638) * Attempts to build from a source RPM package could fail because the build process attempted to refer to a pb2user that might not exist. (Bug #64641, Bug #13865797, Bug #69339, Bug #16874980) * A typo in cmake/dtrace.cmake prevented DTrace support from being enabled by -DENABLE_DTRACE-on. (Bug #60743, Bug #12325449) * When an internal buffer was too small for the workload, the Performance Schema could spend a lot of time in an internal spin loop attempting to allocate a memory buffer, and fail. (Bug #69382, Bug #16945618) * BIT(0) is not a valid data type specification but was silently converted to BIT(1). Now an ER_INVALID_FIELD_SIZE error occurs and the specification is rejected. (Bug #68419, Bug #16358989) * Some LEFT JOIN queries with GROUP BY could return incorrect results. (Bug #68897, Bug #16620047) References: This bug is a regression of Bug #11760517. * Some possible cases of memory use after being freed were fixed. (Bug #68918, Bug #16725945) * mysqldump wrote SET statements as SET OPTION, which failed when reloaded because the deprecated OPTION keyword has been removed from SET syntax. (Bug #67507, Bug #15844882) * If the server could not find the errmsg.sys file at startup, the resulting error message did not indicate which configuration parameter to check. (Bug #67576, Bug #15880018) * If query_cache_type was disabled at startup to prevent the query cache from being enabled at runtime, disabling query_cache_type at runtime generated a warning even though it was already disabled. (Bug #69396, Bug #16906827) * For queries with ORDER BY ... LIMIT, the optimizer could choose a nonordering index for table access. (Bug #69410, Bug #16916596) * When selecting a union of an empty result set (created with WHERE 1=0 or WHERE FALSE) with a derived table, incorrect filtering was applied to the derived table. (Bug #69471, Bug #16961803) References: This bug is a regression of Bug #15848521. * For better robustness against stack overflow, the server now accounts for the size of the guard area when making thread stack size requests. (Bug #35019, Bug #11748074) * Two problems adding or subtracting keyword from the current debug system variable setting were corrected: + A debug value of 'd' means "all debug macros enabled". The following sequence left the value in an incorrect state: mysql> SET debug = 'd';SELECT @@debug; +---------+ | @@debug | +---------+ | d | +---------+ mysql> SET debug = '+d,M1';SELECT @@debug; +---------+ | @@debug | +---------+ | d,M1 | +---------+ The first SET statement enables all debug macros. The second SET should add the M1 macro to the current set, which should result in no change because the current set is already "all macros". Instead, the second SET reset the current set to only the M1 macro, effectively disabling all others. The server now correctly leaves debug set to 'd'. + A debug value of '' means "no debug macros enabled". The following sequence left the value in an incorrect state: mysql> SET debug = 'd,M1';SELECT @@debug; +---------+ | @@debug | +---------+ | d,M1 | +---------+ mysql> SET debug = '-d,M1';SELECT @@debug; +---------+ | @@debug | +---------+ | d | +---------+ The first SET statement sets debug to the M1* macro. The second SET should subtract the M1 macro from the current set, leaving no debug macros enabled. Instead, the second SET reset the current set to 'd' (all macros enabled). The server now correctly sets debug to ''. (Bug #58630, Bug #11765644) * Some subquery transformations were not visible in EXPLAIN output. (Bug #59852, Bug #11766685) * Comparison of a DATETIME value and a string did not work correctly for the utf8_unicode_ci collation. (Bug #68795, Bug #16567381) * The range optimizer used the wrong prerequisite for concluding that a table is the inner table of an outer join. This led to incorrect cost estimates and choice of the wrong index for query processing. (Bug #37333, Bug #11748775) * Some errors could be handled by condition handlers only if they were raised by particular statements, such as INSERT, but not if they were raised by other statements, like UPDATE. An example would be the foreign-key error ER_NO_REFERENCED_ROW_2 which could be treated differently, depending on which statement raised it. (Bug #68831, Bug #16587369) * The libmysql.dll library was missing several symbols: my_init, mysql_client_find_plugin, mysql_client_register_plugin, mysql_load_plugin, mysql_load_plugin_v, mysql_options4, and mysql_plugin_options. (Bug #69204, Bug #16797982, Bug #62394) * If the WITH_SSL CMake option was specified with an incorrect path to the SSL installation or the path to an unsupported (too old) SSL installation, the option was implicitly changed to the bundled value and yaSSL was used instead. Now CMake exits with an error so the user knows that the option value must be changed. (Bug #69744, Bug #17162055) * The DBUG_ENTER string for the THD::increment_questions_counter() function incorrectly named the THD::increment_updates_counter() function. (Bug #69989, Bug #17297266) * RPM packages did not provide lowercase tags for their contents. For example, a server RPM indicated that it provided MySQL-server, but not mysql-server. (Bug #69830, Bug #17211588) * mysql.h no longer defines __WIN__ on Windows, and the MySQL sources have been changed to test for _WIN32 instead. (Bug #20338, Bug #11745828) -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql