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
# Bugs fixed:
- InnoDB Storage Engine: InnoDB incorrectly reported an error when a cascading foreign key constraint deleted more than 250 rows.
- InnoDB Storage Engine: A SELECT ... FOR UPDATE statement affecting a range of rows in an InnoDB table could cause a crash in the debug version of the server.
- InnoDB Storage Engine: Improved the performance of UPDATE operations on InnoDB tables, when only non-indexed columns are changed.
- InnoDB Storage Engine: The server could crash on shutdown, if started with --innodb-use-system-malloc=0.
- InnoDB Storage Engine: Setting the PACK_KEYS=0 table option for an InnoDB table prevented new indexes from being added to the table.
- InnoDB Storage Engine: Changed the locking mechanism for the InnoDB data dictionary during ROLLBACK operations, to improve concurrency for REPLACE statements.
- InnoDB Storage Engine: InnoDB transactions could be incorrectly committed during recovery, rather than rolled back, if the server crashed and was restarted after performing ALTER TABLE...ADD PRIMARY KEY on an InnoDB table, or some other operation that involves copying the entire table.
- Partitioning: Replication: Attempting to execute LOAD DATA on a partitioned MyISAM table while using statement-based logging mode caused the master to hang or crash.
- Partitioning: Multi-table UPDATE statements involving a partitioned MyISAM table could cause this table to become corrupted. Not all tables affected by the UPDATE needed to be partitioned for this issue to be observed.
- Partitioning: EXPLAIN PARTITIONS returned bad estimates for range queries on partitioned MyISAM tables. In addition, values in the rows column of EXPLAIN PARTITIONS output did not take partition pruning into account.
- Replication: Backticks used to enclose idenitfiers for savepoints were not preserved in the binary log, which could lead to replication failure when the identifier, stripped of backticks, could be misinterpreted, causing a syntax or other error.
* If a query specified a DATE or DATETIME value in a format different from 'YYYY-MM-DD HH:MM:SS', a greater-than-or-equal (>=) condition matched only greater-than values in an indexed TIMESTAMP column.
* If there was an active SELECT statement, an error arising during trigger execution could cause a server crash.
* With an UPDATE IGNORE statement including a subquery that was evaluated using a temporary table, an error transferring the data from the temporary was ignored, causing an assertion to be raised.
* Row subqueries producing no rows were not handled as UNKNOWN values in row comparison expressions.
* The max_length metadata value of MEDIUMBLOB types was reported as 1 byte greater than the correct value.
* In some cases, when the left part of a NOT IN subquery predicate was a row and contained NULL values, the query result was incorrect.
* For some queries, the optimizer produced incorrect results using the Index Merge access method with InnoDB tables.
- EXPLAIN produced an incorrect rows value for queries evaluated using an index scan and that included LIMIT, GROUP BY, and ORDER BY on a computed column.
- mysql_store_result() and mysql_use_result() are not for use with prepared statements and are not intended to be called following mysql_stmt_execute(), but failed to return an error when invoked that way.
* A malformed packet sent by the server when the query cache was in use resulted in lost-connection errors.
- CREATE TABLE failed if a column referred to in an index definition and foreign key definition was in different lettercases in the two definitions.