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
- Important Change; Replication: When the server was running with --binlog-ignore-db and SELECT DATABASE() returned NULL (that is, there was no currently selected database), statements using fully qualified table names in dbname.tblname format were not written to the binary log. This was because the lack of a currently selected database in such cases was treated as a match for any possible ignore option rather than for no such option; this meant that these statements were always ignored. Now, if there is no current database, a statement using fully qualified table names is always written to the binary log.
- InnoDB: Valgrind testing returned memory leak errors which resulted from a regression . The dict_create_add_foreign_to_dictionary function would call pars_info_create but failed to call pars_info_free.
- InnoDB: The fix for resulted in a linker error.
- InnoDB: Crash recovery would fail with a !recv_no_log_write assertion when reading a page.
- Replication: Using the --replicate-* options (see Replication Slave Options and Variables) could in some cases lead to a memory leak on the slave.
- Replication: The binary log contents got corrupted sometimes, because the function MYSQL_BIN_LOG::write_cache always thought it had reached the end-of-cache when the function my_b_fill() reported a '0,' while that could also mean an error had occurred. This fix makes sure that whenever my_b_fill() returns a '0,' an error check is performed on info->error.
- The WKB reader for spatial operations could fail and cause a server exit.
- A GROUP_CONCAT() invocation containing subquery having an outer reference caused the server to exit.
- For debug builds, GROUP_CONCAT(... ORDER BY) within an ORDER BY clause could cause a server exit.
- If loose index scan was used on a query that used MIN(), a segmentation fault could occur.
- A prepared statement that used GROUP_CONCAT() and an ORDER BY clause that named multiple columns could cause the server to exit.
- ORDER BY MATCH ... AGAINST could cause a server exit.
- When a partition is missing, code in ha_innodb.cc would retry 10 times and sleep for a microsecond each time while holding LOCK_open. The retry logic for partitioned tables was introduced as a fix but did not include a test case to validate it. This fix removes the retry logic for partitioned tables. If the problem reported reappears, a different solution will be explored.
- The mysql.server script exited with an error if the status command was executed with multiple servers running.
- When processing row-based-replication events in the old binary log format from prior to MySQL 5.1 GA builds, mysqlbinlog could result in out-of-bounds heap buffer reads and undefined behaviour.
- The mysql client allocated but did not free a string after reading each line in interactive mode, resulting in a memory leak.
- Grouping by an outer BLOB column in a subquery caused a server exit.
- The url columns in the mysql datatbase help tables were too short to hold some of the URLs in the help content. For new installations, these columns are now created as type TEXT to accommodate longer URLs.
- For upgrades, mysql_upgrade does not update the columns. Modify them manually using these statements:
ALTER TABLE mysql.help_category MODIFY url TEXT NOT NULL;
ALTER TABLE mysql.help_topic MODIFY url TEXT NOT NULL;
- The test for stack overrun did not work for recent gcc versions and could lead to server exit.
- IF() function evaluations could produce different results when executed in a prepared versus nonprepared statement.