MySQL (32-bit) 歷史版本列表 Page3

最新版本 MySQL 8.0.35.0 (32-bit)

MySQL (32-bit) 歷史版本列表

MySQL 專為企業組織提供關鍵業務數據庫應用程序而設計。它為企業開發人員,數據庫管理員和 ISV 提供了一系列新的企業功能,以提高開發,部署和管理工業強度應用程序的效率.如果您需要 MySQL 數據庫的 GUI,可以下載 - NAVICAT(MySQL GUI)。它支持將 MySQL,MS SQL,MS Access,Excel,CSV,XML 或其他格式導入到 MySQL.MySQL 數據庫... MySQL (32-bit) 軟體介紹


MySQL 5.5.50 (32-bit) 查看版本資訊

更新時間:2016-06-06
更新細節:

What's new in this version:

Functionality Added or Changed:
- The version of the tcmalloc library included in MySQL distributions was very old. It has been removed and is no longer included with MySQL

Bugs Fixed:
- INSERT with ON DUPLICATE KEY UPDATE and REPLACE on a table with a foreign key constraint defined failed with an incorrect “duplicate entry” error rather than a foreign key constraint violation error
- Setting sort_buffer_size to a very large value could cause some operations to fail with an out-of-memory error
- Several potential buffer overflow issues were corrected
- If the CA certificate as given to the --ssl-ca option had an invalid path, yaSSL returned an error message different from OpenSSL. Now both return SSL connection error: SSL_CTX_set_default_verify_paths failed
- Some string functions returned one or a combination of their parameters as their result. If one of the parameters had a non-ASCII character set, the result string had the same character set, resulting in incorrect behavior when an ASCII string was expected
- A null pointer dereference of a parser structure could occur during stored procedure name validation
- mysqld_multi displayed misleading error messages when it was unable to execute my_print_defaults

MySQL 5.7.13 (32-bit) 查看版本資訊

更新時間:2016-06-04
更新細節:

What's new in this version:

ACCOUNT MANAGEMENT NOTES:
- In MySQL 5.7.8, the maximum length of MySQL user names was increased from 16 to 32 characters, but some applicable contexts for this increase were overlooked. Additional changes in maximum user name length now have been applied.
- If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate the changes to the mysql system database. A server from MySQL 5.7.13 or higher for which mysql_upgrade has not been run continues to permit a maximum of 77 characters in the system tables mentioned previously, and an ER_USER_COLUMN_OLD_LENGTH error will occur in those system table contexts where a user_name@host_name value from 78 to 93 characters long is given.

AUDIT LOG NOTES:
- The audit_log plugin that forms the basis for MySQL Enterprise Audit now supports fine-grained filtering of events. This enables a reduction in the number of log entries written to the audit log file, which increases overall performance due to fewer write operations during log recording. It also simplifies subsequent audit log processing in terms of readability and processing time.
- Fine-grained audit log filtering is rule based, implemented using tables that store filter definitions and a set of user-defined functions (UDFs) that enable filter manipulation. To simplify installing the tables and UDFs along with the audit_log plugin, an installation script is now provided. For more information, see Installing or Uninstalling MySQL Enterprise Audit, and Audit Log Filtering.
- By default, audit log filtering now logs no auditable events for any users. This differs from the pre-MySQL 5.7.13 legacy audit log, which logs all auditable events for all users. To produce log-everything behavior, see the installation instructions.

