MySQL Community Edition is a freely downloadable version of the world's most popular open source database that is supported by an active community of open source developers and enthusiasts.
MySQL delivers enterprise features, including:
- Partitioning to improve performance and management of very large database environments
- Row-based/Hybrid Replication for improved replication security
- Event Scheduler to create and schedule jobs that perform various database tasks
- XPath Support
- Dynamic General/Slow Query Log
- Performance/Load Testing Utility (mysqlslap)
- Improved! Full Text Search (faster, new dev templates)
- Improved! Archive engine (better compression, more features)
- Improved! User session and problem SQL identification
- Improved! MySQL embedded library (libmysqld)
- Additional INFORMATION_SCHEMA objects
- Faster data import operations (parallel file load)
- ACID Transactions to build reliable and secure business critical applications
- Stored Procedures to improve developer productivity
- Triggers to enforce complex business rules at the database level
- Views to ensure sensitive information is not compromised
- Information Schema to provide easy access to metadata
- Pluggable Storage Engine Architecture for maximum flexibility
- Archive Storage Engine for historical and audit data
# Functionality Added or Changed
* A new CMake option, WITH_ASAN, permits enabling address sanitization for compilers that support it.
* Attempts to use the thread_concurrency system variable (which has an effect only for Solaris 8 and earlier) now indicate that it has no effect when that is the case.
# Bugs Fixed
* InnoDB: Running SHOW ENGINE INNODB STATUS on one connection thread and killing that thread by running a KILL CONNECTION statement from a different connection thread would result in a severe error.
* InnoDB: CHECK TABLE would ignore the QUICK option.
* InnoDB: In debug builds, test case failures would occur due to ibuf_contract_ext performing merges and dict_stats_update returning evicted pages back into the buffer pool while ibuf_change_buffering_debug is enabled.
* InnoDB: InnoDB would fail to return an error when attempting to run a query after discarding the tablespace.
* InnoDB: When the change buffer is enabled, InnoDB would fail to write a transaction log record when merging a record from the insert buffer to a secondary index page if the insert was performed as an “update-in-place”.
* InnoDB: When index_read_map is called for an exact search and fails to return a record due to non-matching search criteria, the cursor would be positioned on the next record after the searched key. A subsequent call to index_next would return the next record instead of returning the previous non-matching row, thereby skipping a record.
* InnoDB: Converting a table with a large number of columns from MyISAM to InnoDB would cause an assertion due to insufficient log buffer space. Instead of asserting, InnoDB now attempts to increase log buffer size automatically if the redo log size is too large.
* Partitioning: After disabling the parent table's indexes with ALTER TABLE ... DISABLE KEYS, rebuilding any of its partitions enabled the indexes on those partitions, leading MyISAM to fail with an error when the optimizer tried to use one of the affected indexes.
* Replication: A replication master did not handle correctly the disabling of the semisync plugin on the master and the slave, with a subsequent stopping of the slave.
* Replication: The final argument in the SET clause of a LOAD DATA ... SET statement was repeated in the binary log.
* Replication: When an error encountered by the dump thread while reading events from the active binary log file was a temporary error, so that the dump thread tried to read the event, it was possible for the dump thread to seek the wrong position, which could cause one or more events to be resent. To prevent this, the thread's position is obtained after each correct read of an event.
* Replication: Setting rpl_semi_sync_master_enabled while the master was waiting for a reply from the slave could in some cases cause the master to fail.
* Replication: The value of LAST_INSERT_ID() was not correctly replicated when filtering rules were used on the slave.
* Enabling Index Merge optimizer switches and setting a small sort_buffer_size value could lead to a server exit.
* Some license and documentation files were missing from Windows MSI packages.
* The mysql_options() C API function could leak memory if called more than once with the MYSQL_SET_CLIENT_IP option.
* The CONV() function could call abs(INT_MIN), which is undefined, and cause a server exit.
* An error array in the SSL code was missing a comma, leading to implicit concatenation of adjacent messages and a resulting off-by-one error in the relationship between error numbers and messages.
* The filesort implementation sometimes failed to allocate enough buffer space, leading to a server exit.
* GROUP_CONCAT() with an invalid separator could cause a server exit.
* An internal InnoDB string routine could write past the end of a buffer.
* Using the binary client/server protocol, the second execution of a prepared statement for a query with parameters in the LIMIT clause raised an assertion.
* The usual failed-login attempt accounting was not applied to failed COM_CHANGE_USER commands.
* Very long database names in queries could cause the server to exit.
* Standalone Windows MSI packages did not have the ALLUSERS property set. They now set ALLUSERS=1. For earlier MSI packages in this MySQL series, a workaround is to use the following command:
- C:\> msiexec /i msi_installer_name ALLUSERS=1
* The my_b_vprintf() function could produce incorrect results for long integers on 64-bit systems.
* COUNT(DISTINCT) should not count NULL values, but they were counted when the optimizer used Loose Index Scan.
* For queries of the form UPDATE ... WHERE unique_key ORDER BY ... LIMIT ..., incorrect rows could be updated. Unique keys permit multiple NULL values, but the optimizer did not always consider all of them.
* Host names in grant tables are stored in lowercase, but mysql_install_db could fail to observe this convention, leading to accounts that could not be dropped with DROP USER.
* Killing a query that is performing a filesort operation resulted in an ER_SERVER_SHUTDOWN (Server shutdown in progess) error.