MySQL 歷史版本列表
MySQL 是一個開源的 RDBMS(關係數據庫管理系統),它支持用 C,C ++,Java,Perl 和 PHP 等各種編程語言編寫的請求。由於其高速度和靈活性,MySQL 已成為主要用於開發各種形狀和大小的 Web 應用程序的最流行的數據庫系統之一。自 1995 年上市以來,這種非常受歡迎的開源數據庫管理系統已經應用於當今幾乎所有互聯網用戶的無數項目中。今天一些最受歡迎的 MySQL 用戶是 ... MySQL 軟體介紹MySQL (32-bit)MySQL (64-bit)MySQL WorkbenchMySQL Workbench (32-bit)MySQL Workbench (64-bit)
更新時間:2015-06-03
更新細節:
What's new in this version:
Functionality Added or Changed:
- MySQL Enterprise Firewall operates on parser states and does not work well together with the query cache, which circumvents the parser. MySQL Enterprise Firewall now checks whether the query cache is enabled. If so, it displays a message that the query cache must be disabled and does not load. (Bug #20913616)
- my_print_defaults now masks passwords. To display passwords in cleartext, use the new --show option. (Bug #19953365)
- MySQL distributions now include an innodb_stress suite of test cases.
Bugs Fixed:
- InnoDB; Partitioning: The CREATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows the correct table creation time for partitioned InnoDB tables. The CREATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows the correct partition creation time for a partition of partitioned InnoDB tables.
- The UPDATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows when a partitioned InnoDB table was last updated by an INSERT, DELETE, or UPDATE. The UPDATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows when a partition of a partitioned InnoDB table was last updated. (Bug #69990, Bug #17299181)
- InnoDB: An assertion was raised on shutdown due to XA PREPARE transactions holding explicit locks. (Bug #20816223)
- InnoDB: The strict_* forms of innodb_checksum_algorithm settings (strict_none, strict_innodb, and strict_crc32) caused the server to halt when a non-matching checksum was encountered, even though the non-matching checksum was valid. For example, with innodb_checksum_algorithm=strict_crc32, encountering a valid innodb checksum caused the server to halt. Instead of halting the server, a message is now printed to the error log and the page is accepted as valid if it matches an innodb, crc32 or none checksum. (Bug #20568464)
- InnoDB: The memcached set command permitted a negative expire time value. Expire time is stored internally as an unsigned integer. A negative value would be converted to a large number and accepted. The maximum expire time value is now restricted to INT_MAX32 to prevent negative expire time values. (Bug #20478242, Bug #75790)
- InnoDB: Removal of a foreign key object from the data dictionary cache during error handling caused the server to exit. (Bug #20442523)
- InnoDB: SHOW ENGINE INNODB STATUS output showed negative reservation and signal count values due to a counter overflow error. (Bug #20417397)
- InnoDB: Failure to check the status of a cursor transaction read-only option before reusing the cursor transaction for a write operation resulted in a server exit during a memcached workload. (Bug #20391552)
- InnoDB: MDL locks taken by memcached clients caused a MySQL Enterprise Backup FLUSH TABLES WITH READ LOCK operation to hang. (Bug #20275612)
- InnoDB: Estimates that were too low for the size of merge chunks in the result sorting algorithm caused a server exit. (Bug #20049521)
- InnoDB: For full-text searches, the optimizer could choose an index that does not produce correct relevancy rankings. (Bug #74686, Bug #19950568)
- Partitioning: When creating a partitioned table, partition-level DATA DIRECTORY or INDEX DIRECTORY option values that contained an excessive number of characters were handled incorrectly. (Bug #20809045)
- Partitioning: Executing an ALTER TABLE on a partitioned table on which a write lock was in effect could cause subsequent SQL statements on this table to fail. (Bug #74288, Bug #74634, Bug #19784790, Bug #19918805)
- Replication: When binary logging was enabled, using stored functions and triggers resulting in a long running procedure that inserted many records caused the memory use to increase rapidly. This was due to memory being allocated per variable. The fix ensures that in such a situation, memory is allocated once and the same memory is reused. (Bug #75879, Bug #20531812)
- Replication: If an error was encountered while adding a GTID to the received GTID set, the log lock was not being correctly released. This could cause a deadlock. (Bug #75781, Bug #20492319)
- Replication: A slave running MySQL 5.6.24 or earlier could not connect to a master running MySQL 5.7.6 and later that had gtid_mode=OFF_PERMISSIVE or gtid_mode=ON_PERMISSIVE. The fix ensures that a slave running MySQL 5.6.25 and later can connect to such a master as long as the slave's gtid_mode is compatible. In other words, a slave running MySQL 5.6.25 and later which has gtid_mode=OFF can connect to a master running MySQL 5.7.6 and later which has gtid_mode=OFF_PERMISSIVE, and a slave running MySQL 5.6.25 and later which has gtid_mode=ON can connect to a master running MySQL 5.7.6 and later which has gtid_mode=ON_PERMISSIVE. Other combinations are incompatible. (Bug #75769, Bug #20471216)
- Replication: If an error occurred when using a multi-threaded slave, issuing a CHANGE MASTER TO statement which resulted in an ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS error, and then issuing RESET SLAVE, made it impossible to change master due to repeated ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS errors. Running the debug version of mysqld caused an unexpected exit in this case. The fix ensures that the recovery process for multi-threaded slaves avoids this. (Bug #75574, Bug #20411374)
- Replication: When using semisynchronous replication performance was degrading when the number of threads increased beyond a certain threshold. To improve performance, now only the thread which is committing is responsible for deleting the active transaction node. All other operations do not touch this active transaction list. (Bug #75570, Bug #20574628)
- Replication: Using mysqlbinlog to process log events greater than 1.6GB failed with an out of memory error. This was caused by an internal error converting the length variable. The fix upgrades the length variable to avoid overflow in both encoding and decoding functions. (Bug #74734, Bug #20350989)
- Replication: When master_info_repository=TABLE the receiver thread stores received event information in a table. The memory used in the process of updating the table was not being freed correctly and this could lead to an out of memory error. The fix ensures that after an event is flushed to the relay log file by a receiver thread, the memory used is freed. (Bug #72885, Bug #19390463, Bug #69848, Bug #20124342)
Replication: Using mysqlbinlog to replay a relay log which ended with GTID_LOG_EVENT could cause the following error:
- ERROR 1790 (HY000) @@SESSION.GTID_NEXT cannot be changed by a client that owns a GTID. The client owns UUID:GTID. Ownership is released on COMMIT or ROLLBACK.
- If a relay log rotate happens (either through a receiver thread restart or after issuing the ROTATE command) exactly after writing a GTID_LOG_EVENT, when replaying such a relay log's end ROTATE_EVENT, it was mistakenly identified as being inside a transaction, whereas the transaction was actually started after GTID_LOG_EVENT. This caused mysqlbinlog to append SET @@SESSION.GTID_NEXT='AUTOMATIC', resulting in two GTID_NEXT statements one after the other. The fix ensures that mysqlbinlog generates SET @@SESSION.GTID_NEXT='AUTOMATIC' only outside of a transaction and when there has not been a previous GTID_LOG_EVENT.
- Similarly, using mysqlbinlog to concatenate and replay a relay log which contained a partial GTID transaction caused the above error. A relay log can contain a partial GTID transaction when AUTO_POSITION is enabled if a receiver thread is restarted when it is in the middle of transferring a transaction from a master. On restart the slave retrieves the full transaction again. In this case, the first relay log contains a partial GTID transaction and the second relay log contains the full GTID transaction again. When using mysqlbinlog to concatenate such a relay log, the partial transaction was not being correctly detected and therefore a ROLLBACK was not being correctly generated. The fix identifies partial GTID transactions using the format description event of the second relay log, ensuring that a ROLLBACK is correctly added. (Bug #70711, Bug #17650326)
- For small values of the read_rnd_buffer_size system variable, internal caching of temporary results could fail and cause query execution failure. (Bug #20895852)
- The normalize_statement() UDF used by MySQL Enterprise Firewall could cause a server exit for certain password-related statements. (Bug #20873209)
- A failed FLUSH PRIVILEGES statement followed by statements to create or drop accounts could cause a server exit. (Bug #20857652)
- std::stringstream code used by MySQL Enterprise Firewall could cause a server exit. (Bug #20848536)
- SHOW VARIABLES mutexes were being locked twice, resulting in a server exit. (Bug #20788853)
- ull2dec() was modified to avoid a problem with GCC 5 in optimized mode. (Bug #20768820)
- Using GCC 5, debug builds failed due to compiler warnings. (Bug #20768717)
- A Provides rule in RPM .spec files misspelled “mysql-embedded” as “mysql-emdedded”. (Bug #20734434)
- The mysql_firewall_max_query_size system variable should be read only at runtime, but it was possible to modify it. (Bug #20608993)
- MySQL Enterprise Firewall could leak memory in the unlikely event of failure to store information in an INFORMATION_SCHEMA table. (Bug #20593257)
- Using a MySQL 5.6 version of mysqladmin to change the password for an account on a MySQL 5.7.6 installation resulted in an unusable account password. (Bug #20590548)
- AddressSanitizer compilation errors were silenced. (Bug #20459338, Bug #75740, Bug #20459363)
- Under certain conditions, the libedit command-line library could write outside an array boundary and cause a client program crash. (Bug #20318154)
- mysql_config_editor could exit abnormally while encrypting passwords. (Bug #20294225)
- Host value matching for the grant tables could fail to use the most specific of values that contained wildcard characters. (Bug #20181776)
- For MySQL distributions linked against yaSSL, a corrupt client key file could cause clients to exit. (Bug #20168526)
- For join queries with a large number of tables, the server could exit converting the join to a semi-join. (Bug #20109861)
- Deleting rows from mysql.user following by granting privileges to a new account could result in a server exit. (Bug #20031475)
- Renaming the mysql.procs_priv table and executing SHOW GRANTS resulted in a server exit. (Bug #20006361)
- Within a stored procedure, access to view columns after DDL or FLUSH TABLES statements in the procedure could cause a server exit. (Bug #19897405)
- Execution of certain BINLOG statements while temporary tables were open by HANDLER statements could cause a server exit. (Bug #19894987)
- For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit. (Bug #19814337)
- CMake configuration was adjusted to handle new warnings reported by Clang 3.5, using the -Wpointer-bool-conversion and -Wundefined-bool-conversion compiler options. (Bug #19584183)
- Loading corrupt spatial data into a MyISAM table could cause the server to exit during index building. (Bug #19573096)
- Specifying --general_log_file= (with an empty value) at server startup caused the server to fail and exit. (Bug #19392264)
- CMake configuration was adjusted to handle warnings reported by Clang 3.3. (Bug #17486216)
- Some MySQL Enterprise Firewall diagnostic messages were written outside the control of the log_error_verbosity system variable. (Bug #76612, Bug #20848331)
- The server rejected empty COM_SHUTDOWN packets. (Bug #76552, Bug #20810928)
- References: This bug was introduced by Bug #14525642.
- Inappropriate -Werror options could appear in mysql_config --cflags output. (Bug #76019, Bug #20590904)
- In the Performance Schema threads table, the PROCESSLIST_STATE and PROCESSLIST_INFO values did not change for the thread/sql/main main thread instrument as the thread state changed. (Bug #74517, Bug #19887143)
- Certain queries for the INFORMATION_SCHEMA TABLES and COLUMNS tables could lead to excessive memory use when there were large numbers of empty InnoDB tables. (Bug #72322, Bug #18592390)
- Queries that included a HAVING clause based on nondeterministic functions could produce incorrect results. (Bug #69638, Bug #17055185)
- For logging of prepared statements to the general query log, the Execute line was logged after statement execution, not before. (Bug #69453, Bug #16953758, Bug #20536590)
- MySQL failed to compile using OpenSSL 0.9.8e. (Bug #68999, Bug #16861371)
更新時間:2015-06-02
更新細節:
What's new in this version:
Bugs Fixed:
- InnoDB; Partitioning: The CREATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows the correct table creation time for partitioned InnoDB tables. The CREATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows the correct partition creation time for a partition of partitioned InnoDB tables. The UPDATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows when a partitioned InnoDB table was last updated by an INSERT, DELETE, or UPDATE. The UPDATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows when a partition of a partitioned InnoDB table was last updated
- InnoDB: An assertion was raised on shutdown due to XA PREPARE transactions holding explicit locks
- InnoDB: Removal of a foreign key object from the data dictionary cache during error handling caused the server to exit
- InnoDB: SHOW ENGINE INNODB STATUS output showed negative reservation and signal count values due to a counter overflow error
- InnoDB: Estimates that were too low for the size of merge chunks in the result sorting algorithm caused a server exit
- SHOW VARIABLES mutexes were being locked twice, resulting in a server exit
- A Provides rule in RPM .spec files misspelled “mysql-embedded” as “mysql-emdedded”
- Under certain conditions, the libedit command-line library could write outside an array boundary and cause a client program crash
- Host value matching for the grant tables could fail to use the most specific of values that contained wildcard characters
- A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege
-SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user
- For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit
- Loading corrupt spatial data into a MyISAM table could cause the server to exit during index building
- Certain queries for the INFORMATION_SCHEMA TABLES and COLUMNS tables could lead to excessive memory use when there were large numbers of empty InnoDB tables
- MySQL failed to compile using OpenSSL 0.9.8e
更新時間:2015-06-02
更新細節:
What's new in this version:
Bugs Fixed:
- InnoDB; Partitioning: The CREATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows the correct table creation time for partitioned InnoDB tables. The CREATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows the correct partition creation time for a partition of partitioned InnoDB tables. The UPDATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows when a partitioned InnoDB table was last updated by an INSERT, DELETE, or UPDATE. The UPDATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows when a partition of a partitioned InnoDB table was last updated
- InnoDB: An assertion was raised on shutdown due to XA PREPARE transactions holding explicit locks
- InnoDB: Removal of a foreign key object from the data dictionary cache during error handling caused the server to exit
- InnoDB: SHOW ENGINE INNODB STATUS output showed negative reservation and signal count values due to a counter overflow error
- InnoDB: Estimates that were too low for the size of merge chunks in the result sorting algorithm caused a server exit
- SHOW VARIABLES mutexes were being locked twice, resulting in a server exit
- A Provides rule in RPM .spec files misspelled “mysql-embedded” as “mysql-emdedded”
- Under certain conditions, the libedit command-line library could write outside an array boundary and cause a client program crash
- Host value matching for the grant tables could fail to use the most specific of values that contained wildcard characters
- A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege
-SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user
- For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit
- Loading corrupt spatial data into a MyISAM table could cause the server to exit during index building
- Certain queries for the INFORMATION_SCHEMA TABLES and COLUMNS tables could lead to excessive memory use when there were large numbers of empty InnoDB tables
- MySQL failed to compile using OpenSSL 0.9.8e
更新時間:2015-04-08
更新細節:
What's new in this version:
Bugs Fixed:
- InnoDB: A TRUNCATE TABLE operation on a temporary table raised an assertion. The temporary table object was incompletely constructed when reloaded from SYS_TABLES.
- InnoDB: A full-text phrase search returned an incorrect result. An empty string was handled incorrectly when tokenizing a newly inserted row.
- InnoDB: Optimizing a FULLTEXT index raised an assertion. The last optimized word of a FULLTEXT index is stored in the CONFIG table value column which is defined as CHAR(50). An assertion was raised when the last optimized word was greater than 50 characters in length. The CONFIG table value column is defined as CHAR(200) as of MySQL 5.6.24 and MySQL 5.7.6.
- If your innodb_ft_max_token_size setting is greater than 50, it is recommended that you recreate existing InnoDB FULLTEXT indexes after upgrading to MySQL 5.6.24 or MySQL 5.7.6 to avoid this issue. FULLTEXT indexes created after upgrading to MySQL 5.6.24 or MySQL 5.7.6 are unaffected.
- InnoDB: An InnoDB memcached extra_col_value[] array was freed without checking the allocated flag, causing a server exit.
- InnoDB: A DML operation performed while a flushing operation was in progress raised a memcached-related assertion.
- InnoDB: The memcached process_arithmetic_command raised an assertion. The wrong error code was returned for a nonexistent decr key.
- InnoDB: The expiration time (exptime) defined using the memcached set command was ignored. InnoDB memcached set the expiration time to an interval value instead of a system time value.
- InnoDB: An assertion was raised when the full-text search fts_savepoint_release() function released a named transaction savepoint and all subsequent savepoints. Only the initial savepoint should be released.
- InnoDB: A full-text search optimization operation raised an assertion.
- InnoDB: Due to a regression introduced in MySQL 5.6.20, mysqld stop did not stop the mysqld server process while the InnoDB memcached plugin was active.
- InnoDB: An ALTER TABLE ... RENAME failure on a table with a FULLTEXT index raised an assertion.
- InnoDB: A severe error occurred during the log apply phase of an online ALTER TABLE operation that was converting a table with a UTF-8 charset to ROW_FORMAT=REDUNDANT.
- InnoDB: When dummy tables are created, the autoinc_mutex member of the of the dict_table_t object was created unnecessarily. Similarly, the zip_pad.mutex object of dict_index_t object was created unnecessarily for dummy indexes. To avoid unnecessary mutex contention, autoinc_mutex and zip_pad.mutex objects are now allocated and initialized on the first lock attempt.
- InnoDB: An ALTER TABLE ... RENAME operation raised an invalid assertion. The assertion code used an incorrect transaction object.
- InnoDB: A memcached append operation on an INT column caused a segmentation fault. append operations on INT columns are not supported and are now blocked.
- Partitioning: A number of ALTER TABLE statements that attempted to add partitions, columns, or indexes to a partitioned table while a write lock was in effect for this table were not handled correctly.
- Partitioning: Executing an ALTER TABLE on a partitioned table on which a write lock was in effect could cause subsequent SQL statements on this table to fail.
- Replication: When replicating from a 5.7.6 or later server to a 5.6.23 or earlier server, if the older version applier thread encountered an Anonymous_gtid_log_event it caused an assert. The fix ensures that these new log events added in MySQL 5.7.6 and later do not cause this problem with 5.6.24 and later slaves. If gtid_mode is OFF and the applier thread encounters a Gtid_log_event, the applier thread aborts with an error. If gtid_mode is ON and the applier thread encounters a Anonymous_gtid_log_event, the applier thread aborts with an error.
- Replication: When the automatic_sp_privileges variable is set, the server automatically grants the EXECUTE and ALTER ROUTINE privileges to the creator of a stored routine, if the user does not already have these privileges. When a privileged user creates a procedure with DEFINER as a non privileged user on a master, the current user is considered to be a privileged user and the mysql.procs_priv table is not updated. When such a statement was replicated to slave, the non-privileged DEFINER was considered as the current user on the slave and privileges were being allocated. This caused a difference in the privileges that were being allocated on the master and the slave. The fix ensures that creater of the stored routine is added to the binary log, and the slave now checks first if the user exists before granting privileges. To maintain compatibility with previous versions, the DEFINER is used when the INVOKER is not available. As part of this fix, anonymous users can be used to replicate from master to slave.
- Replication: When using a slave configured to use a special character set such as UTF-16, UTF-32, or UCS-2, the receiver (I/O) thread failed to connect. The fix ensures that in such a situation, if a slave's character set is not supported then default to using the latin1 character set.
- Replication: When gtid_mode=ON and slave_net_timeout was set to a low value, the slave I/O thread could appear to hang. This was due to the slave heartbeat not being sent regularly enough when the dump thread found many events that could be skipped. The fix ensures that the heartbeat is sent correctly in such a situation.
- CMake failed to detect the OpenSSL version properly for recent versions of OpenSSL (the format of the version string changed).
- For execution of prepared statements, no check was made whether an audit log plugin returned an error, so statement success could erroneously be returned.
- Debian packages were missing some dependencies.
- Corrections were made for a number of code issues that resulted in compiler warnings about array bounds, possibly uninitialized variables, and variables being set but not used.
- Following execution of a GRANT ... WITH GRANT OPTION statement, execution of a prepared statement with a view could cause a server exit.
- NULL as an expression was not recognized as a literal for calculation of Performance Schema statement digests.
- A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege.
- Trying to create a user after dropping columns from the mysql.user table could result in a server exit.
- Ordering by a GROUP_CONCAT() result could cause a server exit.
- A malformed mysql.proc table row could result in a server exit for DROP DATABASE of the database associated with the proc row.
- SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user.
- Large values of the transaction_prealloc_size system variable could cause the server to allocate excessive amounts of memory. The maximum value has been adjusted down to 128K. A similar change was made for transaction_alloc_block_size. Transactions can still allocate more than 128K if necessary; this change reduces the amount that can be preallocated, as well as the maximum size of the incremental allocation blocks.
- Certain queries on the INFORMATION_SCHEMA.INNODB_FT_CONFIG table could cause a server exit.
- A server exit could occur for queries that compared two rows using the <=> operator and the rows belonged to different character sets.
- Certain InnoDB errors caused stored function and trigger condition handlers to be ignored.
- The optimizer could raise an assertion due to incorrectly associating an incorrect field with a temporary table.
- Audit log filtering was not applied to connection events.
- With audit_log_connection_policy=ERRORS, successful COM_QUIT events were errroneously written to the audit log.
- The value of the Audit_log_events status variable did not equal the sum of the other audit log counters.
- The Audit_log_events_filtered status variable did not increment when audit log events were filtered.
- Many new features were added to the audit log plugin in MySQL 5.6.20, but the version number was not increased. The version has been bumped to 1.1.
- The server could exit due to an optimizer failure to allocate enough memory for resolving outer references.
- If the audit log file was found to be corrupt at server startup, an appropriate error message was not always written. Also, if the plugin is loaded, it will be initialized regardless of whether the log was corrupt, except in the case that renaming the log file fails.
- Creating a FEDERATED table with an AUTO_INCREMENT column using a LIKE clause results in a server exit.
- The group_concat_max_len system variable could be set to its maximum value at runtime, but not in an option file.
- A server warning error message referred to the obsolete table_cache system variable rather than to table_open_cache. Thanks to Daniël van Eeden for the patch to fix some of the instances.
- In the DIGEST_TEXT column of Performance Schema statement events tables, references to system variables of the form @@var_name were stored as @ @ var_name.
- 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.
- mysql_real_connect() could close a file descriptor twice if the server was not running.
- Notification of events for the general log were received by the audit log plugin only of the general query log was enabled. Now notifications are posted regardless of whether the general query log is enabled.
更新時間:2015-04-08
更新細節:
What's new in this version:
Bugs Fixed:
- InnoDB: A TRUNCATE TABLE operation on a temporary table raised an assertion. The temporary table object was incompletely constructed when reloaded from SYS_TABLES.
- InnoDB: A full-text phrase search returned an incorrect result. An empty string was handled incorrectly when tokenizing a newly inserted row.
- InnoDB: Optimizing a FULLTEXT index raised an assertion. The last optimized word of a FULLTEXT index is stored in the CONFIG table value column which is defined as CHAR(50). An assertion was raised when the last optimized word was greater than 50 characters in length. The CONFIG table value column is defined as CHAR(200) as of MySQL 5.6.24 and MySQL 5.7.6.
- If your innodb_ft_max_token_size setting is greater than 50, it is recommended that you recreate existing InnoDB FULLTEXT indexes after upgrading to MySQL 5.6.24 or MySQL 5.7.6 to avoid this issue. FULLTEXT indexes created after upgrading to MySQL 5.6.24 or MySQL 5.7.6 are unaffected.
- InnoDB: An InnoDB memcached extra_col_value[] array was freed without checking the allocated flag, causing a server exit.
- InnoDB: A DML operation performed while a flushing operation was in progress raised a memcached-related assertion.
- InnoDB: The memcached process_arithmetic_command raised an assertion. The wrong error code was returned for a nonexistent decr key.
- InnoDB: The expiration time (exptime) defined using the memcached set command was ignored. InnoDB memcached set the expiration time to an interval value instead of a system time value.
- InnoDB: An assertion was raised when the full-text search fts_savepoint_release() function released a named transaction savepoint and all subsequent savepoints. Only the initial savepoint should be released.
- InnoDB: A full-text search optimization operation raised an assertion.
- InnoDB: Due to a regression introduced in MySQL 5.6.20, mysqld stop did not stop the mysqld server process while the InnoDB memcached plugin was active.
- InnoDB: An ALTER TABLE ... RENAME failure on a table with a FULLTEXT index raised an assertion.
- InnoDB: A severe error occurred during the log apply phase of an online ALTER TABLE operation that was converting a table with a UTF-8 charset to ROW_FORMAT=REDUNDANT.
- InnoDB: When dummy tables are created, the autoinc_mutex member of the of the dict_table_t object was created unnecessarily. Similarly, the zip_pad.mutex object of dict_index_t object was created unnecessarily for dummy indexes. To avoid unnecessary mutex contention, autoinc_mutex and zip_pad.mutex objects are now allocated and initialized on the first lock attempt.
- InnoDB: An ALTER TABLE ... RENAME operation raised an invalid assertion. The assertion code used an incorrect transaction object.
- InnoDB: A memcached append operation on an INT column caused a segmentation fault. append operations on INT columns are not supported and are now blocked.
- Partitioning: A number of ALTER TABLE statements that attempted to add partitions, columns, or indexes to a partitioned table while a write lock was in effect for this table were not handled correctly.
- Partitioning: Executing an ALTER TABLE on a partitioned table on which a write lock was in effect could cause subsequent SQL statements on this table to fail.
- Replication: When replicating from a 5.7.6 or later server to a 5.6.23 or earlier server, if the older version applier thread encountered an Anonymous_gtid_log_event it caused an assert. The fix ensures that these new log events added in MySQL 5.7.6 and later do not cause this problem with 5.6.24 and later slaves. If gtid_mode is OFF and the applier thread encounters a Gtid_log_event, the applier thread aborts with an error. If gtid_mode is ON and the applier thread encounters a Anonymous_gtid_log_event, the applier thread aborts with an error.
- Replication: When the automatic_sp_privileges variable is set, the server automatically grants the EXECUTE and ALTER ROUTINE privileges to the creator of a stored routine, if the user does not already have these privileges. When a privileged user creates a procedure with DEFINER as a non privileged user on a master, the current user is considered to be a privileged user and the mysql.procs_priv table is not updated. When such a statement was replicated to slave, the non-privileged DEFINER was considered as the current user on the slave and privileges were being allocated. This caused a difference in the privileges that were being allocated on the master and the slave. The fix ensures that creater of the stored routine is added to the binary log, and the slave now checks first if the user exists before granting privileges. To maintain compatibility with previous versions, the DEFINER is used when the INVOKER is not available. As part of this fix, anonymous users can be used to replicate from master to slave.
- Replication: When using a slave configured to use a special character set such as UTF-16, UTF-32, or UCS-2, the receiver (I/O) thread failed to connect. The fix ensures that in such a situation, if a slave's character set is not supported then default to using the latin1 character set.
- Replication: When gtid_mode=ON and slave_net_timeout was set to a low value, the slave I/O thread could appear to hang. This was due to the slave heartbeat not being sent regularly enough when the dump thread found many events that could be skipped. The fix ensures that the heartbeat is sent correctly in such a situation.
- CMake failed to detect the OpenSSL version properly for recent versions of OpenSSL (the format of the version string changed).
- For execution of prepared statements, no check was made whether an audit log plugin returned an error, so statement success could erroneously be returned.
- Debian packages were missing some dependencies.
- Corrections were made for a number of code issues that resulted in compiler warnings about array bounds, possibly uninitialized variables, and variables being set but not used.
- Following execution of a GRANT ... WITH GRANT OPTION statement, execution of a prepared statement with a view could cause a server exit.
- NULL as an expression was not recognized as a literal for calculation of Performance Schema statement digests.
- A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege.
- Trying to create a user after dropping columns from the mysql.user table could result in a server exit.
- Ordering by a GROUP_CONCAT() result could cause a server exit.
- A malformed mysql.proc table row could result in a server exit for DROP DATABASE of the database associated with the proc row.
- SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user.
- Large values of the transaction_prealloc_size system variable could cause the server to allocate excessive amounts of memory. The maximum value has been adjusted down to 128K. A similar change was made for transaction_alloc_block_size. Transactions can still allocate more than 128K if necessary; this change reduces the amount that can be preallocated, as well as the maximum size of the incremental allocation blocks.
- Certain queries on the INFORMATION_SCHEMA.INNODB_FT_CONFIG table could cause a server exit.
- A server exit could occur for queries that compared two rows using the <=> operator and the rows belonged to different character sets.
- Certain InnoDB errors caused stored function and trigger condition handlers to be ignored.
- The optimizer could raise an assertion due to incorrectly associating an incorrect field with a temporary table.
- Audit log filtering was not applied to connection events.
- With audit_log_connection_policy=ERRORS, successful COM_QUIT events were errroneously written to the audit log.
- The value of the Audit_log_events status variable did not equal the sum of the other audit log counters.
- The Audit_log_events_filtered status variable did not increment when audit log events were filtered.
- Many new features were added to the audit log plugin in MySQL 5.6.20, but the version number was not increased. The version has been bumped to 1.1.
- The server could exit due to an optimizer failure to allocate enough memory for resolving outer references.
- If the audit log file was found to be corrupt at server startup, an appropriate error message was not always written. Also, if the plugin is loaded, it will be initialized regardless of whether the log was corrupt, except in the case that renaming the log file fails.
- Creating a FEDERATED table with an AUTO_INCREMENT column using a LIKE clause results in a server exit.
- The group_concat_max_len system variable could be set to its maximum value at runtime, but not in an option file.
- A server warning error message referred to the obsolete table_cache system variable rather than to table_open_cache. Thanks to Daniël van Eeden for the patch to fix some of the instances.
- In the DIGEST_TEXT column of Performance Schema statement events tables, references to system variables of the form @@var_name were stored as @ @ var_name.
- 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.
- mysql_real_connect() could close a file descriptor twice if the server was not running.
- Notification of events for the general log were received by the audit log plugin only of the general query log was enabled. Now notifications are posted regardless of whether the general query log is enabled.
更新時間:2015-04-08
更新細節:
What's new in this version:
Functionality Added or Changed:
- CMake support was updated to handle CMake version 3.1.
- The server now includes its version number when it writes the initial “starting” message to the error log, to make it easier to tell which server instance error log output applies to. This value is the same as that available from the version system variable. Bugs Fixed:
- Replication: When using a slave configured to use a special character set such as UTF-16, UTF-32, or UCS-2, the receiver (I/O) thread failed to connect. The fix ensures that in such a situation, if a slave's character set is not supported then default to using the latin1 character set.
- Ordering by a GROUP_CONCAT() result could cause a server exit.
- A malformed mysql.proc table row could result in a server exit for DROP DATABASE of the database associated with the proc row.
- For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit.
- Large values of the transaction_prealloc_size system variable could cause the server to allocate excessive amounts of memory. The maximum value has been adjusted down to 128K. A similar change was made for transaction_alloc_block_size. Transactions can still allocate more than 128K if necessary; this change reduces the amount that can be preallocated, as well as the maximum size of the incremental allocation blocks.
- A server exit could occur for queries that compared two rows using the <=> operator and the rows belonged to different character sets.
- Certain InnoDB errors caused stored function and trigger condition handlers to be ignored.
- The optimizer could raise an assertion due to incorrectly associating an incorrect field with a temporary table.
- The server could exit due to an optimizer failure to allocate enough memory for resolving outer references.
- Starting the server with start service or mysqld_safe could result in failure to use the correct plugin directory.
- Creating a FEDERATED table with an AUTO_INCREMENT column using a LIKE clause results in a server exit.
更新時間:2015-04-08
更新細節:
What's new in this version:
Functionality Added or Changed:
- CMake support was updated to handle CMake version 3.1.
- The server now includes its version number when it writes the initial “starting” message to the error log, to make it easier to tell which server instance error log output applies to. This value is the same as that available from the version system variable. Bugs Fixed:
- Replication: When using a slave configured to use a special character set such as UTF-16, UTF-32, or UCS-2, the receiver (I/O) thread failed to connect. The fix ensures that in such a situation, if a slave's character set is not supported then default to using the latin1 character set.
- Ordering by a GROUP_CONCAT() result could cause a server exit.
- A malformed mysql.proc table row could result in a server exit for DROP DATABASE of the database associated with the proc row.
- For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit.
- Large values of the transaction_prealloc_size system variable could cause the server to allocate excessive amounts of memory. The maximum value has been adjusted down to 128K. A similar change was made for transaction_alloc_block_size. Transactions can still allocate more than 128K if necessary; this change reduces the amount that can be preallocated, as well as the maximum size of the incremental allocation blocks.
- A server exit could occur for queries that compared two rows using the <=> operator and the rows belonged to different character sets.
- Certain InnoDB errors caused stored function and trigger condition handlers to be ignored.
- The optimizer could raise an assertion due to incorrectly associating an incorrect field with a temporary table.
- The server could exit due to an optimizer failure to allocate enough memory for resolving outer references.
- Starting the server with start service or mysqld_safe could result in failure to use the correct plugin directory.
- Creating a FEDERATED table with an AUTO_INCREMENT column using a LIKE clause results in a server exit.
更新時間:2015-02-03
更新細節:
What's new in this version:
Functionality Added or Changed:
- Support for the SSL 2.0 and SSL 3.0 protocols has been disabled because they provide weak encryption. Support was added for the TLS 1.1 and TLS 1.2 protocols.
- yaSSL was upgraded to version 2.3.7.
- The valid date range of the SSL certificates in mysql-test/std_data has been extended to the year 2029. Bugs Fixed:
- InnoDB: A multiple-table delete operation caused the server to halt.
- Replication: If a DROP DATABASE statement failed on the master, mismatched tables could be left on the slave, breaking replication. This was caused by the DROP TABLE statement being binary logged if at least one table was deleted during the DROP DATABASE operation. The fix ensures that in such a situation the DROP TABLE statement is binary logged with the IF EXISTS option.
- Unlocking a temporary table after locking and truncating it could cause a server exit.
- The Enterprise Encryption plugin could mishandle string arguments.
- FLUSH TABLES on a FEDERATED table failed if the table had been idle longer than the wait_timeout time plus the TCP keepalive time.
- Selecting all columns from INFORMATION_SCHEMA.TABLES did not reopen tables if they were in the table cache, but selecting a subset of those columns under the same conditions did reopen tables.
- MySQL failed to compile with GCC 4.9.1 in debug mode.
- A file created for an internal temporary table could cause problems if the file was orphaned for some reason and the file name was reused for later queries.
更新時間:2015-02-03
更新細節:
What's new in this version:
Security Notes:
- The linked OpenSSL library for the MySQL Commercial Server has been updated from version 1.0.1j to version 1.0.1k.
- This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #20375530) Functionality Added or Changed:
- Support for the SSL 2.0 and SSL 3.0 protocols has been disabled because they provide weak encryption. Support was added for the TLS 1.1 and TLS 1.2 protocols. (Bug #19820550)
- References: See also Bug #19921150
- yaSSL was upgraded to version 2.3.7. (Bug #19695101, Bug #20201864)
- The valid date range of the SSL certificates in mysql-test/std_data has been extended to the year 2029. (Bug #18366947) Bugs Fixed:
- InnoDB: A tablespace export operation set the purge state to PURGE_STATE_STOP but the purge thread did not check the purge state until the current purge operation was completed. In the case of a large history list, the tablespace export operation was delayed, waiting for the current purge operation to finish. The purge state is now checked with every purge batch. (Bug #20266847, Bug #75298)
- InnoDB: An ALTER TABLE ... ADD INDEX operation raised an assertion due to assertion code that did not allow an online index status of ONLINE_INDEX_ABORTED_DROPPED. The assertion code has been relaxed. (Bug #20198726)
- InnoDB: An error occurred when the push_warning_printf function was invoked during server recovery. This function was previously used to print a warning message to the client. Also, current_thd was NULL when the server was restarted. (Bug #20144839)
- InnoDB: An ALTER TABLE operation that changed the name of a foreign key column resulted in a failure when reloading the foreign key constraint. The previous column name remained in the data dictionary cache instead of being evicted. (Bug #20031243)
- InnoDB: Error messages regarding a size limitation on BLOB or TEXT data inserted in a single transaction have been revised. (Bug #19975322)
- InnoDB: DML operations on a table with full-text search indexes raised an invalid assertion. (Bug #19905246)
- References: This bug is a regression of Bug #19314480.
- InnoDB: A multiple-table delete operation caused the server to halt. (Bug #19815702)
- InnoDB: A FLUSH TABLES operation raised an assertion. (Bug #19803418)
- InnoDB: With change buffering enabled, a buffered sequence of operations that should not have been buffered resulted in an Unable to purge a record error. (Bug #19528825, Bug #73767)
- InnoDB: On non-Windows platforms, os-file_pread and os_file_pwrite functions return -1 when an error occurs. This value was printed in an error message as the number of bytes read or written. Instead of printing the -1 value in the error message, a separate error message indicating a system call failure is now printed. Thanks to David Bennett for the patch. (Bug #19315210, Bug #73365)
- InnoDB: A slow shutdown (innodb_fast_shutdown=0) after crash recovery raised an assertion. Slow shutdown did not wait for background rollback operations to finish before proceeding. (Bug #16862810)
- InnoDB: The integer column value was handled incorrectly for the memcached incr and decr commands. (Bug #69415, Bug #20083106, Bug #74874, Bug #20044123)
- Partitioning: A failed ALTER TABLE ... TRUNCATE PARTITION statement or a failed TRUNCATE TABLE statement against a partitioned table sometimes left inconsistent metadata in the table cache; subsequent SQL statements reusing this metadata failed, and could in some cases also lead to a failure of the server. (Bug #74292, Bug #19786861)
- Replication: If a client thread on a slave executed FLUSH TABLES WITH READ LOCK while the master executed a DML, executing SHOW SLAVE STATUS in the same client became blocked, causing a deadlock. The fix ensures that the read lock is only held during the period that the relay log is being updated and the deadlock is avoided. (Bug #19843808)
- Replication: When an XA transaction was active, executing an internal rollback, for example using the BINLOG statement, resulted in an assertion. The fix ensures that a rollback happens only for a slave when a transaction spans multiple binary log files. Rollback does not happen now if the Format_description comes from the BINLOG statement being executed in the MySQL client. (Bug #74597, Bug #19928622)
- Replication: In normal usage, it is not possible for a slave to have more GTIDs than the master. But in certain situations, such as after a hardware failure or incorrectly cleared gtid_purged, the master's binary log could be truncated. This fix ensures that in such a situation, the master now detects that the slave has transactions with GTIDs which are not on the master. An error is now generated on the slave and the I/O thread is stopped with an error. The master's dump thread is also stopped. This prevents data inconsistencies during replication. (Bug #72635, Bug #18789758)
- Replication: When using SHOW SLAVE STATUS to monitor replication performance, Seconds_Behind_Master sometimes displayed unexpected lag behind the master. This was caused by Previous_gtids_log_events being written to the slave's relay log with a timestamp behind the master, and then being used to calculate the Seconds_Behind_Master. This fix ensures that events generated on the slave that are added to the relay log and are not used when calculating Seconds_Behind_Master. (Bug #72376, Bug #18622657)
- On Ubuntu 14.10, MySQL install operations could fail to reload AppArmor. (Bug #20092641)
- EXPLAIN within an XA transaction could raise an assertion. (Bug #19941492)
- Binary log files created by streaming the binary log from a remote server with mysqlbinlog were given an access mode more permissive than the original files. (Bug #19649868)
- If the audit_log plugin encountered a disk-full error, the server would exit.
- Now, if the file system to which the audit log is being written fills up, a “disk full” error is written to the error log. Audit logging continues until the audit log buffer is full. If free disk space has not been made available by the time the buffer fills, client sessions will hang, and stopping the server at the time of client sessions hanging will result in audit log corruption. To avoid this if client sessions are hung, ensure that free space is available on the audit logging file system before stopping the server. (Bug #19411485)
- For failure to create a temporary table due to being out of file descriptors, the server exited rather than returning an error. (Bug #18948649)
- For some queries that contained a derived table (subquery in the FROM clause), delay of materialization resulted in a suboptimal execution plan due to a less accurate row-count estimate. (Bug #18607971)
- For UPDATE and DELETE statements, the server could exit after attempting to access an uninitialized data structure. (Bug #18036143)
- Starting the server with start service or mysqld_safe could result in failure to use the correct plugin directory. (Bug #17619241)
- FLUSH TABLES on a FEDERATED table failed if the table had been idle longer than the wait_timeout time plus the TCP keepalive time. (Bug #17599258)
- Selecting all columns from INFORMATION_SCHEMA.TABLES did not reopen tables if they were in the table cache, but selecting a subset of those columns under the same conditions did reopen tables. (Bug #16869534)
- If my_write() encountered a disk-full condition, it could return an incorrect error value. (Bug #16078792, Bug #19984788)
- InnoDB boolean full-text searches incorrectly handled + combined with parentheses; for example, +word1 +(>word2
更新時間:2015-02-03
更新細節:
What's new in this version:
Functionality Added or Changed:
- Support for the SSL 2.0 and SSL 3.0 protocols has been disabled because they provide weak encryption. Support was added for the TLS 1.1 and TLS 1.2 protocols.
- yaSSL was upgraded to version 2.3.7.
- The valid date range of the SSL certificates in mysql-test/std_data has been extended to the year 2029. Bugs Fixed:
- InnoDB: A multiple-table delete operation caused the server to halt.
- Replication: If a DROP DATABASE statement failed on the master, mismatched tables could be left on the slave, breaking replication. This was caused by the DROP TABLE statement being binary logged if at least one table was deleted during the DROP DATABASE operation. The fix ensures that in such a situation the DROP TABLE statement is binary logged with the IF EXISTS option.
- Unlocking a temporary table after locking and truncating it could cause a server exit.
- The Enterprise Encryption plugin could mishandle string arguments.
- FLUSH TABLES on a FEDERATED table failed if the table had been idle longer than the wait_timeout time plus the TCP keepalive time.
- Selecting all columns from INFORMATION_SCHEMA.TABLES did not reopen tables if they were in the table cache, but selecting a subset of those columns under the same conditions did reopen tables.
- MySQL failed to compile with GCC 4.9.1 in debug mode.
- A file created for an internal temporary table could cause problems if the file was orphaned for some reason and the file name was reused for later queries.