CONFIGURATION NOTES:
- On platforms for which systemd support is installed, systemd has the capability of managing multiple MySQL instances. For details, see Configuring Multiple MySQL Instances Using systemd. Consequently, mysqld_multi and mysqld_multi.server are not installed because they are unnecessary. (Bug #81093, Bug #23134620)

SECURITY NOTES:
- The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.1t. Issues fixed in the new version are described at http://www.openssl.org/news/vulnerabilities.html.
- This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #23229564)
- MySQL Server now includes an SQL interface for keyring key management, implemented as a set of user-defined functions (UDFs) that access the functions provided by the internal keyring service. For more information, see Keyring Key Management Functions. For information about the keyring service functions invoked by the UDFs, see The Keyring Service. For general keyring information, see The MySQL Keyring.

FUNCTIONALITY ADDED OR CHANGED:
- For better separation of output from multiple statements, mysqltest now flushes output sent to stdout when the output destination is not a file. Previously, flushing occurred only for file output. (Bug #21435906)
- support-files/MacOSX/ReadMe.txt is no longer included in MySQL distributions. (Bug #81038, Bug #23088916)
- The version of the tcmalloc library included in MySQL distributions was very old. It has been removed and is no longer included with MySQL. (Bug #80994, Bug #23068660)
- The my_make_scrambled_password() function in the C client library was restricted earlier in MySQL 5.7 (not exported to client programs). The function has once again been made visible to client programs. (Bug #80974, Bug #23061746)
- It is possible to use ALTER TABLE to change the default value of a column col_name, which may change the value of a generated column expression that refers to the column using DEFAULT(col_name). For this reason, ALTER TABLE operations that change the definition of a column now cause a table rebuild if any generated column expression uses DEFAULT(). (Bug #80299, Bug #22680839)
- This release adds an unquoting extraction operator ->>, sometimes also referred to as an inline path operator, for use with JSON documents stored in MySQL. The new operator is similar to the -> operator, but performs JSON unquoting of the value as well.
- The ->> operator can be used in SQL statements wherever JSON_UNQUOTE(JSON_EXTRACT()) would be allowed. This includes (but is not limited to) SELECT lists, WHERE and HAVING clauses, and ORDER BY and GROUP BY clauses.
- For more information, see Functions That Search JSON Values, and JSON Path Syntax. (Bug #78736, Bug #21980346)

BUGS FIXED:
- InnoDB: A rollback operation run concurrently with an operation involving a generated virtual column caused a server exit. (Bug #23313102)
- References: This issue is a regression of: Bug #21869656.
- InnoDB: Potential buffer overflow issues were corrected for the InnoDB memcached plugin. (Bug #23187607)
- InnoDB: An ALTER TABLE operation that added an AUTO_INCREMENT column on a table with virtual columns raised an assertion. (Bug #23052231)
- InnoDB: Statements executed in a transaction that was rolled back asynchronously by a higher priority transaction caused a deadlock error and subsequent replication failure. (Bug #23021168, Bug #80898)
- InnoDB: An ALTER TABLE operation that attempted to add a generated virtual column and a full-text index raised an assertion. (Bug #23014521)
- InnoDB: The full-text index cache was freed during a background index cache synchronization. (Bug #22996488)
- InnoDB: A full-text index operation raised an assertion. (Bug #22963169)
- InnoDB: Memory was allocated to I/O slots unnecessarily, causing an apparent memory leak. (Bug #22956469, Bug #80772)
- InnoDB: An ALTER TABLE operation raised an assertion when attempting to create a key containing a generated column. (Bug #22951879)
- InnoDB: A startup failure due to an invalid option resulted in a server exit after a subsequent restart. An error returned by the innobase_start_or_create_for_mysql function was not checked. (Bug #22939581, Bug #80761)
- InnoDB: An ALTER TABLE ... IMPORT TABLESPACE operation on file-per-table tablespace containing an encrypted table failed when run in a different session than the preceding ALTER TABLE ... DISCARD TABLESPACE operation. (Bug #22918999, Bug #80708)
- InnoDB: A FLUSH TABLES operation on a table with a discarded tablespace raised an assertion. (Bug #22899690, Bug #80669)
- InnoDB: A DML operation involving a table with a virtual column raised an assertion. (Bug #22899305)
- InnoDB: An invalid read at innobase_get_computed_value() raised a Valgrind error. (Bug #22898168, Bug #80667)
- InnoDB: Online DDL operations like ALTER TABLE ... ADD INDEX were not permitted for tables created with the ENCRYPTION attribute. (Bug #22897921)
- InnoDB: InnoDB memcached code assumed the nonexistence of the htonll() function on OS X, resulting in a build failure on OS X 10.10 and later. (Bug #22865112)
- InnoDB: Starting the server in read-only mode failed when encrypted tables were present. The call to fil_encryption_rotate() was not skipped when the server was started in read-only mode. (Bug #22723797)
- InnoDB: An R-tree purge operation raised an assertion. (Bug #22698076, Bug #80327)
- InnoDB: An INSERT operation on a table with a FULLTEXT index and FTS_DOC_ID column failed because the inserted FTS_DOC_ID value exceeded the permitted gap between consecutive FTS_DOC_ID values. To avoid this problem, the permitted gap between the largest used FTS_DOC_ID value and new FTS_DOC_ID value was raised from 10000 to 65535. (Bug #22679185)
- InnoDB: Validation code for transparent page compression incorrectly permitted innodb_strict_mode=OFF, which allowed the COMPRESSION attribute to be applied to a general tablespace. Page compression is only supported with file-per-table tablespaces. (Bug #22615096, Bug #80182)
- InnoDB: An memory order issue related to atomic operations caused assertion failures on ARM64 and POWER platforms. (Bug #22608616)
- InnoDB: DROP TABLESPACE returned an error if the remote general tablespace data file was missing. (Bug #22232892, Bug #79330)
- InnoDB: An ALTER TABLE operation that changed table row format from COMPACT to COMPRESSED raised an assertion. A function involved in the operation passed incorrect page size information. (Bug #22046353)
- InnoDB: With innodb_autoinc_lock_mode=0, multiple threads waiting for a table-level lock caused an unexpected deadlock. (Bug #21983865, Bug #78761)
- InnoDB: A race condition in trx_kill_blocking() raised an assertion. (Bug #21508537)
- InnoDB: An OPTIMIZE TABLE operation on a table with a full-text index raised an assertion. (Bug #21378944)
- InnoDB: A buffer pool load operation resulted in a “Cannot allocate 0 bytes” error. (Bug #21371070)
- InnoDB: A FLUSH TABLES ... FOR EXPORT operation appeared to stall. A loop in the ibuf_contract_in_background function failed to exit. (Bug #21133329, Bug #77011)
- InnoDB: A full-text query raised an assertion. Under certain circumstances, DDL operations such as ALTER TABLE ... RENAME caused full-text auxiliary tables to be removed on server restart. (Bug #13651665)
- Replication: With gtid_mode=ON, executing an empty query before setting gtid_next made the latter action fail. It was because only statements that do not change the data can be executed before one can successfully change gtid_next, and an empty query was not considered one of those “safe” statements. This fix allows the setting of gtid_next after an empty query. (Bug #22811150)
- Replication: Slaves running MySQL 5.7 could not connect to a MySQL 5.5 master due to an error retrieving the server_uuid, which is not part of MySQL 5.5. This was caused by changes in the method of retrieving the server_uuid. (Bug #22748612)
- References: This issue is a regression of: Bug #21455603.
- Replication: Setting certain semisynchronous-replication configurations on the master server when semisynchronous replication was not enabled on it might cause the server to exit. This fix prevents the unexpected exits to occur in the situation. (Bug #22602324)
- Replication: The variable explicit_defaults_ts was not initialized during the construction of a Query_event object. That caused Valgrind warnings for dependency on an uninitialized variable. This fix makes sure the variable is initialized. (Bug #22110916, Bug #78999)
- References: This issue is a regression of: Bug #18885916, Bug #72794.
- Replication: In the next_event() function, which is called by a slave's SQL thread to read the next even from the relay log, the SQL thread did not release the relaylog.log_lock it acquired when it ran into an error (for example, due to a closed relay log), causing all other threads waiting to acquire a lock on the relay log to hang. With this fix, the lock is released before the SQL thread leaves the function under the situation. (Bug #21697821)
- References: See also: Bug #20492319.
- Replication: A partially failed statement was not correctly consuming an auto-generated or specified GTID when binary logging was disabled. The fix ensures that a partially failed DROP TABLE, a partially failed DROP USER or a partially failed DROP VIEW consume respectively the relevant GTID and save it into @@GLOBAL.GTID_EXECUTED and mysql.gtid_executed table when binary logging is disabled. (Bug #21686749)
- Replication: An intermittent ASan error was being reported on the rpl.rpl_checksum_cache test. The error reported was related to the binary log sender doing a heap-use-after-free on a given memory address. (Bug #78995, Bug #22109863)
- Replication: mysqldump has been updated to make it compatible with multi-source replication. Now when replication channels other than the default channel are found, mysqldump --dump-slave outputs a CHANGE MASTER TO statement for each replication channel. (Bug #78467, Bug #21855705)
- Replication: If a multi-threaded replication slave running with relay_log_recovery=1 stopped unexpectedly, during restart the relay log recovery process could fail. This was due to transaction inconsistencies not being filled, see Handling an Unexpected Halt of a Replication Slave. Prior to this fix, to recover from this situation required manually setting relay_log_recovery=0, starting the slave with START SLAVE UNTIL SQL_AFTER_MTS_GAPS to fix any transaction inconsistencies and then restarting the slave with relay_log_recovery=1. This process has now been automated, enabling relay log recovery of a multi-threaded slave upon restart automatically. (Bug #77496, Bug #21507981)
- Fedora builds now are configured using -DMYSQL_MAINTAINER_MODE=0 to silence GCC 6 warnings. (Bug #23274249)
- Allocation of a large number (2^20) of Performance Schema index statistic objects could cause a server exit. (Bug #23188107)
- If the keyring_okv plugin configuration directory was missing, attempts to rotate the InnoDB master key could cause a server exit. (Bug #23149683)
- INSERT with ON DUPLICATE KEY UPDATE and REPLACE on a table with a foreign key constraint defined failed with an incorrect “duplicate entry” error rather than a foreign key constraint violation error. (Bug #23135731)
- References: This issue is a regression of: Bug #78853, Bug #22037930.
- Contention in Performance Schema mutex instrumentation creation and destruction has been reduced, such that mutexes for which instruments are frequently created and destroyed are maintained in separate pages from those for which instruments are rarely created and destroyed. (Bug #22965826)
- With certain build options, an uninitialized variable in get_key_scans_params() could produce a compilation error. (Bug #22916059)
- Adding new tokens to the parser caused query digest values to change. (Bug #22906606)
- For debug builds, CONCAT_WS() could raise an assertion if there was nothing to append. (Bug #22888420)
- Fixed Valgrind warnings for failed LEAST() evaluations. (Bug #22883278)
- INET_NTOA() could cause a server exit when producing an error message. (Bug #22881810)
- References: This issue is a regression of: Bug #22042027.
- The my_write() call could cause a server exit if it attempted to check the current connection and the connection had been killed. (Bug #22867809)
- References: This issue is a regression of: Bug #21688407.
- Invoking Enterprise Encryption functions in multiple threads simultaneously could cause a server exit. (Bug #22839278)
- Setting log_syslog_tag to NULL could cause a server exit. (Bug #22834781)
- References: This issue is a regression of: Bug #22180046.
- If the expression for an indexed generated column contained an AND or OR operator, the optimizer could choose that index too often and create execution plans that produced incorrect results. (Bug #22810883)
- CREATE TABLE statements in mysqlpump output could be missing KEY clauses and would not load. (Bug #22726732)
- Attempting to use Enterprise Encryption functions after creating and dropping them could cause a server exit. (Bug #22669012)
- Setting sort_buffer_size to a very large value could cause some operations to fail and result in a server exit. (Bug #22594514)
- For an InnoDB table containing generated columns, using the table in a join could result in a server exit due to improper error checking. (Bug #22561845)
- REPLACE on a table with an indexed generated column could cause a server exit if the index prefix length was calculated incorrectly. (Bug #22445211)
- An UPDATE operation affecting a generated virtual BLOB column could cause a server exit. (Bug #22444212)
- SHOW CREATE TABLE for a table containing a generated column could cause a server exit or produce an Illegal mix of collations error. (Bug #22392268)
- On a slave server, replication of an UPDATE statement that updated an indexed BLOB virtual generated column of an InnoDB table could cause a server exit. (Bug #22241015)
- An assertion could be raised when a deadlock occurred due to a SELECT ... GROUP BY ... FOR UPDATE query executed using a Loose Index Scan. (Bug #22187476)
- mysqlpump could exit due to improper handling of error conditions in a dump thread. (Bug #22017120)
- Several potential buffer overflow issues were corrected. (Bug #21977380, Bug #23187436, Bug #23202778, Bug #23195370, Bug #23202699)
- If the CA certificate as given to the --ssl-ca option had an invalid path, yaSSL returned an error message different from OpenSSL. Now both return SSL connection error: SSL_CTX_set_default_verify_paths failed. (Bug #21920657)
- Installing MySQL from a yum or zypper repository resulted in /var/log/mysqld.log being created with incorrect user and group permissions. (Bug #21879694, Bug #78512)
- With show_compatibility_56=OFF, SHOW VARIABLES and SHOW STATUS statements having a WHERE clause did not work. (Bug #21783883)
- The audit_log plugin failed to abort the current operation when told to do so by a plugin handler for a MYSQL_AUDIT_PARSE_PREPARSE event. (Bug #21457956)
- Memory leaks reported by Valgrind for mysqlpump were fixed. (Bug #21237667)
- Some string functions returned one or a combination of their parameters as their result. If one of the parameters had a non-ASCII character set, the result string had the same character set, resulting in incorrect behavior when an ASCII string was expected. (Bug #18740222)
- On Fedora 24, upgrades using a Community MySQL Server RPM failed to replace an installed MariaDB Galera server due to a change in the MariaDB package. (Bug #81390, Bug #23273818)
- The mysql_read_defaults_options() function was missing a break statement, causing any option value for the --ssl-cipher option also to be applied to the --tls-version option, with unpredictable results. (Bug #81139, Bug #23129821)
- A DELETE from joined tables using a derived table in the WHERE clause failed if one of the joined tables was used in the derived table. (Bug #81014, Bug #23074801)
- Compiling of clients that used the MySQL C API could fail if they used an obsolete path to mysql.h or and did not set the include path. This was due to use of #include notation rather than #include "file_name" in internal MySQL header files, which have been adjusted. (Bug #80935, Bug #23047194)
- MySQL did not compile under Solaris 12 using Sun Studio. To correct this, instances of __attribute__ were changed to MY_ATTRIBUTE. (Bug #80748, Bug #22932576)
- The service_mysql_keyring.h and services.h header files misspelled mysql_keyring_service_st as mysql_keyring_file_service_st. (Bug #80688, Bug #22908232)
- The fix for Bug #79194 did not cover the eq_ref access method, with the result that left joins could return incorrect results.
- This bug fix has a very small negative performance effect such that it fails to cache an eq_ref-accessed row that is on the inner side of an outer join. Regular inner joins are not affected.
- References: This issue is a regression of: Bug #79194, Bug #22176604.
- The sanity() macro in strings/decimal.c produced Valgrind warnings due to reading uninitialized buffer contents. (Bug #80461, Bug #22782203, Bug #22839915)
- Starting the server with --initialize failed if the keyring_file_data system variable was also set at startup. To handle this, with --initialize the server no longer skips registration of plugins loaded with the --early-plugin-load option. (Bug #80451, Bug #22777039)
- Loading the Rewriter query rewrite plugin when there was no query_rewrite database resulted in Valgrind warnings. (Bug #80333, Bug #22710312)
- The optimizer transformed EXISTS (SELECT * ...) constructs to EXISTS (SELECT 1 ...) before all columns in the inner subquery had been resolved, which could result in rejection of valid queries that included a HAVING clause without GROUP BY in the subquery. (Bug #80231, Bug #22655856)
- For a server compiled with -DWITH_PERFSCHEMA_STORAGE_ENGINE=0, a memory leak could occur for buffered log messages used during server startup. (Bug #80089, Bug #22578574)
- A query could return incorrect results under these conditions: A column with a default value contained NULL; SELECT DISTINCT or a GROUP BY clause was used and the column containing the NULL value was part of the select list; an InnoDB temporary table was used during query processing. (Bug #79591, Bug #22343910)
- A null pointer dereference of a parser structure could occur during stored procedure name validation. (Bug #79396, Bug #22286421)
- Database initialization failed during installation using Ubuntu 15.10 packages. (Bug #79377, Bug #22252900)
- mysql_upgrade failed to widen the User and Proxied_user columns in the mysql.proxies_priv system table from 16 to 32 characters. (Bug #78254, Bug #21762656)
- Failure of UNINSTALL PLUGIN could lead to inaccurate or confusing errors for subsequent INSTALL PLUGIN operations. (Bug #74977, Bug #20085672)
- mysqld_multi displayed misleading error messages when it was unable to execute my_print_defaults. (Bug #74636, Bug #19920049)
- Previously, upgrading the server using an RPM package (including installation using yum) required upgrading the client package to the same MySQL version, which may be undesirable for some installations. This rule has been relaxed so that upgrading to a General Availability (GA) server version requires only that some GA client version be installed, which is less likely to require a client upgrade. (Bug #72230, Bug #18518216)
- mysqldump failed silently with no error message when it encountered an error while executing FLUSH LOGS. (Bug #71783, Bug #18284273)

MySQL 5.6.30 (32-bit) 查看版本資訊

更新時間:2016-04-13
更新細節:

MySQL 5.5.49 (32-bit) 查看版本資訊

更新時間:2016-04-12
更新細節:

What's new in this version:

Bugs Fixed:
- InnoDB: Running REPLACE operations on multiple connections resulted in a hang
- Replication: The test case main.merge failed when the variables binlog_format was set to “ROW,” as the server tried to get information for table creation for a child table before it was opened. With this fix, the server skips getting information for the table in the situation
- MySQL did not build with GCC 5
- The System-V initialization script for RHEL6 or older failed to enable the mysqld service by default
- Improper host name checking in X509 certificates could permit man-in-the-middle attacks.
- A boolean mode full-text search caused a segmentation fault
- Concurrent selecting and flushing of a FEDERATED table while killing connections accessing it could result in a server exit
- Executing GRANT PROXY statements after altering the definition of the mysql.user system table could result in a server exit
- Certain error messages included part of the SQL statement that produced them, possibly exposing data
- Character set conversion operations on NULL parameters to prepared statements could cause a server exit
- For INSERT and UPDATE operations that caused FOREIGN KEY constraint violations, errors were reported rather than warnings when the IGNORE keyword was used
- Processlist state information was not updated correctly for LOAD DATA INFILE and could show a state different from executing

MySQL 5.7.12 (32-bit) 查看版本資訊

更新時間:2016-04-12
更新細節:

What's new in this version:

Configuration Notes:
- Incompatible Change: To load a keyring plugin, the --early-plugin-load option is used. Previously, the default --early-plugin-load option value was the name of the keyring_file plugin library file. Now the default value is empty.

Important
- InnoDB tablespace encryption requires the keyring_file plugin to be loaded prior to InnoDB initialization, so this change of default --early-plugin-load value introduces an incompatibility for upgrades from 5.7.11 to 5.7.12 or higher. Administrators who have encrypted InnoDB tablespaces must take explicit action to ensure continued loading of the keyring_file plugin: Start the server with an --early-plugin-load option that names the plugin library file. For example, on platforms where the plugin library file suffix is .so, use these lines in the server my.cnf file: [mysqld] early-plugin-load=keyring_file.so
- On other platforms, adjust the file name suffix as necessary. For more information, see The MySQL Keyring.

Security Notes:
- InnoDB: The InnoDB tablespace encryption feature, which provides at-rest data encryption for InnoDB tables, now supports Oracle Key Vault for encryption key management. Oracle Key Vault support relies on the keyring_okv plugin which is available in MySQL Enterprise Edition. A secure and robust encryption key management solution such as OKV is critical for security and for compliance with various security standards. For more information, see InnoDB Tablespace Encryption.
- The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.1s. Issues fixed in the new version are described at http://www.openssl.org/news/vulnerabilities.html.
- This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #22685885, Bug #22923458)
- MySQL Enterprise Edition now includes a keyring_okv plugin that uses Oracle Key Vault for keyring backend storage. For more information, see The MySQL Keyring.

Functionality Added or Changed:
- For queries with many OR conditions, the optimizer now is more memory-efficient and less likely to exceed the memory limit imposed by the range_optimizer_max_mem_size system variable. In addition, the default value for that variable has been raised from 1536000 to 8388608. (Bug #79450, Bug #22283790)

Bugs Fixed:
- InnoDB; Partitioning: INSERT and SELECT statements against a partitioned InnoDB table having generated columns were not always handled correctly. (Bug #22444530)
- References: See also Bug #21776494, Bug #21824564, Bug #21864838.
- InnoDB: An error was returned on startup when a replication slave attempted to access an encrypted table. The server UUID used to compose the master key name was not persisted to the tablespace data file, resulting in the use of an incorrect master key. (Bug #22912582)
- InnoDB: In debug builds, an unnecessary buf_block_align() call could cause a latching order violation. A DML operation resulted in a page mismatch assertion due to the same buf_block_align() call. (Bug #22709463, Bug #21321238)
- InnoDB: An ALTER TABLE ... ADD COLUMN operation on a table with virtual columns raised an assertion. (Bug #22650296)
- InnoDB: An unnecessary comparison in tablespace encryption code caused compiler warnings. (Bug #22645816)
- InnoDB: INNODB_SYS_TABLESPACES could report incorrect ALLOCATED_SIZE and FILE_SIZE values for a general tablespace created outside of the data directory. The i_s_dict_fill_sys_tablespaces() function generated an incorrect remote file path. (Bug #22590095, Bug #80070)
- InnoDB: In debug builds, an update operation on a table with virtual columns raised an assertion. (Bug #22572997)
- InnoDB: Modifications were made to InnoDB code to handle warnings when compiling with Microsoft Visual Studio 2015. (Bug #22542547, Bug #79964)
- InnoDB: Running REPLACE operations on multiple connections resulted in a hang. (Bug #22530768, Bug #79185)
- InnoDB: Tabespace encryption-related operations resulted in a hang on FreeBSD. (Bug #22520464, Bug #79901)
- InnoDB: MySQL stalled when syncing the InnoDB full-text index cache. (Bug #22516559, Bug #16510576, Bug #73816)
- InnoDB: A CREATE TABLE ... DATA DIRECTORY operation failed to create a table while innodb_flush_method was set to O_DIRECT. (Bug #22180006, Bug #79200)
- References: This bug is a regression of Bug #21113036.
- InnoDB: In debug builds, a buffer pool resizing operation resulted in a segmentation violation. The buf_pool_resizing variable was not protected. (Bug #22179317)
- InnoDB: The innodb_open_files setting could exceed the open files limit. (Bug #22111472)
- InnoDB: InnoDB attempted crc32 checksum validation instead of innodb after a crc32 checksum validation failure, causing repeated crc32 checksum validation attempts. Checksum validation order is now optimized dynamically.
- Thanks to Daniel Black for the patch. (Bug #79725, Bug #22452597)
- Replication: The recovery channel must be set using the CHANGE MASTER command, and the plugin will not set default values for the user or password fields in CHANGE MASTER. The server side recovery channel is restricted to MASTER_USER and MASTER_PASSWORD, whereas all other settings for the change master are added on the plugin side, as done previously. Attempting to use other values will emit ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED errors. The password value used on CHANGE MASTER commands for the recovery channel is not logged as plain text in any log or history files. Also, at the end of recovery, the plugin no longer resets info objects, but does continue to purge the logs. (Bug #22815932)
- Replication: When a binlog-less slave connected to a GR master, it failed with "Error running query" in the error log. But, there was no information available in "SHOW SLAVE STATUS" or P_S.replication_applier_status_by_worker. (Bug #22699395)
- Replication: Setting the relay log recovery to 1 could generate an error during recovery. Once the relay log recovery happened, repositories were not initiated and the server reported an error related to this. Also, attempting to execute "START GROUP_REPLICATION" in this situation could cause a crash. To fix this, the recovery procedure will no longer take the group_replication_channel into consideration. It now skips the relay logs of the GR channel to proceed further. (Bug #22523554)
- Replication: Issuing STOP SLAVE caused a spurious Error reading packet from server: Lost connection to MySQL server during query message to be written to the error log. With this fix, when connection to the master is lost, the abort_slave flag is checked and the error message is printed only if the flag is not set. (Bug #22305605, Bug #79504)
- References: See also Bug #12977988, Bug #22290309.
- Replication: When binlog was disabled, the GTID specified by GTID_NEXT when committing an empty transaction caused by a 'BEGIN' command was being saved into GLOBAL@gtid_executed when it should not have been. However, when binlog was enabled, the same situation did not save it.
- Now, when "@@SESSION.GTID_NEXT == 'UUID:NUMBER'", the 'BEGIN' command causes an 'ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET' error inside an empty or non-empty transaction regardless of the binlog setting, since it causes an implicit commit like other DDLs. In this case, the GTID specified by GTID_NEXT is not saved into GLOBAL@gtid_executed. (Bug #22130929)
- Replication: When replication was configured but not started on a slave, the variable currently_executing_gtid was not properly initialized, but it would be used if the performance_schema table replication_applier_status_by_worker was queried, causing assertion failures and pointer issues. With this fix, the variable is now properly initialized at the construction of the Relay_log_info object. (Bug #21953132, Bug #78722)
- Replication: RESET SLAVE ALL could delete a channel even when master_pos_wait and wait_until_sql_thread_after_gtid were still waiting for binlog to be applied. This could cause a MySQL server exit when the functions tried to access the channel that was deleted. Now, a channel reference counter was added that is increased if the channel should not be deleted when the functions are running. RESET SLAVE ALL will wait for no reference, and then it will delete the channel. (Bug #21842399, Bug #78445)
- Replication: When relay_log_recovery=1, a slave server, at its initialization, still tried to scan the relay log files in order to update Retrieved_Gtid_Set and the transaction parser state, which was an unnecessary waste of resources because the slave I/O thread would just be initialized to the SQL thread position in the new relay log file. With this fix, the slave server skips scanning the relay log files when relay_log_recovery=1. (Bug #21798355, Bug #78352)
- Replication: In Slave_worker::write_info(), DBUG_ENTER() had “Master_info::write_info” as its argument instead of “Slave_worker::write_info”. This fix corrects the argument. Thanks to Stewart Smith for the patch. (Bug #21658067, Bug #78133)
- Replication: XA transactions were not handled correctly when --gtid-mode=ON and the binary log was disabled. It was because on both master and slave servers, the GTID state was sometimes not saved and the GTID ownership was sometimes not cleaned up. This fix makes sure those steps are now properly performed. (Bug #21618727)
- References: See also Bug #22165138, Bug #77740, Bug #21452916.
- Replication: When a multi-threaded slave stopped with an error, the same error message was printed three times. Now, the SQL thread's kill acceptance status is saved, and only printed once. (Bug #21198611, Bug #77237)
- Replication: When using a multi-threaded slave with relay_log_info_repository set to TABLE, the slave applier thread failed to write XA transactions to the worker configuration. (Bug #20988291)
- Replication: mysqlbinlog --verbose displayed BINARY and VARBINARY data as ordinary strings, causing any single quote (“'”) or backslash (“”) among the data to be printed as such, which was confusing to the users and, in the case of a backslash, caused the next character to be skipped. This fix makes mysqlbinlog print the characters' hexadecimal values (“x27” for single quote and “x5c” for backslash) instead. (Bug #20836250)
- Replication: The test case main.merge failed when the variables binlog_format was set to “ROW,” as the server tried to get information for table creation for a child table before it was opened. With this fix, the server skips getting information for the table in the situation. (Bug #20574550)
- Replication: If a query on a master generated an error and partial results were written to the binary log, for example due to a DROP TABLE IF EXISTS statement applying to multiple tables that would break foreign key constraints, when a slave configured with replication filters encountered the query it could be incorrectly binary logged. This caused errors such as:
- Last_SQL_Error: Query caused different errors on master and slave. Error on master: message (format)='Cannot delete or update a parent row: a foreign key constraint fails' error code=1217 ; Error on slave: actual message='no error', error code=0. Default database: 'db1'. Query: 'DROP TABLE IF EXISTS `table1` /* generated by server */'
- There were two fixes required for this bug.
- If a DROP TABLE statement used to drop a single table fails, to avoid partial results causing this bug the query is not written to the binary log. If a DROP TABLE statement used to drop a list of tables fails, any partial results it generates are written to the binary log with an error.
- When a query that generates an error as expected was received by a slave but it was skipped due to replication filters, the slave was incorrectly checking the error. The fix for Bug #76493 ensures that this comparison of the expected error from the master with the actual error from the slave does not happen.
- References: See also Bug #20797764.
- RTRIM() on large strings could be very slow. (Bug #22884187)
- References: This bug was introduced by Bug #18315770, Bug #12368495.
- Integer overflow could occur during client handshake processing, leading to a server exit. (Bug #22722946)
- Missing initializers in the query plan constructor resulted in Valgrind warnings. (Bug #22573117)
- The obsolete support-files/MySQL-shared-compat.spec.sh file was removed from distributions. (Bug #22525609)
- mysqlpump failed (syntax error) when a view name contained a space character. View names are now quoted. (Bug #22505474)
- UNHEX() with an invalid argument could result in garbage characters in the warning message. (Bug #22358933)
- Improper host name checking in X509 certificates could permit man-in-the-middle attacks. (Bug #22295186, Bug #22738607)
- For debug builds, when an indexed nonnullable generated column with an empty string generated expression was updated during an insert for a duplicated key, there was an optimization that resulted in the server failing to find the duplicated index, causing an assertion to be raised. (Bug #22195364)
- A boolean mode full-text search caused a segmentation fault. (Bug #22176795)
- Queries on generated columns that used WITH ROLLUP could raise an assertion. (Bug #22131343)
- For a prepared statement that used a derived table, an assertion could be raised at execute time when checking statement privileges. (Bug #22108567)
- Concurrent selecting and flushing of a FEDERATED table while killing connections accessing it could result in a server exit. (Bug #21918190)
- For debug builds, when a query using join buffering and one of the tables inserted into the join buffer was accessed using a dynamic range scan on an index containing a virtual column, a Valgrind error occurred when writing columns to the join buffer. (Bug #21872184)
- After iterations of uninstalling and installing the audit_log plugin, the server could hang. (Bug #21796658)
- With a LOCK TABLES statement in effect, access to Performance Schema tables could fail, as could SHOW STATUS with show_compatibility_56=OFF. (Bug #21789221)
- Executing GRANT PROXY statements after altering the definition of the mysql.user system table could result in a server exit. (Bug #21699037)
- Certain error messages included part of the SQL statement that produced them, possibly exposing data. (Bug #21682356)
- The Performance Schema assumed that tables named using a #sql prefix were temporary and could be ignored. But it is possible to create nontemporary tables using that prefix. The Performance Schema now uses table attributes other than the name to identify temporary tables. (Bug #21105475, Bug #22532368, Bug #79934)
- Account filtering performed by the audit_log plugin incorrectly used the account named by the USER() function rather than the CURRENT_USER() function (the latter being the account used for authentication). (Bug #19509471)
- NAME_CONST() can return null if incorrect arguments are given. In some cases, this was not handled and could cause a server exit. (Bug #19143243)
- Character set conversion operations on NULL parameters to prepared statements could cause a server exit. (Bug #18823979)
- Loose Index Scan was not chosen for queries that had an equality condition. (Bug #18109609)
- Long or complex SQL statements could cause the parser to run out of memory. The new parser_max_mem_size system variable now enables control over the maximum amount of memory available to the parser. The default value places no limit on memory available, but the value can be reduced to protect against out-of-memory situations. (Bug #14744160)
- A Valgrind warning for memory_free_noop() was silenced. (Bug #80457, Bug #22782197)
- The MySQL server failed to start if built with the -m32 option on Solaris/Sparc, due to improper static data alignment in init_delegates(). (Bug #80445, Bug #22763880)
- The plugin_keyring.h header file misspelled st_mysql_keyring as st_mysql_keyring_file. (Bug #80414, Bug #22748867)
- For shared-memory connections on Windows, the client library opened a handle on a mutex but did not close it. Subsequent attempts to restart the server on the other end of the connection failed if the client still had the mutex handle open. (Bug #80234, Bug #22646779)
- mysqld attempted to initialize plugins specified using the --early-plugin-load option when the --help option was specified. (Bug #80077, Bug #22573767)
- ALTER USER IDENTIFIED WITH ... expired the account password, even if the authentication plugin did not support password expiration. (Bug #79999, Bug #22551523)
- Some Performance Schema global instruments, if not enabled at server startup, could be in a state where it was not possible to enable them at runtime. This restriction has been lifted. Affected instruments include mutex, rwlock, cond, and socket instances.
- Thanks to Zhang Yingqiang for the patch. (Bug #79784, Bug #22517278)
- Setting the super_read_only system variable at server startup had no effect. (Bug #79328, Bug #22233503)
- These audit_log plugin issues were corrected:
- Calling my_message() from the MYSQL_AUDIT_GENERAL_CLASS handler resulted in infinite recursion.
- Diagnostic messages were improved for the case when the MYSQL_AUDIT_GENERAL_CLASS handler returned nonzero.
- Calling my_message() from the MYSQL_AUDIT_SERVER_STARTUP_CLASS handler did not abort server startup as it should have.
- SHOW GLOBAL VARIABLES produced different output for the null_audit_abort_value system variable with show_compatibility_56 enabled and disabled.
- For INSERT and UPDATE operations that caused FOREIGN KEY constraint violations, errors were reported rather than warnings when the IGNORE keyword was used. (Bug #78853, Bug #22037930)
- Using the server session service, executing an SQL statement from a thread with no VIO context could raise an assertion. (Bug #78734, Bug #21959409)
- Error messages raised by JSON_KEYS() and JSON_EXTRACT() contained the wrong data. (Bug #78699, Bug #22026278)
- CREATE VIEW statements that used the TIMESTAMPDIFF() function with MICROSECOND as the unit resulted in incorrect view definitions. (Bug #78506, Bug #21877062)
- For an existing user, CREATE USER IF NOT EXISTS produced an error rather than a warning. Similarly, for an nonexisting user, ALTER USER IF EXISTS produced an error rather than a warning. (Bug #78374, Bug #21807286)
- For some queries, an Index Merge access plan was chosen over a range scan when the cost for the range scan was the same or less. (Bug #77209, Bug #21178196)
- UNHEX() could attempt a left shift of a negative number. (Bug #73964, Bug #19642015)
- EXPLAIN for SELECT ... FOR UPDATE statements acquired locks. (Bug #72858, Bug #18899860)
- Processlist state information was not updated correctly for LOAD DATA INFILE and could show a state different from executing. (Bug #69375, Bug #16912362)

MySQL 5.5.48 (32-bit) 查看版本資訊

更新時間:2016-02-08
更新細節:

What's new in this version:

Bug Fixed:
- Replication: When DML invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column, that DML has to be marked as an unsafe statement. If the tables are locked in the transaction prior to the DML statement (for example by using LOCK TABLES), then the DML statement was not being marked as an unsafe statement. The fix ensures that such DML statements are marked correctly as unsafe
- Replication: DROP TABLE statements are regenerated by the server before being written to the binary log. If a table or database name contained a non-regular character, such as non-latin characters, the regenerated statement was using the wrong name, breaking replication. The fix ensures that in such a case the regenerated name is correctly converted back to the original character set. Also during work on this bug, it was discovered that in the rare case that a table or database name contained 64 characters, the server was throwing an assert(M_TBLLEN < 128) assertion. The assertion has been corrected to be less than or equal 128
- Data corruption or a server exit could occur if a stored procedure had a variable declared as TEXT or BLOB and data was copied to that variable using SELECT ... INTO syntax from a TEXT or BLOB column
- CREATE TEMPORARY TABLE .. SELECT statements involving BIT columns that resulted in a column type redefinition could cause a server exit or an improperly created table
- Added Microsoft Visual Studio 2015 support. Changes include using the native (added in VS 2015) timespec library if it exists, renamed lfind/lsearch and timezone/tzname to avoid redefinition problems, set TMPDIR to "" by default as P_tmpdir no longer exists, deprecated std::hash_map in favor of std::unordered_map, and added Wix Toolset 3.10 support
- When an invalid date was supplied to the UNIX_TIMESTAMP() function using the STR_TO_DATE() function, no check was performed before converting it to a timestamp value
- With LOCK TABLES in force, an attempt to open a temporary MERGE table consisting of a view in its list of tables (not the last table in the list) caused a server exit
- For certain prepared statements, the optimizer could transform join conditions such that it used a pointer to a temporary table field that was no longer available after the initial execution. Subsequent executions caused a server exit
- Repeated execution of ALTER TABLE v1 CHECK PARTITION as a prepared statement, where v1 is a view, led to a server exit
- In addition, output for some administrative operations, when they are attempted on a view, changes from “Corrupt” to “Operation failed”. These include ANALYZE TABLE, OPTIMIZE TABLE, and REPAIR TABLE, and ALTER TABLE statements that perform ANALYZE PARTITION, CHECK PARTITION, OPTIMIZE PARTITION, and REPAIR PARTITION operations
- Using systemd to start mysqld failed if configuration files contained multiple datadir lines. Now the last datadir line is used

MySQL 5.6.29 (32-bit) 查看版本資訊

更新時間:2016-02-08
更新細節:

What's new in this version:

Functionality Added or Changed:
- InnoDB: A new InnoDB configuration option, innodb_tmpdir, allows you to configure a separate temporary file directory for online ALTER TABLE operations. This option was introduced to help avoid tmpdir overflows that could occur as a result of large temporary files created during online ALTER TABLE operations. innodb_tmpdir is a SESSION variable and can be configured dynamically using a SET statement
- yaSSL was upgraded to version 2.3.9. This upgrade corrects an issue in which yaSSL handled only cases of zero or one leading zeros for the key agreement instead of potentially any number, which in rare cases could cause connections to fail when using DHE cipher suites
- The Valgrind function signature in mysql-test/valgrind.supp was upgraded for Valgrind 3.11

Bugs Fixed:
- InnoDB: A small InnoDB buffer pool size with a large innodb_stats_persistent_sample_pages setting resulted in a Difficult to find free blocks in the buffer pool warning
- InnoDB: Starting the server with an empty innodb_data_home_dir entry in the configuration file caused InnoDB to look for the buffer pool file in the root directory, resulting in a startup error
- InnoDB: A full-text query run under high concurrency caused a server exit due to an invalid memory access
- InnoDB: With a large innodb_sort_buffer_size setting, adding an index on an empty table performed more slowly than expected
- Replication: When DML invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column, that DML has to be marked as an unsafe statement. If the tables are locked in the transaction prior to the DML statement (for example by using LOCK TABLES), then the DML statement was not being marked as an unsafe statement. The fix ensures that such DML statements are marked correctly as unsafe
- Replication: As part of the fix for Bug #16290902, when writing a DROP TEMPORARY TABLE IF EXISTS query into the binary log, the query is no longer preceded by a USE `db` statement. Instead the query uses a fully qualified table name, for example DROP TEMPORARY TABLE IF EXISTS `db`.`t1`;. This changed the application of replicate-rewrite-db filter rules, as they work only on the default database specified in a USE statement. This caused slaves to fail when the resulting CREATE TEMPORARY TABLE was applied. The fix ensures that at the time of writing a DROP TEMPORARY TABLE IF EXISTS query into the binary log, a check is made for the default database. If it exists then the query is written as USE default_db in the binary log. If a default database is not present then the query is logged with the qualified table name
- Replication: If generating a GTID for a transaction fails, the transaction is not written to the binary log but still gets committed. Although running out of GTIDs is a rare situation, if it did occur an error was written to the binary log as a sync stage error. With binlog_error_action=ABORT_SERVER, the server aborts on such an error, avoiding data inconsistency. When binlog_error_action=IGNORE_ERROR, the server continues binary logging after such an error, potentially leading to data inconsistency between the master and the slave. The fix changes the error to be correctly logged as a flush stage error
- Replication: When using --gtid-mode=on , --enforce-gtid-consistency , and --binlog-format=row, if a user defined function with multiple DROP TEMPORARY TABLE statements was executed on a master, the resulting binary log caused an error on slaves. The fix ensures that stored functions and triggers are also considered multi-statement transactions, and that when --enforce-gtid-consistency is enabled, functions with CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE statements generate an ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION error
- Replication: Stored procedure local variables that were used in an ALTER EVENT statement were not being replicated correctly. This was related to the fact that CALL statements are not written into the binary log. Instead each statement executed in a stored procedure is binary logged separately, with the exception that the query string is modified so that uses of stored procedure local variables are replaced with NAME_CONST('spvar_name', 'spvar-value') calls. DDL statements (which are always binary logged in statement binary log mode irrespective of the current binary log format) can also use stored procedure local variables and a clash could cause them to not be replicated correctly. The fix ensures that any stored procedure local variables used in a query are replaced with NAME_CONST(...), except for the case when it is a DML query and the binary log format is ROW
- Replication: DROP TABLE statements are regenerated by the server before being written to the binary log. If a table or database name contained a non-regular character, such as non-latin characters, the regenerated statement was using the wrong name, breaking replication. The fix ensures that in such a case the regenerated name is correctly converted back to the original character set. Also during work on this bug, it was discovered that in the rare case that a table or database name contained 64 characters, the server was throwing an assert(M_TBLLEN < 128) assertion. The assertion has been corrected to be less than or equal 128
- Replication: Irrespective of the current binlog_format setting, DDL that changes metadata on a master is always identified and written to the binary log in STATEMENT format. Such DDL could occur from event based SQL statements, such as CREATE EVENT or DROP EVENT, or transactions that had unsafe functions such as sysdate(). When binlog_format=MIXED and attempting to replicate such DDL, it was not being correctly identified and therefore was not being correctly replicated
- Inserting a token of 84 4-byte characters into a full-text index raised an assertion. The maximum token length was 84 characters up to a maximum of 252 bytes, which did not account for 4-byte characters. The maximum byte length is now 336 bytes
- If a client attempted to use an unsupported client character set (ucs2, utf16, utf32), the error message reported to the client differed for SSL and non-SSL connections
- Data corruption or a server exit could occur if a stored procedure had a variable declared as TEXT or BLOB and data was copied to that variable using SELECT ... INTO syntax from a TEXT or BLOB column
- CREATE TEMPORARY TABLE .. SELECT statements involving BIT columns that resulted in a column type redefinition could cause a server exit or an improperly created table
- Added Microsoft Visual Studio 2015 support. Changes include using the native (added in VS 2015) timespec library if it exists, renamed lfind/lsearch and timezone/tzname to avoid redefinition problems, set TMPDIR to "" by default as P_tmpdir no longer exists, deprecated std::hash_map in favor of std::unordered_map, and added Wix Toolset 3.10 support
- With character_set_server=utf16le, some values of ft_boolean_syntax could cause a server exit for full-text searches
- With LOCK TABLES in force, an attempt to open a temporary MERGE table consisting of a view in its list of tables (not the last table in the list) caused a server exit
- For certain prepared statements, the optimizer could transform join conditions such that it used a pointer to a temporary table field that was no longer available after the initial execution. Subsequent executions caused a server exit
- Repeated execution of ALTER TABLE v1 CHECK PARTITION as a prepared statement, where v1 is a view, led to a server exit
- In addition, output for some administrative operations, when they are attempted on a view, changes from “Corrupt” to “Operation failed”. These include ANALYZE TABLE, OPTIMIZE TABLE, and REPAIR TABLE, and ALTER TABLE statements that perform ANALYZE PARTITION, CHECK PARTITION, OPTIMIZE PARTITION, and REPAIR PARTITION operations
- Valgrind detected some possibly unsafe use of string functions in code used for asymmetric encryption
- SSL connections ignored any change made by passing the MYSQL_OPT_READ_TIMEOUT option to the mysql_options() C API function
- Solaris packages failed to note the dependency of the MySQL client library on the libstlport library
- Using systemd to start mysqld failed if configuration files contained multiple datadir lines. Now the last datadir line is used
- If server was started with --thread-handling=no-threads, no foreground thread was created for a client connection. The Performance Schema did not account for the possibility of no foreground threads for queries on the session_connect_attrs table, causing an assertion to be raised
- ALTER TABLE ... CONVERT TO CHARACTER SET operations that used the INPLACE algorithm were ineffective if the table contained only numeric data types. Also, such operations failed to clean up their temporary .frm file
- Heavy SHOW PROCESSLIST or SELECT ... FROM INFORMATION_SCHEMA.PROCESSLIST activity could result in the server accepting more than max_connections connections
- When used with the libmysqld embedded server, the mysql_stmt_execute() C API function failed with a malformed communication packet error, even for simple prepared statements

MySQL 5.7.11 (32-bit) 查看版本資訊

更新時間:2016-02-06
更新細節:

What's new in this version:

Compilation Notes:
- A value of system is now permitted for the WITH_BOOST CMake option. If this option is not set or is set to system, it is assumed that the correct version of Boost is installed on the compilation host in the standard location. In this case, the installed version of Boost is used rather than any version included with a MySQL source distribution. (Bug #22224313)
- In addition to the mysql-5.7.11.tar.gz source tarball, another tarball named mysql-boost-5.7.11.tar.gz is provided. The new tarball contains everything in the first tarball, but also contains all the required Boost header files in a subdirectory named boost. This is for the benefit of those who do not have the correct Boost version installed and do not wish to or cannot download it. To build from this source distribution, add -DWITH_BOOST=boost to the CMake command line.

Data Type Notes:
- Bit functions and operators comprise BIT_COUNT(), BIT_AND(), BIT_OR(), BIT_XOR(), &, |, ^, ~, . Currently, bit functions and operators require BIGINT (64-bit integer) arguments and return BIGINT values, so they have a maximum range of 64 bits. Arguments of other types are converted to BIGINT and truncation might occur.
- A planned extension for MySQL 5.8 is to permit bit functions and operators to take binary string type arguments (BINARY, VARBINARY, and the BLOB types), enabling them to take arguments and produce return values larger than 64 bits. Consequently, bit operations on binary arguments in MySQL 5.7 might produce different results in MySQL 5.8. To provide advance notice about this potential change in behavior, the server now produces warnings for bit operations for which binary arguments will not be converted to integer in MySQL 5.8. These warnings afford an opportunity to rewrite affected statements. To explicitly produce MySQL 5.7 behavior in a way that will not change after an upgrade to 5.8, cast bit-operation binary arguments to convert them to integer. For more information and examples, see Bit Functions and Operators.

Installation Notes:
- Previously, mysqld --initialize required the data directory to not exist or, if it existed, to be empty. Now an existing data directory is permitted to be nonempty if every entry either has a name that begins with a period (.) or is named using an --ignore-db-dir option. (Bug #79250, Bug #22213873)

Security Notes:
- The linked OpenSSL library for the MySQL Commercial Server has been updated from version 1.0.1p to version 1.0.1q. Issues fixed in the new version are described at http://www.openssl.org/news/vulnerabilities.html.
- This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #22348181)
- The default value of the default_password_lifetime system variable that controls the global password expiration policy has been changed from 360 (360 days) to 0 (no password expiration). The default of 360 sometimes took people by surprise when account passwords expired a year after upgrading to MySQL 5.7. To continue to use a value other than 0 as the password expiration, start the server with an explicit setting for default_password_lifetime.
- MySQL client programs now support an --ssl-mode option that enables you to specify the security state of the connection to the server. Permitted option values are PREFERRED (establish a secure encrypted connection if the server supports the capability, falling back to an unencrypted connection otherwise), DISABLED (establish an unencrypted connection), REQUIRED (establish a secure connection, or fail), VERFIFY_CA (like REQUIRED, but additionally verify the server certificate), VERIFY_IDENTITY (like VERIFY_CA, but additionally verify that the server certificate matches the host name to which the connection is attempted). For backward compatibility, the default is PREFERRED if --ssl-mode is not specified.
- These clients support --ssl-mode: mysql, mysqladmin, mysqlbinlog, mysqlcheck, mysqldump, mysqlimport, mysqlshow, mysqlpump, mysqlslap, mysqltest, mysql_upgrade.
- The --ssl-mode option comprises the capabilities of the client-side --ssl and --ssl-verify-server-cert options. Consequently, both of those options are now deprecated and will be removed in a future MySQL release. Use --ssl-mode=REQUIRED instead of --ssl=1 or --enable-ssl. Use --ssl-mode=DISABLED instead of --ssl=0, --skip-ssl, or --disable-ssl. Use --ssl-mode=VERIFY_IDENTITY instead of --ssl-verify-server-cert options. (The server-side --ssl option is not deprecated.)
- For the C API, the new MYSQL_OPT_SSL_MODE option for mysql_options() corresponds to the --ssl-mode option. The MYSQL_OPT_SSL_ENFORCE and MYSQL_OPT_SSL_VERIFY_SERVER_CERT options for mysql_options() correspond to the client-side --ssl and --ssl-verify-server-cert options. They are now deprecated and will be removed in a future MySQL release. Use MYSQL_OPT_SSL_MODE with an option value of SSL_MODE_REQUIRED or SSL_MODE_VERIFY_IDENTITY instead. In consequence of this change, the minor C API version number was incremented.
- MySQL now supports a keyring service that enables internal MySQL server components and plugins to securely store sensitive information for later retrieval. The implementation includes a keyring_file plugin that stores data in a file local to the server host.

Functionality Added or Changed:
- InnoDB: A new InnoDB configuration option, innodb_tmpdir, allows you to configure a separate temporary file directory for online ALTER TABLE operations. This option was introduced to help avoid tmpdir overflows that could occur as a result of large temporary files created during online ALTER TABLE operations. innodb_tmpdir is a SESSION variable and can be configured dynamically using a SET statement. (Bug #19183565)
- InnoDB: InnoDB now supports at-rest data encryption for InnoDB tables stored in file-per-table tablespaces. Encryption is enabled by specifying the ENCRYPTION option when creating or altering an InnoDB table. For more information, see InnoDB Tablespace Encryption.
- Replication: The log_statements_unsafe_for_binlog variable was added to provide control over whether the warnings generated by error 1592 are added to the binary log or not.
- yaSSL was upgraded to version 2.3.9. This upgrade corrects an issue in which yaSSL handled only cases of zero or one leading zeros for the key agreement instead of potentially any number, which in rare cases could cause connections to fail when using DHE cipher suites. (Bug #22361038)
- The Valgrind function signature in mysql-test/valgrind.supp was upgraded for Valgrind 3.11. (Bug #22214867)
- The audit_log plugin now produces events in the MYSQL_AUDIT_TABLE_ACCESS_CLASS class. These events are abortable. (Bug #21458192)
- The format of log output produced by mysqld_safe now is configurable using the --mysqld-safe-log-timestamps option. This option can be used to produce log timestamps in formats compatible with the server or in formats used by mysqld_safe in older versions of MySQL. For more information, see mysqld_safe — MySQL Server Startup Script. (Bug #78475, Bug #21862951)
- The mysql_kill(), mysql_list_fields(), mysql_list_processes(), and mysql_refresh() C API functions are deprecated and will be removed in a future version of MySQL. The same is true of the corresponding COM_PROCESS_KILL, COM_FIELD_LIST, COM_PROCESS_INFO, and COM_REFRESH client/server protocol commands. Instead, use mysql_query() to execute a KILL, SHOW COLUMNS, SHOW PROCESSLIST, or FLUSH statement, respectively.
- The mysql_plugin utility is deprecated and will be removed in a future version of MySQL. Alternatives include loading plugins at server startup using the --plugin-load or --plugin-load-add option, or at runtime using the INSTALL PLUGIN statement.
- Storage engines now can request notification about acquisition and release of exclusive metadata locks. As result, the LOCK_STATUS column of the metadata_locks Performance Schema table has two new status values. The PRE_ACQUIRE_NOTIFY and POST_RELEASE_NOTIFY status values are brief and signify that the metadata locking subsubsystem is notifying interested storage engines while entering lock acquisition or leaving lock release operations.

Bugs Fixed:
- InnoDB; Partitioning: When OPTIMIZE TABLE rebuilt a partitioned InnoDB table, it placed the resulting partition tablespace files (*.ibd files) in the default data directory instead of the directory specified using the DATA DIRECTORY option. (Bug #75112, Bug #20160327)
- InnoDB: InnoDB failed to update index statistics when adding or dropping a virtual column. (Bug #22469660, Bug #79775)
- InnoDB: A small InnoDB buffer pool size with a large innodb_stats_persistent_sample_pages setting resulted in a Difficult to find free blocks in the buffer pool warning. (Bug #22385442)
- InnoDB: memcached connections are blocked from accessing tables that contain an indexed virtual column. Accessing an indexed virtual column requires a callback to the server, but a memcached connection does not have access to the server code. (Bug #22384503, Bug #79691)
- InnoDB: InnoDB did not return an informative message when refusing an online ALTER TABLE operation that attempted to add an index and a virtual column. (Bug #22374827)
- InnoDB: An invalid innodb_saved_page_number_debug setting caused a server exit. (Bug #22311319, Bug #79516)
- InnoDB: InnoDB failed to free a table object when a compressed table and temporary compressed table were created in the same shared tablespace. (Bug #22306581)
- InnoDB: In Numa-related code, the size information passed to the mbind() call in the buf_chunk_init() function was incorrect. (Bug #22293530, Bug #79434)
- InnoDB: Numa support was incomplete for online buffer pool resizing operations. (Bug #22293511, Bug #79354)
- InnoDB: A SELECT COUNT(*) query that counted the results of a full-text subquery raised an assertion. (Bug #22270139)
- InnoDB: InnoDB passed a buffer with an incorrect TINYBLOB data length for a virtual column, resulting in a purge thread failure. (Bug #22256752)
- InnoDB: A purge failure occurred while deleting data from a table that contained a spatial index. (Bug #22230442)
- InnoDB: An assertion was raised when purge accessed a freed page while attempting to rebuild virtual column data from the clustered index. (Bug #22204260)
- InnoDB: Only prefix bytes were logged for an indexed virtual column, resulting in an a Clustered record for sec rec not found error. (Bug #22202788)
- InnoDB: A small buffer pool with an innodb_page_size setting of 64K could cause startup, bootstrap, and recovery failures. (Bug #22179133, Bug #79201)
- InnoDB: Unreachable code that checks for 32-bit file offsets was removed. (Bug #22163880, Bug #79150)
- InnoDB: A slow shutdown failure was caused by background threads adding undo records to the purge history list during or after purge thread exit. (Bug #22154730)
- InnoDB: The InnoDB purge thread died attempting to purge a virtual column index record that was not delete-marked. (Bug #22141031)
- InnoDB: In debug builds, an ALTER TABLE operation that increased the column length of a virtual column raised an assertion. (Bug #22139917)
- InnoDB: ut_allocator prepended the allocation payload with a 12-byte header on 32-bit systems, causing unaligned memory access. On 32-bit SPARC systems, the unaligned memory access caused a crash during bootstrap. (Bug #22131684)
- InnoDB: In debug builds, an ALTER TABLE operation that added a new virtual column before an existing virtual column raised an assertion. (Bug #22123674, Bug #22111464)
- InnoDB: InnoDB startup messages related to dumping and loading of the buffer pool were improved. (Bug #22096661, Bug #78960)
- InnoDB: Creating a table with a full-text index and a foreign key constraint failed when foreign_key_checks was disabled. (Bug #22094601, Bug #78955)
- References: This bug is a regression of Bug #16845421.
- InnoDB: Support was enabled for ALGORITHM=INPLACE operations that add an index on an existing virtual column while dropping another virtual column. Support was also enabled for ALGORITHM=INPLACE operations that add a virtual column and an index. When adding an index on a newly-added virtual column, purge now skips the uncommitted virtual index. (Bug #22082762)
- InnoDB: The wrong table object was used to compute virtual column values for a query that accessed multiple instances of the same table. (Bug #22070021)
- InnoDB: A purge thread failure occurred when inserting and deleting spatial data. The child page number field was not stored during the R-tree search stage. (Bug #22027053)
- InnoDB: Starting the server with an empty innodb_data_home_dir entry in the configuration file caused InnoDB to look for the buffer pool file in the root directory, resulting in a startup error. (Bug #22016556, Bug #78831)
- InnoDB: A failure to compute virtual column values caused an excessive number of error messages. (Bug #21968375)
- InnoDB: An INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX query raised an assertion. A dictionary mutex was taken while InnoDB populated an in-memory heap table. The mutex was not released before InnoDB attempted to convert the in-memory heap table to an optimized internal temporary table. (Bug #21950756, Bug #78714)
- InnoDB: To avoid a potential hang and redo log overwrite, the innodb_log_file_size minimum value was increased from 1MB to 4MB, and the length calculation in log_margin_checkpoint_age() was revised. (Bug #21924224, Bug #78647)
- InnoDB: A full-text query run under high concurrency caused a server exit due to an invalid memory access. (Bug #21922532)
- InnoDB: An ALTER TABLE operation on a table partitioned across multiple tablespaces moved existing partitions to the table's default tablespace, resulting in an assertion on SHOW CREATE TABLE. Likewise, ALTER TABLE tbl_name TABLESPACE tablespace_name moved existing partitions to the named tablespace. Only ALTER TABLE ... REORGANIZE PARTITION should move existing partitions to the table's default tablespace or to a named tablespace. Running ALTER TABLE tbl_name TABLESPACE tablespace_name on a table partitioned across multiple tablespaces should only change the table's default tablespace. (Bug #21914047, Bug #22124042, Bug #79030)
- InnoDB: With a large innodb_sort_buffer_size setting, adding an index on an empty table performed more slowly than expected. (Bug #21762319, Bug #78262)
- InnoDB: A race condition occurred between fil_names_write() and file_rename_tablespace_in_mem(). (Bug #21549928)
- InnoDB: Purge attempted to access undo pages that were freed by a preceding undo log truncate operation, resulting in an assertion. (Bug #21508627)
- InnoDB: InnoDB did not return an informative message when refusing an online ALTER TABLE operation on a table with a spatial index. (Bug #20111575)
- InnoDB: A compiler barrier was added to ut_relax_cpu(). The ut_always_false dummy global variable was removed from ut_delay(). (Bug #20045167, Bug #74832)
- InnoDB: Incorrect index values were returned while dropping a virtual column. The altered table object was used to evaluate virtual column values. (Bug #79773, Bug #22469459)
- References: This bug is a regression of Bug #22082762.
- Partitioning: Subquery scans on partitioned tables with virtual columns could leak memory. (Bug #79145, Bug #22162200)
- Replication: When a slave was configured with log_bin=OFF, the applier (SQL) thread was failing to correctly roll back partial transactions left in the relay log. The fix ensures that on reconnection, the applier thread correctly rolls back a partial transaction and starts applying it again from the next relay log file. (Bug #21691396)
- Replication: The behavior of SET GTID_PURGED was not consistent between version 5.6 and 5.7. The fix ensures that version 5.7 does not initiate a transaction for SET GTID_PURGED statements. (Bug #21472492)
- Replication: When DML invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column, that DML has to be marked as an unsafe statement. If the tables are locked in the transaction prior to the DML statement (for example by using LOCK TABLES), then the DML statement was not being marked as an unsafe statement. The fix ensures that such DML statements are marked correctly as unsafe. (Bug #17047208)
- Replication: If pseudo_slave_mode was set to 1 while an XA transaction was in the prepare stage, an assert was generated. The fix ensures that changes from 0 to 1 can be made during XA transactions. Note that this variable is solely for internal use by the server. (Bug #79416, Bug #22273964, Bug #78695, Bug #21942487)
- Replication: If the server stopped unexpectedly immediately before committing an XA transaction which had been prepared, and the transaction modified the mysql.gtid_executed table, then the subsequent recovery aborted due to an innodb_lock_wait_timeout error when it was reading the mysql.gtid_executed table. To fix the problem, XA transactions are no longer permitted to modify the mysql.gtid_executed table. (Bug #77740, Bug #21452916)
- Replication: As part of the fix for Bug #16290902, when writing a DROP TEMPORARY TABLE IF EXISTS query into the binary log, the query is no longer preceded by a USE `db` statement. Instead the query uses a fully qualified table name, for example DROP TEMPORARY TABLE IF EXISTS `db`.`t1`;. This changed the application of replicate-rewrite-db filter rules, as they work only on the default database specified in a USE statement. This caused slaves to fail when the resulting CREATE TEMPORARY TABLE was applied. The fix ensures that at the time of writing a DROP TEMPORARY TABLE IF EXISTS query into the binary log, a check is made for the default database. If it exists then the query is written as USE default_db in the binary log. If a default database is not present then the query is logged with the qualified table name. (Bug #77417, Bug #21317739)
- Replication: If generating a GTID for a transaction fails, the transaction is not written to the binary log but still gets committed. Although running out of GTIDs is a rare situation, if it did occur an error was written to the binary log as a sync stage error. With binlog_error_action=ABORT_SERVER, the server aborts on such an error, avoiding data inconsistency. When binlog_error_action=IGNORE_ERROR, the server continues binary logging after such an error, potentially leading to data inconsistency between the master and the slave. The fix changes the error to be correctly logged as a flush stage error. (Bug #77393, Bug #21276661)
- Replication: When using --gtid-mode=on , --enforce-gtid-consistency , and --binlog-format=row, if a user defined function with multiple DROP TEMPORARY TABLE statements was executed on a master, the resulting binary log caused an error on slaves. The fix ensures that stored functions and triggers are also considered multi-statement transactions, and that when --enforce-gtid-consistency is enabled, functions with CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE statements generate an ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION error. (Bug #77354, Bug #21253415)
- Replication: Stored procedure local variables that were used in an ALTER EVENT statement were not being replicated correctly. This was related to the fact that CALL statements are not written into the binary log. Instead each statement executed in a stored procedure is binary logged separately, with the exception that the query string is modified so that uses of stored procedure local variables are replaced with NAME_CONST('spvar_name', 'spvar-value') calls. DDL statements (which are always binary logged in statement binary log mode irrespective of the current binary log format) can also use stored procedure local variables and a clash could cause them to not be replicated correctly. The fix ensures that any stored procedure local variables used in a query are replaced with NAME_CONST(...), except for the case when it is a DML query and the binary log format is ROW. (Bug #77288, Bug #21229951)
- Replication: DROP TABLE statements are regenerated by the server before being written to the binary log. If a table or database name contained a non-regular character, such as non-latin characters, the regenerated statement was using the wrong name, breaking replication. The fix ensures that in such a case the regenerated name is correctly converted back to the original character set. Also during work on this bug, it was discovered that in the rare case that a table or database name contained 64 characters, the server was throwing an assert(M_TBLLEN < 128) assertion. The assertion has been corrected to be less than or equal 128. (Bug #77249, Bug #21205695)
- References: See also Bug #78036, Bug #22261585, Bug #21619371.
- Replication: Irrespective of the current binlog_format setting, DDL that changes metadata on a master is always identified and written to the binary log in STATEMENT format. Such DDL could occur from event based SQL statements, such as CREATE EVENT or DROP EVENT, or transactions that had unsafe functions such as sysdate(). When binlog_format=MIXED and attempting to replicate such DDL, it was not being correctly identified and therefore was not being correctly replicated. (Bug #71859, Bug #19286708)
- The System-V initialization script for RHEL6 or older failed to enable the mysqld service by default. (Bug #22600974)
- Some activations of triggers that referenced a NEW value inside a query might cause a server exit. (Bug #22377554)
- Parsing the output of ST_GeometryType() as a DATETIME value with a default character set of utf32 caused a server exit. (Bug #22340858)
- For a character set loaded from an XML file, the server could fail to properly initialize its state map, leading to a server exit. (Bug #22338946)
- Inserting a token of 84 4-byte characters into a full-text index raised an assertion. The maximum token length was 84 characters up to a maximum of 252 bytes, which did not account for 4-byte characters. The maximum byte length is now 336 bytes. (Bug #22291765, Bug #79475)
- For some combination of consumers, the Performance Schema prepared statement instrumentation could cause a server exit. (Bug #22291560)
- If a client attempted to use an unsupported client character set (ucs2, utf16, utf32), the error message reported to the client differed for SSL and non-SSL connections. (Bug #22216715)
- Data corruption or a server exit could occur if a stored procedure had a variable declared as TEXT or BLOB and data was copied to that variable using SELECT ... INTO syntax from a TEXT or BLOB column. (Bug #22203532, Bug #22232332, Bug #21941152)
- For debug builds, with the ONLY_FULL_GROUP_BY SQL mode disabled, the optimizer could attempt to sort on outer references, causing an assertion to be raised. (Bug #22200984)
- Different handling of YEAR values for INSERT and SELECT could raise an assertion when such values were used in a generated-column expression. (Bug #22195458)
- For debug builds, for queries involving MIN() or MAX() on an indexed column and a reference to an unindexed datetime column, the optimizer could attempt to access unread values, causing an assertion to be raised. (Bug #22186926)
- Geohash decoding (for example, for ST_LongFromGeoHash(), ST_LatFromGeoHash(), and ST_PointFromGeoHash()) could yield incorrect results due to the rounding algorithm being too aggressive. (Bug #22165582)
- In debug builds, with READ UNCOMMITTED transaction isolation level, a SELECT reading a generated column using an index could raise an assertion. (Bug #22133710)
- For generated columns, the optimizer could fail to establish the proper table reference, resulting in a server exit. (Bug #22132822)
- For some combination of consumers, the Performance Schema file instrumentation could fail due to an attempt to use a NULL pointer while instrumenting temporary file I/O. (Bug #22130453)
- The Performance Schema could raise an assertion based on the (incorrect) assumption that instrumenting a temporary file open operation always resulted in an instrumented file. (Bug #22118669)
- An ALTER TABLE statement that added an index on a virtual generated column using the INPLACE algorithm did not properly report warnings (or errors in strict SQL mode) for problems with virtual column values. Any subsequent ALTER TABLE on the same table using the COPY algorithm produced such warnings (or failures in strict SQL mode) due to evaluating the problematic value, but left the connection in a state that made further INPLACE alterations on the table fail for the same reason. (Bug #22095783)
- If the left expression of an IN expression was a row subquery that accesses no tables, an assertion could be raised (in debug builds), or incorrect results could be returned (in release builds). (Bug #22089623)
- Expressions that match an indexed generated column may be replaced with the generated column by the optimizer to enable use of the associated index. However, this optimization was not performed for single-table update and delete statements. The optimizer now extends this replacement optimization to such statements. (Bug #22077611)
- ANSI SQL mode could cause inconsistencies in processing of generated column expressions. (Bug #22018979)
- Removal of server session plugins was faulty and could cause a server exit. (Bug #21983102)
- For some queries, if the optimizer used Disk-Sweep Multi-Range Read optimization on generated columns, the server could exit. (Bug #21980430)
- mysqlpump tries to do as much work in parallel as possible, but the dump threads lacked a synchronization point before backing up the data, resulting in inconsistent backup. mysqlpump now locks the server and flushes all the tables using FLUSH TABLES WITH READ LOCK to ensure that any further connections view the same state of all the databases.
- This change lifts the restriction aginst the --single-transaction option being mutually exclusive with parallelism. When using --single-transaction, it is no longer necessary to disable parallelism by setting --default-parallelism to 0 and not using any instances of --parallel-schemas. (Bug #21980284)
- A fault in pthread_rwlock_unlock() wherein it decremented the lock counter even for already unlocked objects could result in deadlock. (Bug #21966621)
- The Performance Schema could acquire a double lock on session system variables, causing a server hang or (in debug builds) an assertion to be raised. (Bug #21935106)
- Certain queries containing WHERE 0 of the following form could cause a server exit due to uninitialized reads: SELECT (SELECT col AND constant FROM t WHERE 0) IN (SELECT constant FROM t1). (Bug #21922202)
- CREATE TEMPORARY TABLE .. SELECT statements involving BIT columns that resulted in a column type redefinition could cause a server exit or an improperly created table. (Bug #21902059)
- For UPDATE operations on InnoDB tables, there could be a mismatch between the value of a virtual generated column in the index and the value in the “before” buffer, resulting in a server exit. (Bug #21875520)
- With character_set_server=utf16le, some values of ft_boolean_syntax could cause a server exit for full-text searches. (Bug #21631855)
- With gtid_mode=ON, concurrent execution of SHOW TABLE STATUS and REVOKE ALL PRIVILEGES could lead to deadlock in there was a view in the database and REVOKE ALL PRIVILEGES failed for some but not all of the named users. (Bug #21463167)
- mysqlpump could exit due to incorrect synchronization of view-handling threads during dump processing. (Bug #21399236, Bug #21447753)
- With LOCK TABLES in force, an attempt to open a temporary MERGE table consisting of a view in its list of tables (not the last table in the list) caused a server exit. (Bug #20691429)
- For certain prepared statements, the optimizer could transform join conditions such that it used a pointer to a temporary table field that was no longer available after the initial execution. Subsequent executions caused a server exit. (Bug #19941403)
- Repeated execution of ALTER TABLE v1 CHECK PARTITION as a prepared statement, where v1 is a view, led to a server exit.
- In addition, output for some administrative operations, when they are attempted on a view, changes from “Corrupt” to “Operation failed”. These include ANALYZE TABLE, OPTIMIZE TABLE, and REPAIR TABLE, and ALTER TABLE statements that perform ANALYZE PARTITION, CHECK PARTITION, OPTIMIZE PARTITION, and REPAIR PARTITION operations. (Bug #19817021)
- Valgrind detected some possibly unsafe use of string functions in code used for asymmetric encryption. (Bug #19688135)
- An out-of-memory failure in join buffer allocation could lead to incorrect results for multiple-table queries. (Bug #19031409)
- SSL connections ignored any change made by passing the MYSQL_OPT_READ_TIMEOUT option to the mysql_options() C API function. (Bug #17618162)
- For ALTER TABLE statements, the parser did not support the ALGORITHM clause for some operations involving tablespaces or partitions. (Bug #17400320)
- Debian packages create the root user account using the auth_socket authentication plugin to achieve secure-by-default installation if installation was done with a blank root password. However, auth_socket was being used even if the password was not blank. (Bug #80137, Bug #22594846)
- Solaris packages failed to note the dependency of the MySQL client library on the libstlport library. (Bug #79778, Bug #22504264)
- Thread handle resource leakage could occur when creating threads for handling connections on Windows, which could lead to Windows servers eventually running out of handles. (Bug #79714, Bug #22455198)
- Using systemd to start mysqld failed if configuration files contained multiple datadir lines. Now the last datadir line is used. (Bug #79613, Bug #22361702)
- A derived table contained in the SET clause of an UPDATE statement should be materialized to avoid an error about updating a table that is also read in the same statement. Materialization did not occur for some statements, leading to that error. (Bug #79590, Bug #22343301)
- MySQL 5.7.8 prohibited references to select list columns of the outer query from the HAVING clause of a correlated subquery in the inner query because they are not permitted by standard SQL. However, because this is a frequently used extension, it is once again permitted. (Bug #79549, Bug #22328395)
- References: This bug was introduced by Bug #19823076.
- Installing just shared libraries, clients, and development support files failed to install everything needed to build client applications because the binary_log_types.h header file was not installed. (Bug #79531, Bug #22321338)
- SHOW CREATE TRIGGER could fail to display all applicable SQL modes. (Bug #79526, Bug #22313133)
- On SELinux, mysqld --initialize with an --init-file option could fail to initialize the data directory. (Bug #79442, Bug #22314098, Bug #79458, Bug #22286481)
- Syntax checks were not always performed when an ALTER TABLE statement changed a column's type from TEXT to JSON. This could lead to JSON columns containing invalid JSON data. This issue was observed when the original TEXT column used the utf8mb4_bin collation. (Bug #79432, Bug #22278524)
- Hexadecimal and bit literals written to saved view definitions could be truncated. This could also affect extended EXPLAIN output. (Bug #79398, Bug #22268110)
- ST_Buffer() returned an error for geometries with an SRID different from 0. Nonzero SRID values now are permitted but ignored (calculations are still done using Cartesian coordinates). (Bug #79394, Bug #22306745)
- A regression caused failure of the workaround at Restrictions on Subqueries for avoiding ER_UPDATE_TABLE_USED errors when referencing the same table in a subquery as was used as target for an UPDATE or DELETE statement. (Bug #79333, Bug #22239474)
- Statements causing multiple parse errors could cause an assertion to be raised. (Bug #79303, Bug #22222013)
- Some queries with derived tables perform better with materialization than when merged into the outer query. The optimizer no longer uses merging by default for derived tables containing dependent subqueries in the select list. (Bug #79294, Bug #22223202)
- ALTER USER and SET PASSWORD did not work at server startup when invoked in the file named using the --init-file option. (Bug #79277, Bug #22205360)
- When not in strict SQL mode, attempts to implicitly insert NULL into a NOT NULL column resulted in different behavior depending on whether the table had a trigger. (Bug #79266, Bug #22202665)
- Some replication-only code was not protected with #ifdef and failed to compile with the WITH_UBSAN CMake option enabled. (Bug #79236, Bug #22190632)
- Configuring MySQL with the -DWITH_UBSAN=ON CMake option resulted in spurious runtime warnings from comp_err. These are now suppressed. Also, a CMake warning was added that undefined behavior address sanitizer support is currently experimental. (Bug #79230, Bug #22190656)
- INSERT INTO ... SELECT statements could insert values other than DEFAULT into generated columns. (Bug #79204, Bug #22179637)
- With the derived_merge flag of the optimizer_switch system variable enabled, queries that used a derived table on the inner side of an outer join could return incorrect results. (Bug #79194, Bug #22176604)
- Memory leaks in libmysqld were corrected. (Bug #79187, Bug #22174219)
- FOUND_ROWS() could return a negative value if the preceding query was a UNION involving SQL_CALC_FOUND_ROWS and LIMIT ... OFFSET. (Bug #79131, Bug #22155786)
- IN-to-EXISTS subquery transformation could cause SELECT NULL IN (subquery) to return 0 rather than NULL.
- IN-to-EXISTS subquery transformation could yield incorrect results for queries for which the table was nonempty, the subquery on the left side of the IN predicate produced an empty result, and semi-join optimization was disabled. (Bug #78946, Bug #22090717, Bug #19822406)
- The result from WEIGHT_STRING() could be incorrect when used in a view. (Bug #78783, Bug #21974321)
- If server was started with --thread-handling=no-threads, no foreground thread was created for a client connection. The Performance Schema did not account for the possibility of no foreground threads for queries on the session_connect_attrs table, causing an assertion to be raised. (Bug #78292, Bug #21765843)
- mysqlpump generated incorrect INSERT statements for tables that had generated columns. (Bug #78082, Bug #21650559)
- ALTER TABLE ... CONVERT TO CHARACTER SET operations that used the INPLACE algorithm were ineffective if the table contained only numeric data types. Also, such operations failed to clean up their temporary .frm file. (Bug #77554, Bug #21345391)
- Heavy SHOW PROCESSLIST or SELECT ... FROM INFORMATION_SCHEMA.PROCESSLIST activity could result in the server accepting more than max_connections connections. (Bug #75155, Bug #20201006)
- When used with the libmysqld embedded server, the mysql_stmt_execute() C API function failed with a malformed communication packet error, even for simple prepared statements. (Bug #70664, Bug #17883203)
- Queries using SUM(DISTINCT) could produce incorrect results when there were many distinct values. (Bug #56927, Bug #11764126, Bug #79648, Bug #22370382)

MySQL 5.5.47 (32-bit) 查看版本資訊

更新時間:2015-12-09
更新細節:

What's new in this version:

Bugs Fixed:
- InnoDB: Altering the letter case of a column introduced an inconsistency between the frm file and data dictionary resulting in a failed CREATE INDEX operation on the altered column
- MySQL development RPM packages could fail to install if MySQL Connector/C development RPM packages were installed
- Possible buffer overflow from incorrect use of strcpy() and sprintf() was corrected
- MySQL RPM packages for RHEL5 failed to create the mysql system user
- Concurrent FLUSH PRIVILEGES and REVOKE or GRANT statements could produce a small time window during which invalid memory access to proxy user information could occur, leading to a server exit
- Starting the server with the query_alloc_block_size system variable set to certain negative values on a machine without enough memory could result in out-of-memory errors
- Using UNINSTALL PLUGIN to uninstall the daemon_example plugin could cause a server exit
- FLUSH DES_KEY_FILE failed to reload the DES key file
- A server exit could occur for the second execution of a prepared statement for which an ORDER BY clause referred to a column position
- Repeated execution of a prepared statement could cause a server exit if the default database was changed
- Outer references do not work as arguments to MATCH(), but the server did not properly detect them. Now it does and raises an error
- Valgrind errors were produced during row comparator setup
- INSERT DELAYED could cause a server exit for tables partitioned with a character column as the key and for which the expression required a character set conversion
- A server exit could occur when updating a view using an ALL comparison operator on a subquery that selects from an indexed column in the main table
- When a fixed-width row was inserted into a MyISAM temporary table, the entire content of the record buffer was written to the table, including any trailing space contained in VARCHAR columns, the issue being that this trailing space could be uninitialized. This problem has been resolved by insuring that only the bytes actually used to store the VARCHAR (and none extra) are copied and inserted in such cases
- Temporary MyISAM tables (unlike normal MyISAM tables) did not use the dynamic row format when they contained VARCHAR columns, resulting in larger temporary files (and more file I/O) than necessary

MySQL 5.6.28 (32-bit) 查看版本資訊

更新時間:2015-12-09
更新細節:

What's new in this version:

Bugs Fixed:
- InnoDB: InnoDB returned an invalid corruption-related error message during an IMPORT TABLESPACE operation
- InnoDB: An old version of numactl headers on the build host caused a compilation error when building a MySQL version that includes NUMA memory policy support
- InnoDB: An online ALTER TABLE operation caused a server exit
- InnoDB: A schema mismatch error occurred when importing a tablespace that was altered by DROP INDEX operation on the source server
- InnoDB: A duplicate key error that occurred during an online DDL operation reported an incorrect key name
- InnoDB: An ALTER TABLE operation caused the server to exit on disk full
- InnoDB: The system tablespace data file did not extend automatically when reaching the file size limit, causing startup to fail with a size mismatch error and preventing the addition of another system tablespace data file
- InnoDB: Altering the letter case of a column introduced an inconsistency between the frm file and data dictionary resulting in a failed CREATE INDEX operation on the altered column
- InnoDB: An ALTER TABLE operation that converted a table to an InnoDB file-per-table tablespace did not check for unknown files with the same name as the destination .idb file, permitting an unknown file of the same name to be overwritten
- Replication: As binlog_error_action=ABORT_SERVER is the default in MySQL 5.7.7 and later it is being used for more error situations. The behavior has been adjusted to generate a core dump to improve troubleshooting possibilities
- Replication: On a multi-threaded slave configured with master_info_repository=TABLE and relay_log_info_repository=TABLE which had previously been run with autocommit=1, if the slave was stopped and autocommit changed to 0, executing START SLAVE caused the session to appear to hang. After the lock wait timeout, when START SLAVE proceeded the server would stop unexpectedly. The fix ensures that when master_info_repository=TABLE, relay_log_info_repository=TABLE, and autocommit=0 a new transaction is generated for start and commit to avoid deadlocks
- Replication: Fatal errors encountered during flushing or synchronizing the binary log were being ignored. Such errors are now caught and handled depending on the setting of binlog_error_action
- Internal buffer sizes in resolve_stack_dump were increased to accommodate larger symbol space requirements for C++ code
- MySQL development RPM packages could fail to install if MySQL Connector/C development RPM packages were installed
- Possible buffer overflow from incorrect use of strcpy() and sprintf() was corrected
- MySQL RPM packages for RHEL5 failed to create the mysql system user
- For Debian package control files, libnuma-dev was added to Build-Depends to enable NUMA support
- Selecting DECIMAL values into user-defined variables could cause a server exit
- Concurrent FLUSH PRIVILEGES and REVOKE or GRANT statements could produce a small time window during which invalid memory access to proxy user information could occur, leading to a server exit
- Starting the server with the query_alloc_block_size system variable set to certain negative values on a machine without enough memory could result in out-of-memory errors
- Using UNINSTALL PLUGIN to uninstall the daemon_example plugin could cause a server exit
- FLUSH DES_KEY_FILE failed to reload the DES key file
- If an error occurred during the setup phase of subquery materialization used to compute an IN predicate, cleanup of the temporary table did not happen, leading to Valgrind errors
- Queries rejected by MySQL Enterprise Firewall were truncated to 512 characters when written to the error log
- A server exit could occur for the second execution of a prepared statement for which an ORDER BY clause referred to a column position
- Repeated execution of a prepared statement could cause a server exit if the default database was changed
- Outer references do not work as arguments to MATCH(), but the server did not properly detect them. Now it does and raises an error
- Valgrind errors were produced during row comparator setup
- After failure to create a temporary table during join processing and releasing the table descriptor, an attempt to access the now-invalid descriptor could cause a server exit
- Type conversion failure for DECIMAL values could cause a server exit
- INSERT DELAYED could cause a server exit for tables partitioned with a character column as the key and for which the expression required a character set conversion
- During a filesort for an UPDATE statement, the optimizer could access a stale pointer, resulting in a server exit
- A server exit could occur when updating a view using an ALL comparison operator on a subquery that selects from an indexed column in the main table
- Some stress test files in the mysql-test/suite/innodb_stress directory had the executable file mode set although they were not script files
- The server initialization script used for the service mysql status command on Linux sometimes incorrectly reported that the server was stopped