MySQL AB - (Open Source)
MySQL is a successful open source database used in most web applications, e-commerce and online transaction processing.
MySQL is one of the world's most famous and used open source database. The software can be used to manage web applications, e-commerce and online transaction processing since MySQL database incorporates support those transactions. It is also commonly associated with PHP when it comes to managing websites.
With standard JDBC , ODBC, and Net, the developer can choose the programming language. MySQL has the advantage of working with almost all the popular operating systems and communicate easily with programming languages ​​such as C, C + +, VB, C #, PHP, Python, Ruby, Java, Perl, Eiffel, etc.MySQL replication allows you to create profitable applications. In addition, it enables the development of typologies replication complex and massive chain.Its reliability and robustness, performance, ease of use makes MySQL have more success than anticipated.
Functionality added or changed:
*MySQL Cluster: The server source tree now includes scripts to simplify building MySQL with SCI support. For more information about SCI interconnects and these build scripts, see Section 16.9.1, Configuring MySQL Cluster to use SCI Sockets. (Bug#25470)
*Binaries for the Linux x86 statically linked tar.gz Community package were linked dynamically, not statically. Static linking has been re-enabled. (Bug#29617)
*Prior to this release, when DATE values were compared with DATETIME values the time portion of the DATETIME value was ignored. Now a DATE value is coerced to the DATETIME type by adding the time portion as 00:00:00. To mimic the old behavior use the CAST() function in the following way: SELECT date_field = CAST(NOW() as DATE);. (Bug#28929)
*A new status variable, Com_call_procedure, indicates the number of calls to stored procedures. (Bug#27994)
Bugs fixed:
*Security Fix: A malformed password packet in the connection protocol could cause the server to crash. Thanks for Dormando for reporting this bug and providing details and a proof of concept. (Bug#28984)
*Security Fix: Use of a view could allow a user to gain update privileges for tables in other databases. (Bug#27878, CVE-2007-3782)
*Security Fix: The requirement of the DROP privilege for RENAME TABLE was not being enforced. (Bug#27515, CVE-2007-2691)
*Security Fix: If a stored routine was declared using SQL SECURITY INVOKER, a user who invoked the routine could gain privileges. (Bug#27337, CVE-2007-2692)
*Security Fix: CREATE TABLE LIKE did not require any privileges on the source table. Now it requires the SELECT privilege.
In addition, CREATE TABLE LIKE was not isolated from alteration by other connections, which resulted in various errors and incorrect binary log order when trying to execute concurrently a CREATE TABLE LIKE statement and either DDL statements on the source table or DML or DDL statements on the target table. (Bug#23667, Bug#25578, CVE-2007-3781)
*Incompatible Change: When mysqldump was run with the --delete-master-logs option, binary log files were deleted before it was known that the dump had succeeded, not after. (The method for removing log files used RESET MASTER prior to the dump. This also reset the binary log sequence numbering to .000001.) Now mysqldump flushes the logs (which creates a new binary log number with the next sequence number), performs the dump, and then uses PURGE MASTER LOGS to remove the log files older than the new one. This also preserves log numbering because the new log with the next number is generated and only the preceding logs are removed. However, this may affect applications if they rely on the log numbering sequence being reset. (Bug#24733)
*Incompatible Change: The use of an ORDER BY or DISTINCT clause with a query containing a call to the GROUP_CONCAT() function caused results from previous queries to be redisplayed in the current result. The fix for this includes replacing a BLOB value used internally for sorting with a VARCHAR. This means that for long results (more than 65,535 bytes), it is possible for truncation to occur; if so, an appropriate warning is issued. (Bug#23856, Bug#28273)
*MySQL Cluster: : A corrupt schema file could cause a File already open error. (Bug#28770)
*MySQL Cluster: A race condition could result when non-master nodes (in addition to the master node) tried to update active status due to a local checkpoint. Now only the master updates the active status. (Bug#28717)
*MySQL Cluster: A fast global checkpoint under high load with a high usage of the redo buffer caused data nodes to fail. (Bug#28653)
*MySQL Cluster: When an API node sent more than 1024 signals in a single batch, NDB would process only the first 1024 of these, and then hang. (Bug#28443)
*MySQL Cluster: A delay in obtaining AUTO_INCREMENT IDs could lead to excess temporary errors. (Bug#28410)
*MySQL Cluster: INSERT IGNORE wrongly ignored NULL values in unique indexes. (Bug#27980)
*MySQL Cluster: The name of the month March was given incorrectly in the cluster error log. (Bug#27926)
*MySQL Cluster: It was not possible to add a unique index to an NDB table while in single user mode. (Bug#27710)
*MySQL Cluster: Repeated insertion of data generated by mysqldump into NDB tables could eventually lead to failure of the cluster. (Bug#27437)
*MySQL Cluster: (APIs): For BLOB reads on operations with lock mode LM_CommittedRead, the lock mode was not upgraded to LM_Read before the state of the BLOB had already been calculated. The NDB API methods affected by this problem included the following:
o
NdbOperation::readTuple()
o
NdbScanOperation::readTuples()
o
NdbIndexScanOperation::readTuples()
(Bug#27320)
*MySQL Cluster: ndb_connectstring did not appear in the output of SHOW VARIABLES. (Bug#26675)
*MySQL Cluster: A failure to release internal resources following an error could lead to problems with single user mode. (Bug#25818)
*On the IBM i5 platform, the installation script in *SAVF binaries unconditionally executed the mysql_install_db script. This problem was fixed in a repackaged distribution numbered 5.0.45b. (Bug#30084)
*Long pathnames for internal temporary tables could cause stack overflows. (Bug#29015)
*Using an INTEGER column from a table to ROUND() a number produced different results than using a constant with the same value as the INTEGER column. (Bug#28980)
*If a program binds a given number of parameters to a prepared statement handle and then somehow changes stmt->param_count to a different number, mysql_stmt_execute() could crash the client or server. (Bug#28934)
*INSERT .. ON DUPLICATE KEY UPDATE could under some circumstances silently update rows when it should not have. (Bug#28904)
*Queries that used UUID() were incorrectly allowed into the query cache. (This should not happen because UUID() is non-deterministic.) (Bug#28897)
*Using a VIEW created with a non-existing DEFINER could lead to incorrect results under some circumstances. (Bug#28895)
*On Windows, USE_TLS was not defined for mysqlclient.lib. (Bug#28860)
*A subquery with ORDER BY and LIMIT 1 could cause a server crash. (Bug#28811)
*Using BETWEEN with non-indexed date columns and short formats of the date string could return incorrect results. (Bug#28778)
*Selecting GEOMETRY columns in a UNION caused a server crash. (Bug#28763)
*When constructing the path to the original .frm file, ALTER .. RENAME was unnecessarily (and incorrectly) lowercasing the entire path when not on a case-insensitive filesystem, causing the statement to fail. (Bug#28754)
*The actual value of MaxNoOfOpenFiles as used by the cluster was offset by 1 from the value set in config.ini. This meant that setting InitialNoOpenFilesto the same value always caused an error. (Bug#28749)
*Searches on indexed and non-indexed ENUM columns could return different results for empty strings. (Bug#28729)
*Executing EXPLAIN EXTENDED on a query using a derived table over a grouping subselect could lead to a server crash. This occurred only when materialization of the derived tables required creation of an auxiliary temporary table, an example being when a grouping operation was carried out with usage of a temporary table. (Bug#28728)
*UPDATE IGNORE statements involving the primary keys of multiple tables could result in data corruption. (Bug#28719)
*The result of evaluation for a view's CHECK OPTION option over an updated record and records of merged tables was arbitrary and dependant on the order of records in the merged tables during the execution of the SELECT statement. (Bug#28716)
*The manager thread of the LinuxThreads implementation was unintentionally started before mysqld had dropped privileges (to run as an unprivileged user). This caused signaling between threads in mysqld to fail when the privileges were finally dropped. (Bug#28690)
*For debug builds, ALTER TABLE could trigger an assertion failure due to occurrence of a deadlock when committing changes. (Bug#28652)
*After an upgrade, the names of stored routines referenced by views were no longer displayed by SHOW CREATE VIEW. (Bug#28605)
This regression was introduced by Bug#23491
*Killing from one connection a long-running EXPLAIN QUERY started from another connection caused mysqld to crash. (Bug#28598)
*Outer join queries with ON conditions over constant outer tables did not return NULL-complemented rows when conditions were evaluated to FALSE. (Bug#28571)
*An update on a multiple-table view with the CHECK OPTION clause and a subquery in the WHERE condition could cause an assertion failure. (Bug#28561)
*PURGE MASTER LOGS BEFORE (subquery) caused a server crash. Subqueries are forbidden in the BEFORE clause now. (Bug#28553)
*mysqldump calculated the required memory for a hex-blob string incorrectly causing a buffer overrun. This in turn caused mysqldump to crash silently and produce incomplete output. (Bug#28522)
*Passing a DECIMAL value as a parameter of a statement prepared with PREPARE resulted in an error. (Bug#28509)
*mysql_affected_rows() could return an incorrect result for INSERT ... ON DUPLICATE KEY UPDATE if the CLIENT_FOUND_ROWS flag was set. (Bug#28505)
*A query that grouped by the result of an expression returned a different result when the expression was assigned to a user variable. (Bug#28494)
*Subselects returning LONG values in MySQL versions later than 5.0.24a returned LONGLONG prior to this. The previous behavior was restored. (Bug#28492)
This regression was introduced by Bug#19714
*Forcing the use of an index on a SELECT query when the index had been disabled would raise an error without running the query. The query now executes, with a warning generated noting that the use of a disabled index has been ignored. (Bug#28476)
*The result of executing of a prepared statement created with PREPARE s FROM "SELECT 1 LIMIT ?" was not replicated correctly. (Bug#28464)
*The query SELECT '2007-01-01' + INTERVAL column_name DAY FROM table_name caused mysqld to fail. (Bug#28450)
*A server crash could happen under rare conditions such that a temporary table outgrew heap memory reserved for it and the remaining disk space was not big enough to store the table as a MyISAM table. (Bug#28449)
*mysql_upgrade failed if certain SQL modes were set. Now it sets the mode itself to avoid this problem. (Bug#28401)
*A query with a NOT IN subquery predicate could cause a crash when the left operand of the predicate evaluated to NULL. (Bug#28375)
*The test case for mysqldump failed with bin-log disabled. (Bug#28372)
*Attempting to LOAD_FILE from an empty floppy drive under Windows, caused the server to hang. For example, if you opened a connection to the server and then issued the command SELECT LOAD_FILE('a:test');, with no floppy in the drive, the server was inaccessible until the modal pop-up dialog box was dismissed. (Bug#28366)
*A buffer overflow could occur when using DECIMAL columns on Windows operating systems. (Bug#28361)
*libmysql.dll could not be dynamically loaded on Windows. (Bug#28358)
*Grouping queries with correlated subqueries in WHERE conditions could produce incorrect results. (Bug#28337)
*mysqltest used a too-large stack size on PPC/Debian Linux, causing thread-creation failure for tests that use many threads. (Bug#28333)
*EXPLAIN for a query on an empty table immediately after its creation could result in a server crash. (Bug#28272)
*The IS_UPDATABLE column in the INFORMATION_SCHEMA.VIEWS table was not always set correctly. (Bug#28266)
*Comparing a DATETIME column value with a user variable yielded incorrect results. (Bug#28261)
*For CAST() of a NULL value with type DECIMAL, the return value was incorrectly initialized, producing a runtime error for binaries built using Visual C++ 2005. (Bug#28250)
*Recreating a view that already exists on the master would cause a replicating slave to terminate replication with a 'different error message on slave and master' error. (Bug#28244)
*Portability problems caused by use of isinf() were corrected. (Bug#28240)
*When dumping procedures, mysqldump --compact generated output that restored the session variable SQL_MODE without first capturing it. When dumping routines, mysqldump --compact neither set nor retrieved the value of SQL_MODE. (Bug#28223)
*Comparison of the string value of a date showed as unequal to CURTIME(). Similar behavior was exhibited for DATETIME values. (Bug#28208)
*For InnoDB, in some rare cases the optimizer preferred a more expensive ref access to a less expensive range access. (Bug#28189)
*A performance degradation was observed for outer join queries to which a not-exists optimization was applied. (Bug#28188)
*SELECT * INTO OUTFILE ... FROM INFORMATION_SCHEMA.schemata failed with an Access denied error, even for a user who has the FILE privilege. (Bug#28181)
*The Bytes_received and Bytes_sent status variables could hold only 32-bit values (not 64-bit values) on some platforms. (Bug#28149)
*Comparisons of DATE or DATETIME values for the IN() function could yield incorrect results. (Bug#28133)
*Storing a large number into a FLOAT or DOUBLE column with a fixed length could result in incorrect truncation of the number if the column's length was greater than 31. (Bug#28121)
*The cluster waited 30 seconds instead of 30 milliseconds before reading table statistics. (Bug#28093)
*The server could hang for INSERT IGNORE ... ON DUPLICATE KEY UPDATE if an update failed. (Bug#28000)
*The BLACKHOLE storage engine does not support INSERT DELAYED statements, but they were not being rejected. (Bug#27998)
*DECIMAL values beginning with nine 9 digits could be incorrectly rounded. (Bug#27984)
*CAST() to DECIMAL did not check for overflow. (Bug#27957)
*For INSERT ... ON DUPLICATE KEY UPDATE statements that affected many rows, updates could be applied to the wrong rows. (Bug#27954)
*Early NULL-filtering optimization did not work for eq_ref table access. (Bug#27939)
*The second execution of a prepared statement from a UNION query with ORDER BY RAND() caused the server to crash. This problem could also occur when invoking a stored procedure containing such a query. (Bug#27937)
*Views ignored precision for CAST() operations. (Bug#27921)
*For attempts to open a non-existent table, the server should report ER_NO_SUCH_TABLE but sometimes reported ER_TABLE_NOT_LOCKED. (Bug#27907)
*A stored program that uses a variable name containing multibyte characters could fail to execute. (Bug#27876)
*Non-grouped columns were allowed by * in ONLY_FULL_GROUP_BY SQL mode. (Bug#27874)
*ON conditions from JOIN expressions were ignored when checking the CHECK OPTION clause while updating a multiple-table view that included such a clause. (Bug#27827)
*Debug builds on Windows generated false alarms about uninitialized variables with some Visual Studio runtime libraries. (Bug#27811)
*Certain queries that used uncorrelated scalar subqueries caused EXPLAIN to to crash. (Bug#27807)
*Changes to some system variables should invalidate statements in the query cache, but invalidation did not happen. (Bug#27792)
*Performing a UNION on two views that had had ORDER BY clauses resulted in an Unknown column error. (Bug#27786)
*mysql_install_db is supposed to detect existing system tables and create only those that do not exist. Instead, it was exiting with an error if tables already existed. (Bug#27783)
*On some systems, udf_example.c returned an incorrect result length. Also on some systems, mysql-test-run.pl could not find the shared object built from udf_example.c. (Bug#27741)
*mysqld did not check the length of option values and could crash with a buffer overflow for long values. (Bug#27715)
*Comparisons using row constructors could fail for rows containing NULL values. (Bug#27704)
*LOAD DATA did not use CURRENT_TIMESTAMP as the default value for a TIMESTAMP column for which no value was provided. (Bug#27670)
*mysqldump could not connect using SSL. (Bug#27669)
*On Linux, the server could not create temporary tables if lower_case_table_names was set to 1 and the value of tmpdir was a directory name containing any uppercase letters. (Bug#27653)
*For InnoDB tables, a multiple-row INSERT of the form INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id), where id is an AUTO_INCREMENT column, could cause ERROR 1062 (23000): Duplicate entry... errors or lost rows. (Bug#27650)
*HASH indexes on VARCHAR columns with binary collations did not ignore trailing spaces from strings before comparisons. This could result in duplicate records being successfully inserted into a MEMORY table with unique key constraints. A consequence was that internal MEMORY tables used for GROUP BY calculation contained duplicate rows that resulted in duplicate-key errors when converting those temporary tables to MyISAM, and that error was incorrectly reported as a table is full error. (Bug#27643)
*The XML output representing an empty result was an empty string rather than an empty element. (Bug#27608)
*An error occurred trying to connect to mysqld-debug.exe. (Bug#27597)
*Comparison of a DATE with a DATETIME did not treat the DATE as having a time part of 00:00:00. (Bug#27590)
*Selecting MIN() on an indexed column that contained only NULL values caused NULL to be returned for other result columns. (Bug#27573)
*If a stored function or trigger was killed, it aborted but no error was thrown, allowing the calling statement to continue without noticing the problem. This could lead to incorrect results. (Bug#27563)
*The fix for Bug#17212 provided correct sort order for misordered output of certain queries, but caused significant overall query performance degradation. (Results were correct (good), but returned much more slowly (bad).) The fix also affected performance of queries for which results were correct. The performance degradation has been addressed. (Bug#27531)
*The CRC32() function returns an unsigned integer, but the metadata was signed, which could cause certain queries to return incorrect results. (For example, queries that selected a CRC32() value and used that value in the GROUP BY clause.) (Bug#27530)
*An interaction between SHOW TABLE STATUS and other concurrent statements that modify the table could result in a divide-by-zero error and a server crash. (Bug#27516)
*When ALTER TABLE was used to add a new DATE column with no explicit default value, '0000-00-00' was used as the default even if the SQL mode included the NO_ZERO_DATE mode to prohibit that value. A similar problem occurred for DATETIME columns. (Bug#27507)
*A race condition between DROP TABLE and SHOW TABLE STATUS could cause the latter to display incorrect information. (Bug#27499)
*Using a TEXT local variable in a stored routine in an expression such as SET var = SUBSTRING(var, 3) produced an incorrect result. (Bug#27415)
*Nested aggregate functions could be improperly evaluated. (Bug#27363)
*A stored function invocation in the WHERE clause was treated as a constant. (Bug#27354)
*Failure to allocate memory associated with transaction_prealloc_size could cause a server crash. (Bug#27322)
*mysqldump crashed if it got no data from SHOW CREATE PROCEDURE (for example, when trying to dump a routine defined by a different user and for which the current user had no privileges). Now it prints a comment to indicate the problem. It also returns an error, or continues if the --force option is given. (Bug#27293)
*The error message for error number 137 did not report which database/table combination reported the problem. (Bug#27173)
*mysqlbinlog produced different output with the -R option than without it. (Bug#27171)
*A large filesort could result in a division by zero error and a server crash. (Bug#27119)
*Times displayed by SHOW PROFILE were incorrectly associated with the profile entry one later than the corrrect one. (Bug#27060)
*Flow control optimization in stored routines could cause exception handlers to never return or execute incorrect logic. (Bug#26977)
*SHOW PROFILE hung if executed before enabling the @@profiling session variable. (Bug#26938)
*Binary logging of prepared statements could produce syntactically incorrect queries in the binary log, replacing some parameters with variable names rather than variable values. This could lead to incorrect results on replication slaves. (Bug#26842, Bug#12826)
*mysqldump would not dump a view for which the DEFINER no longer exists. (Bug#26817)
*Connections from one mysqld server to another failed on Mac OS X, affecting replication and FEDERATED tables. (Bug#26664)
*Creating a temporary table with InnoDB when using the one-file-per-table setting, when the host filesystem for temporary tables is tmpfs would cause an assertion within mysqld. This was due to the use of O_DIRECT when opening the temporary table file. (Bug#26662)
*mysql_upgrade did not detect failure of external commands that it runs. (Bug#26639)
*Some test suite files were missing from some MySQL-test packages. (Bug#26609)
*Aborting a statement on the master that applied to a non-transactional statement broke replication. The statement was written to the binary log but not completely executed on the master. Slaves receiving the statement executed it completely, resulting in loss of data synchrony. Now an error code is written to the error log so that the slaves stop without executing the aborted statement. (That is, replication stops, but synchrony to the point of the stop is preserved and you can investigate the problem.) (Bug#26551)
*Statements within triggers ignored the value of the low_priority_updates system variable. (Bug#26162)
*Index hints (USE INDEX, IGNORE INDEX, FORCE INDEX) cannot be used with FULLTEXT indexes, but were not being ignored. (Bug#25951)
*If CREATE TABLE t1 LIKE t2 failed due to a full disk, an empty t2.frm file could be created but not removed. This file then caused subsequent attempts to create a table named t2 to fail. This is easily corrected at the filesystem level by removing the t2.frm file manually, but now the server removes the file if the create operation does not complete successfully. (Bug#25761)
*Running CHECK TABLE concurrently with a SELECT, INSERT or other statement on Windows could corrupt a MyISAM table. (Bug#25712)
*On Windows, connection handlers did not properly decrement the server's thread count when exiting. (Bug#25621)
*mysql_upgrade did not pass a password to mysqlcheck if one was given. (Bug#25452)
*On Windows, mysql_upgrade was sensitive to lettercase of the names of some required components. (Bug#25405)
*For storage engines that allow the current auto-increment value to be set, using ALTER TABLE ... ENGINE to convert a table from one such storage engine to another caused loss of the current value. (For storage engines that do not support setting the value, it cannot be retained anyway when changing the storage engine.) (Bug#25262)
*Restoration of the default database after stored routine or trigger execution on a slave could cause replication to stop if the database no longer existed. (Bug#25082)
*Due to a race condition, executing FLUSH PRIVILEGES in one thread could cause brief table unavailability in other threads. (Bug#24988)
*Several math functions produced incorrect results for large unsigned values. ROUND() produced incorrect results or a crash for a large number-of-decimals argument. (Bug#24912)
*The result set of a query that used WITH ROLLUP and DISTINCT could lack some rollup rows (rows with NULL values for grouping attributes) if the GROUP BY list contained constant expressions. (Bug#24856)
*Potential memory leaks in the SHOW PROFILE implementation were eliminated. (Bug#24795)
*For queries that used ORDER BY with InnoDB tables, if the optimizer chose an index for accessing the table but found a covering index that enabled the ORDER BY to be skipped, no results were returned. (Bug#24778)
*Concurrent execution of CREATE TABLE ... SELECT and other statements involving the target table suffered from various race conditions, some of which might have led to deadlocks. (Bug#24738)
*On some Linux distributions where LinuxThreads and NPTL glibc versions both are available, statically built binaries can crash because the linker defaults to LinuxThreads when linking statically, but calls to external libraries (such as libnss) are resolved to NPTL versions. This cannot be worked around in the code, so instead if a crash occurs on such a binary/OS combination, print an error message that provides advice about how to fix the problem. (Bug#24611)
*An attempt to execute CREATE TABLE ... SELECT when a temporary table with the same name already existed led to the insertion of data into the temporary table and creation of an empty non-temporary table. (Bug#24508)
*The MERGE storage engine could return incorrect results when several index values that compare equality were present in an index (for example, 'gross' and 'gross ', which are considered equal but have different lengths). (Bug#24342)
*Some upgrade problems are detected and better error messages suggesting that mysql_upgrade be run are produced. (Bug#24248)
*Some views could not be created even when the user had the requisite privileges. (Bug#24040)
*Using CAST() to convert DATETIME values to numeric values did not work. (Bug#23656)
*The AUTO_INCREMENT value would not be correctly reported for InnoDB tables when using SHOW CREATE TABLE statement or mysqldump command. (Bug#23313)
*Implicit conversion of 9912101 to DATE did not match CAST(9912101 AS DATE). (Bug#23093)
*Conversion errors could occur when constructing the condition for an IN predicate. The predicate was treated as if the affected column contains NULL, but if the IN predicate is inside NOT, incorrect results could be returned. (Bug#22855)
*SELECT COUNT(*) from a table containing a DATETIME NOT NULL column could produce spurious warnings with the NO_ZERO_DATE SQL mode enabled. (Bug#22824)
*When using transactions and replication, shutting down the master in the middle of a transaction would cause all slaves to stop replicating. (Bug#22725)
*Using SET GLOBAL to change the lc_time_names system variable had no effect on new connections. (Bug#22648)
*A multiple-table UPDATE could return an incorrect rows-matched value if, during insertion of rows into a temporary table, the table had to be converted from a MEMORY table to a MyISAM table. (Bug#22364)
*yaSSL crashed on pre-Pentium Intel CPUs. (Bug#21765)
*Linux binaries were unable to dump core after executing a setuid() call. (Bug#21723)
*A slave that used --master-ssl-cipher could not connect to the master. (Bug#21611)
*Quoted labels in stored routines were mishandled, rendering the routines unusable. (Bug#21513)
*The server could abort or deadlock for INSERT DELAYED statements for which another insert was performed implicitly (for example, via a stored function that inserted a row). (Bug#21483)
*Stack overflow caused server crashes. (Bug#21476)
*CURDATE() is less than NOW(), either when comparing CURDATE() directly (CURDATE() < NOW() is true) or when casting CURDATE() to DATE (CAST(CURDATE() AS DATE) < NOW() is true). However, storing CURDATE() in a DATE column and comparing col_name < NOW() incorrectly yielded false. This is fixed by comparing a DATE column as DATETIME for comparisons to a DATETIME constant. (Bug#21103)
*CREATE TABLE IF NOT EXISTS ... SELECT caused a server crash if the target table already existed and had a BEFORE INSERT trigger. (Bug#20903)
*Deadlock occurred for attempts to execute CREATE TABLE IF NOT EXISTS ... SELECT when LOCK TABLES had been used to acquire a read lock on the target table. (Bug#20662, Bug#15522)
*Changing a utf8 column in an InnoDB table to a shorter length did not shorten the data values. (Bug#20095)
*For dates with 4-digit year parts less than 200, an incorrect implicit conversion to add a century was applied for date arithmetic performed with DATE_ADD(), DATE_SUB(), + INTERVAL, and - INTERVAL. (For example, DATE_ADD('0050-01-01 00:00:00', INTERVAL 0 SECOND) became '2050-01-01 00:00:00'.) (Bug#18997)
*Using CREATE TABLE LIKE ... would raise an assertion when replicated to a slave. (Bug#18950)
*Granting access privileges to an individual table where the database or table name contained an underscore would fail. (Bug#18660)
*The -lmtmalloc library was removed from the output of mysql_config on Solaris, as it caused problems when building DBD::mysql (and possibly other applications) on that platform that tried to use dlopen() to access the client library. (Bug#18322)
*The check-cpu script failed to detect AMD64 Turion processors correctly. (Bug#17707)
*Trying to shut down the server following a failed LOAD DATA INFILE caused mysqld to crash. (Bug#17233)
*The omission of leading zeros in dates could lead to erroneous results when these were compared with the output of certain date and time functions. (Bug#16377)
*INSERT...ON DUPLICATE KEY UPDATE could cause Error 1032: Can't find record in ... for inserts into an InnoDB table unique index using key column prefixes with an underlying utf8 string column. (Bug#13191)
*Having the EXECUTE privilege for a routine in a database should make it possible to USE that database, but the server returned an error instead. This has been corrected. As a result of the change, SHOW TABLES for a database in which you have only the EXECUTE privilege returns an empty set rather than an error. (Bug#9504)