Authentication Changes:
MySQL authentication supports two new capabilities, pluggable authentication and proxy users:
With pluggable authentication, the server can use plugins to authenticate incoming client connections, and clients can load an authentication plugin that interacts properly with the corresponding server plugin. This capability enables clients to connect to the MySQL server with credentials that are appropriate for authentication methods other than the built-in MySQL authentication based on native MySQL passwords stored in the
mysql.usertable. For example, plugins can be created to use external authentication methods such as LDAP, Kerberos, PAM, or Windows login IDs.Proxy user capability enables a client who connects and authenticates as one user to be treated, for purposes of access control while connected, as having the privileges of a different user. In effect, one user impersonates another. Proxy capability depends on pluggable authentication because it is based on having an authentication plugin return to the server the user name that the connecting user impersonates.
Pluggable authentication entails these changes:
For user specifications in the
CREATE USERandGRANTstatements, a newIDENTIFIED WITHclause for specifying the authentication plugin.For the
mysql.usertable, new columns that specify plugin information. Theplugincolumn, if nonempty, indicates which plugin authenticates connections for an account. Theauthentication_stringcolumn is a string that is passed to the plugin.For the
mysql_options()C API function, newMYSQL_DEFAULT_AUTHandMYSQL_PLUGIN_DIRoptions that enable client programs to load authentication plugins.For the mysql client, new
--default-authand--plugin-diroptions for specifying which authentication plugin and plugin directory to use.For the mysqltest client, a new
--plugin-diroption for specifying which plugin directory to use, and a newconnect()command argument to specify an authentication plugin.For the server plugin API, a new
MYSQL_AUTHENTICATION_PLUGINplugin type.A client plugin API that enables client programs to manage plugins.
Reimplementation of the built-in authentication methods previously supported in MySQL as plugins. These methods provide native password checking and pre-MySQL 4.1.1 authentication that uses shorter password hash values. This change only reimplements the built-in methods as plugins that cannot be unloaded. Existing clients authenticate as before with no changes needed. In particular, starting the server with the
--secure-authoption still prevents clients that have pre-4.1.1 password hashes from conecting, and--skip-grant-tablesstill disables all password checking.
Proxy user capability entails these changes:
A new
PROXYprivilege that can be managed with theGRANTandREVOKEstatements.New
proxy_userandexternal_usersystem variables that indicate whether the current session uses proxying.A new
mysql.proxies_privgrant table that records proxy information for MySQL accounts.
Due to these changes, the server requires that a new grant table,
proxies_priv, be present in themysqldatabase. If you are upgrading to MySQL 5.5.7 from a previous MySQL release rather than performing a new installation, the server will find that this table is missing and exit during startup with the following message:Table 'mysql.proxies_priv' doesn't exist
To create the
proxies_privtable, start the server with the--skip-grant-tablesoption to cause it to skip the normal grant table checks, then run mysql_upgrade. For example:shell>
mysqld --skip-grant-tables &shell>mysql_upgradeThen stop the server and restart it normally.
You can specify other options on the mysqld command line if necessary. Alternatively, if your installation is configured so that the server normally reads options from an option file, use the
--defaults-fileoption to specify the file (enter each command on a single line):shell>
mysqld --defaults-file=/usr/local/mysql/etc/my.cnf--skip-grant-tables &shell>mysql_upgradeWith the
--skip-grant-tablesoption, the server does no password or privilege checking, so any client can connect and effectively have all privilges. For additional security, use the--skip-networkingoption as well to prevent remote clients from connecting.NoteThe upgrade problem just described is fixed in MySQL 5.5.8. the server treats a missing
proxies_privtable as equivalent to an empty table.For additional information, consult these references:
Information about pluggable authentication, including installation and usage instructions: Section 5.5.6, “Pluggable Authentication”.
Information about proxy users: Section 5.5.7, “Proxy Users”.
Information about the server and client plugin API: Section 23.2.4, “Plugin Data Structures and Functions”.
Information about the C API functions for managing client plugins: See Section 22.9.10, “C API Client Plugin Functions”.
Functionality added or changed:
The unused and undocumented
thread_pool_sizesystem variable was removed. (Bug#57338)The
pstacklibrary was nonfunctional and has been removed, along with the--with-pstackoption for configure and the--enable-pstackoption for mysqld. (Bug#57210)Added a new
SHOW PROCESSLISTstate,Waiting for query cache lock. This indicates that a session is waiting to take the query cache lock while it performs some query cache operation. (Bug#56822)A new status variable,
Handler_read_last, displays the number of requests to read the last key in an index. WithORDER BY, the server will issue a first-key request followed by several next-key requests, whereas with WithORDER BY DESC, the server will issue a last-key request followed by several previous-key requests. (Bug#52312)MySQL releases are now built using CMake rather than the GNU autotools. Accordingly, the instructions for installing MySQL from source have been updated to discuss how to build MySQL using CMake. See Section 2.11, “Installing MySQL from Source”. If you are familiar with autotools but not CMake, you might find this transition document helpful: http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide
The build process is now similar enough on all platforms, including Windows, that there are no longer sections dedicated to notes for specific platforms.
The default layout when compiling from source now matches that used for binary distributions. You will notice these differences for source installations:
mysqld is installed in
bin, notlibexec.mysql_install_db is installed in
scripts, notbin.The data directory is
data, notvar.
The make_binary_distribution and
make_win_bin_distscripts are now obsolete. To create a binary distribution, use make package.
Bugs fixed:
Performance: InnoDB Storage Engine: The master
InnoDBbackground thread could sometimes cause transient performance drops due to excessive flushing of modified pages. (Bug#56933)InnoDB Storage Engine: Incompatible Change: Security Fix: Issuing
TRUNCATE TABLEand examining the same table's information in theINFORMATION_SCHEMAdatabase at the same time could cause a crash in the debug version of the server.As a result of this change,
InnoDBalways uses the fast truncation technique, equivalent toDROP TABLEandCREATE TABLE. It no longer performs a row-by-row delete for tables with parent-child foreign key relationships.TRUNCATE TABLEreturns an error for such tables. Modify your SQL to issueDELETE FROMfor such tables instead. (Bug#54678)table_nameSecurity Fix: The server crashed for assignment of values of types other than
Geometryto items of typeGeometryCollection(MultiPoint,MultiCurve,MultiSurface). Now the server checks the field type and fails withbad geometry valueif it detects incorrect parameters. (Bug#55531)Security Fix: The
CONVERT_TZ()function crashed the server when the timezone argument was an emptySETcolumn value. (Bug#55424)Security Fix:
EXPLAIN EXTENDEDcaused a server crash with some prepared statements. (Bug#54494)Security Fix: In prepared-statement mode,
EXPLAINfor aSELECTfrom a derived table caused a server crash. (Bug#54488)Security Fix: The
PolyFromWKB()function could crash the server when improper WKB data was passed to the function. (Bug#51875, CVE-2010-3840)Incompatible Change: Replication: The behavior of
INSERT DELAYEDstatements when using statement-based replication has changed as follows:Previously, when using
binlog_format=STATEMENT, a warning was issued in the client when executingINSERT DELAYED; now, no warning is issued in such cases.Previously, when using
binlog_format=STATEMENT,INSERT DELAYEDwas logged asINSERT DELAYED; now, it is logged as anINSERT, without theDELAYEDoption.However, when
binlog_format=STATEMENT,INSERT DELAYEDcontinues to be executed asINSERT(without theDELAYEDoption). The behavior ofINSERT DELAYEDremains unchanged when usingbinlog_format=ROW:INSERT DELAYEDgenerates no warnings, is executed asINSERT DELAYED, and is logged using the row-based format.This change also affects
binlog_format=MIXED, becauseINSERT DELAYEDis no longer considered unsafe. Now, when the logging format isMIXED, no switch to row-based logging occurs. This means that the statement is logged as a simpleINSERT(that is, without theDELAYEDoption), using the statement-based logging format. (Bug#54579)See also Bug#56678, Bug#57666.
This regression was introduced by Bug#39934.
Incompatible Change:
HANDLER ... READstatements that invoke stored functions can cause replication errors. Such statements are now disallowed and result in anER_NOT_SUPPORTED_YETerror. (Bug#54920)Incompatible Change: Previously, if you flushed the logs using
FLUSH LOGSor mysqladmin flush-logs and mysqld was writing the error log to a file (for example, if it was started with the--log-erroroption), it renamed the current log file with the suffix-old, then created a new empty log file. This had the problem that a second log-flushing operation thus caused the original error log file to be lost unless you saved it under a different name. For example, you could use the following commands to save the file:shell>
mysqladmin flush-logsshell>mvhost_name.err-oldbackup-directoryTo avoid the preceding file-loss problem, renaming no longer occurs. The server merely closes and reopens the log file. To rename the file, you can do so manually before flushing. Then flushing the logs reopens a new file with the original file name. For example, you can rename the file and create a new one using the following commands:
shell>
mvshell>host_name.errhost_name.err-oldmysqladmin flush-logsshell>mvhost_name.err-oldbackup-directorySee also Bug#56821.
InnoDB Storage Engine: Replication: If the master had
innodb_file_per_table=OFF,innodb_file_format=Antelope(andinnodb_strict_mode=OFF), or both, certainCREATE TABLEoptions, such asKEY_BLOCK_SIZE, were ignored. This could allow master to avoid raising ER_TOO_BIG_ROWSIZE errors.However, the ignored
CREATE TABLEoptions were still written into the binary log, so that, if the slave hadinnodb_file_per_table=ONandinnodb_file_format=Barracuda, it could encounter an ER_TOO_BIG_ROWSIZE error while executing the record from the log, causing the slave SQL thread to abort and replication to fail.In the case where the master was running MySQL 5.1 and the slave was MySQL 5.5 (or later), the failure occurred when both master and slave were running with default values for
innodb_file_per_tableandinnodb_file_format. This could cause problems during upgrades.To address this issue, the default values for
innodb_file_per_tableandinnodb_file_formatare reverted to the MySQL 5.1 default values—that is,OFFandAntelope, respectively. (Bug#56318)InnoDB Storage Engine: The server could crash with a high volume of concurrent
LOCK TABLESandUNLOCK TABLESstatements. (Bug#57345)InnoDB Storage Engine:
InnoDBincorrectly reported an error when a cascading foreign key constraint deleted more than 250 rows. (Bug#57255)InnoDB Storage Engine: If the server crashed during an
ALTER TABLEoperation on anInnoDBtable, examining the table throughSHOW CREATE TABLEor querying theINFORMATION_SCHEMAtables could cause the server to stop with an assertion error. (Bug#56982)InnoDB Storage Engine: The output from the
SHOW ENGINE INNODB STATUScommand can now be up to 1 MB. Formerly, it was truncated at 64 KB. Monitoring applications that parse can check if output exceeds this new, larger limit by testing theInnodb_truncated_status_writesstatus variable. (Bug#56922)InnoDB Storage Engine: A
SELECT ... FOR UPDATEstatement affecting a range of rows in anInnoDBtable could cause a crash in the debug version of the server. (Bug#56716)InnoDB Storage Engine: Improved the performance of
UPDATEoperations onInnoDBtables, when only non-indexed columns are changed. (Bug#56340)InnoDB Storage Engine: When MySQL was restarted after a crash with the option
innodb_force_recovery=6, certain queries againstInnoDBtables could fail, depending onWHEREorORDER BYclauses.Usually in such a disaster recovery situation, you dump the entire table using a query without these clauses. During advanced troubleshooting, you might use queries with these clauses to diagnose the position of the corrupted data, or to recover data following the corrupted part. (Bug#55832)
InnoDB Storage Engine: The
CHECK TABLEcommand could cause a time-consuming verification of theInnoDBadaptive hash index memory structure. Now this extra checking is only performed in binaries built for debugging. (Bug#55716)InnoDB Storage Engine: A heavy workload with a large number of threads could cause a crash in the debug version of the server. (Bug#55699)
InnoDB Storage Engine: The server could crash on shutdown, if started with
--innodb-use-system-malloc=0. (Bug#55627)InnoDB Storage Engine: If the server crashed during a
RENAME TABLEoperation on anInnoDBtable, subsequent crash recovery could fail. This problem could also affect anALTER TABLEstatement that caused a rename operation internally. (Bug#55027)InnoDB Storage Engine: Setting the
PACK_KEYS=0table option for anInnoDBtable prevented new indexes from being added to the table. (Bug#54606)InnoDB Storage Engine: The server could crash when opening an
InnoDBtable linked through foreign keys to a long chain of child tables. (Bug#54582)InnoDB Storage Engine: Changed the locking mechanism for the
InnoDBdata dictionary duringROLLBACKoperations, to improve concurrency forREPLACEstatements. (Bug#54538)InnoDB Storage Engine: With multiple buffer pools enabled,
InnoDBcould flush more data from the buffer pool than necessary, causing extra I/O overhead. (Bug#54346)InnoDB Storage Engine:
InnoDBtransactions could be incorrectly committed during recovery, rather than rolled back, if the server crashed and was restarted after performingALTER TABLE...ADD PRIMARY KEYon anInnoDBtable, or some other operation that involves copying the entire table. (Bug#53756)InnoDB Storage Engine:
InnoDBstartup messages now include the start and end times for buffer pool initialization, and the total buffer pool size. (Bug#48026)Partitioning: An
ALTER TABLEstatement acting on table partitions that failed while the affected table was locked could cause the server to crash. (Bug#56172)Partitioning: Multi-table
UPDATEstatements involving a partitionedMyISAMtable could cause this table to become corrupted. Not all tables affected by theUPDATEneeded to be partitioned for this issue to be observed. (Bug#55458)Partitioning:
EXPLAIN PARTITIONSreturned bad estimates for range queries on partitionedMyISAMtables. In addition, values in therowscolumn ofEXPLAIN PARTITIONSoutput did not take partition pruning into account. (Bug#53806, Bug#46754)Replication:
SET PASSWORDcaused row-based replication to fail between a MySQL 5.1 master and a MySQL 5.5 slave.This fix makes it possible to replicate
SET PASSWORDcorrectly, using row-based replication between a master running MySQL 5.1.53 or a later MySQL 5.1 release to a slave running MySQL 5.5.7 or a later MySQL 5.5 release. (Bug#57098)Replication: Prepared multiple-row
INSERT DELAYEDstatements were written to the binary log withoutDELAYED. (Bug#56678)Replication: Backticks used to enclose idenitfiers for savepoints were not preserved in the binary log, which could lead to replication failure when the identifier, stripped of backticks, could be misinterpreted, causing a syntax or other error.
This could cause problems with MySQL application programs making use of generated savepoint IDs. If, for instance,
java.sql.Connection.setSavepoint()is called without any parameters, Connector/J automatically generates a savepoint identifier consisting of a string of hexadecimal digits0-Fencased in backtick (`) characters. If such an ID took the form`(whereNeN`Nrepresents a string of the decimal digits0-9, andeis a literal uppercase or lowercase “E” character). Removing the backticks when writing the identifier into the binary log left behind a substring which the slave MySQL server tried to interpret as a floating point number, rather than as an identifier. The resulting syntax error caused loss of replication. (Bug#55961)See also Bug#55962.
Replication: When a slave tried to execute a transaction larger than the slave's value for
max_binlog_cache_size, it crashed. This was caused by an assertion that the server should roll back only the statement but not the entire transaction when the error ER_TRANS_CACHE_FULL occurred. However, the slave SQL thread always rolled back the entire transaction whenever any error occurred, regardless of the type of error. (Bug#55375)Replication: The error message for ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE was hard coded in English in
sql_yacc.yy, so that it could not be translated inerrmsg.txtfor other languages.Additionally, this same error message was used for three separate error conditions:
When the heartbeat period exceeded the value of slave_net_timeout.
When the heartbeat period was nonnegative but shorter than 1 millisecond.
When the value for the heartbeat period was either negative or greater than the maximum allowed.
These issues have been addressed as follows:
By using three distinct error messages for each of the conditions listed previously.
By moving the sources for these error messages into the
errmsg-utf8.txtfile to facilitate translations into languages other than English.
A buffer overrun could occur when formatting
DBL_MAXnumbers. (Bug#57209)COALESCE()in MySQL 5.5 could return a result different from MySQL 5.1 for some arguments. (Bug#57095)Constant
SUBTIME()expressions could return incorrect results. (Bug#57039)When mysqld was started as a service on Windows and mysqld was writing the error log to a file (for example, if it was started with the
--log-erroroption), the server reassign the file descriptors of thestdoutandstderrstreams to the file descriptor of the log file. On Windows, ifstdoutorstderris not associated with an output stream, the file descriptor returns a negative value. Previously, this would cause the file descriptor reassignment to fail and the server to abort. To avoid this problem on Windows,stdoutandstderrstreams are now first assigned to the log file stream by opening this file. This causesstdoutandstderrfile descriptors to be nonzero and the server can successfully reassign them to the file descriptor of the log file. (Bug#56821)The server could crash inside
memcpy()when reading certain Performance Schema tables. (Bug#56761, Bug#58003)Deadlock could occur for a workload consisting of a mix of DML, DDL, and
FLUSH TABLESstatements affecting the same set of tables in a heavily concurrent environment. (Bug#56715, Bug#56404)Memory leaks detected by Valgrind were corrected. (Bug#56709)
On Mac OS X,
RENAME TABLEraised an assertion if thelower_case_table_namessystem variable was 2 and the old table name was specified in uppercase. (Bug#56595)Performance for certain read-only queries, in particular
point_select, had deteriorated compared to previous versions. (Bug#56585)It was possible to compile mysqld with Performance Schema support but with a dummy atomic-operations implementation, which caused a server crash. This problem does not affect binary distributions. It is helpful as a safety measure for users who build MySQL from source. (Bug#56521)
Executing
XA ENDafter an XA transaction was already ended raised an assertion. (Bug#56448)A
SELECTstatement could produce a different number of rows than aCREATE TABLE ... SELECTthat was supposed to select the same rows. (Bug#56423)The server crashed if a table maintenance statement such as
ANALYZE TABLEorREPAIR TABLEwas executed on aMERGEtable and opening and locking a child table failed. For example, this could happen if a child table did not exist or if a lock timeout happened while waiting for a conflicting metadata lock to disappear.As a consequence of this bug fix, it is now possible to use
CHECK TABLEfor log tables without producing an error. (Bug#56422, Bug#56494)Deadlock could occur for heavily concurrent workloads consisting of a mix of DML, DDL, and
FLUSH TABLESstatements affecting the same set of tables. (Bug#56405)ALTER TABLEon aMERGEtable could result in deadlock with other connections. (Bug#56292, Bug#57002)Comparison of one
STR_TO_DATE()result with another could return incorrect results. (Bug#56271)The
tcmalloclibrary was missing from binary MySQL packages for Linux. (Bug#56267)An
INSERT DELAYEDstatement for aMERGEtable could cause deadlock if it occurred as part of a transaction or underLOCK TABLES, and there was a concurrent DDL orLOCK TABLES ... WRITEstatement that tried to lock one of its underlying tables. (Bug#56251)In debug builds, the server raised an assertion for
DROP DATABASEin installations that had an outdated or corruptedmysql.proctable. For example, this affected mysql_upgrade when run as part of a MySQL 5.1 to 5.5 upgrade. (Bug#56137)A negative
TIMEargument toMIN()orMAX()could raise an assertion. (Bug#56120)The ordering for supplementary characters with the
utf8mb4_bin,utf16_bin, andutf32_bincollations was incorrect. (Bug#55980)On Solaris with gcc 3.4.6,
ha_example.sowas built with DTrace support even if the server was not, causing plugin loading problems. (Bug#55966)Short (single-letter) command-line options did not work. (Bug#55873)
If a query specified a
DATEorDATETIMEvalue in a format different from'YYYY-MM-DD HH:MM:SS', a greater-than-or-equal (>=) condition matched only greater-than values in an indexedTIMESTAMPcolumn. (Bug#55779)If a view was named as the destination table for
CREATE TABLE ... SELECT, the server produced a warning whether or notIF NOT EXISTSwas used. Now it produces a warning only whenIF NOT EXISTSis used, and an error otherwise. (Bug#55777)CASEexpressions with a mix of operands in different character sets sometimes returned incorrect results. (Bug#55744)After the fix for Bug#39653, the shortest available secondary index was used for full table scans. The primary clustered key was used only if no secondary index could be used. However, when the chosen secondary index includes all columns of the table being scanned, it is better to use the primary index because the amount of data to scan is the same but the primary index is clustered. This is now taken into account. (Bug#55656)
The server entered an infinite loop with high CPU utilization after an error occurred during flushing of the IO cache. (Bug#55629)
For Performance Schema, the default number of rwlock classes was increased to 30, and the default number of rwlock and mutex instances was increased to 1 million. These changes were made to account for the volume of data instrumented when the
InnoDBstorage engine is used (because of theInnoDBbuffer pool). (Bug#55576)If there was an active
SELECTstatement, an error arising during trigger execution could cause a server crash. (Bug#55421)Assignment of
InnoDBscalar subquery results to a variable resulted in unexpectedSlocks inREAD COMMITTEDtransation isolation level. (Bug#55382)In debug builds,
FLUSH TABLEfor atable_listWITH READ LOCKMERGEtable led to an assertion failure if one of the table's children was not present in the list of tables to be flushed. (Bug#55273)The server could crash during shutdown due to a race condition relating to Performance Schema cleanup. (Bug#55105, Bug#56324)
Queries involving predicates of the form
could return incorrect data due to incorrect handling by the range optimizer. (Bug#54802)constNOT BETWEENnot_indexed_columnANDindexed_columnWith an
UPDATE IGNOREstatement including a subquery that was evaluated using a temporary table, an error transferring the data from the temporary was ignored, causing an assertion to be raised. (Bug#54543)A bad
DBUG_PRINTstatement infill_schema_schemata()caused server crashes on Solaris. (Bug#54478)MIN()orMAX()with a subquery argument could raise a debug assertion for debug builds or return incorrect data for nondebug builds. (Bug#54465)If one session attempted to drop a database containing a table which another session had opened with
HANDLER, any instance ofALTER DATABASE,CREATE DATABASE, orDROP DATABASEissued by the latter session produced a deadlock. (Bug#54360)INFORMATION_SCHEMAplugins with nodeinit()method resulted in a memory leak. (Bug#54253)Row subqueries producing no rows were not handled as
UNKNOWNvalues in row comparison expressions. (Bug#54190)Setting
SETUP_INSTRUMENTS.TIMER = 'NO'causedTIMER_WAITvalues for aggregations to beNULLrather than 0. (Bug#53874)The
max_lengthmetadata value ofMEDIUMBLOBtypes was reported as 1 byte greater than the correct value. (Bug#53296)If an application using the embedded server called
mysql_library_init()a second time after callingmysql_library_init()andmysql_library_end()to start and stop the server, the application crashed when reading option files. (Bug#53251)The fix for Bug#30234 caused the server to reject the
DELETE tbl_name.* ...Access compatibility syntax for multiple-tableDELETEstatements. (Bug#53034)The
plugin_ftparser.handplugin_audit.hinclude files are part of the public API/ABI, but were not tested by the ABI check. (Bug#52821)An atomic “compare and swap” operation using x86 assembly code (32 bit) could access incorrect data, which would make it work incorrectly and lose the intended atomicity. This would in turn cause the MySQL server to work on inconsistent data structures and return incorrect data. That code part affected only 32-bit builds; the effect has been observed when icc was used to build binaries. With gcc, no incorrect results have been observed during tests, so this fix is a proactive one. Other compilers do not use this assembly code. (Bug#52419)
In
LOAD DATA INFILE, using aSETclause to set a column equal to itself caused a server crash. (Bug#51850)An assertion could be raised by
DELETEon a view that referenced another view which in turn (directly or indirectly) referenced more than one table. (Bug#51099)In some cases, when the left part of a
NOT INsubquery predicate was a row and containedNULLvalues, the query result was incorrect. (Bug#51070)CHECKSUM TABLEfor Performance Schema tables could cause a server crash due to uninitialized memory reads. (Bug#50557)For some queries, the optimizer produced incorrect results using the Index Merge access method with
InnoDBtables. (Bug#50402)EXPLAINproduced an incorrectrowsvalue for queries evaluated using an index scan and that includedLIMIT,GROUP BY, andORDER BYon a computed column. (Bug#50394)mysql_store_result()andmysql_use_result()are not for use with prepared statements and are not intended to be called followingmysql_stmt_execute(), but failed to return an error when invoked that way. (Bug#47485)Using
REPAIR TABLEon atableUSE_FRMMERGEtable caused the server to crash. (Bug#46339)If the global and session
debugsystem variables had the same value, the debug trace file could be closed twice, leading to freeing already freed memory and a server crash. (Bug#46165)If
ALTER EVENTfailed to load an event after altering it, an assertion could be raised. This could occur, for example, ifALTER EVENTwas killed withKILL QUERY. (Bug#44171)Trailing space removal for
utf32strings was done with non-multibyte-safe code, leading to incorrect result length and assertion failure. (Bug#42511)A malformed packet sent by the server when the query cache was in use resulted in lost-connection errors. (Bug#42503)
Multiple-statement execution could fail. (Bug#40877)
CREATE TABLEfailed if a column referred to in an index definition and foreign key definition was in different lettercases in the two definitions. (Bug#39932)mysqlcheck behaved differently depending on the order in which options were given on the command line. (Bug#35269)
When invoked to display a help message, mysqld also displayed spurious warning or error messages. (Bug#30025)