When the publishing process for MySQL 5.5.1-m2 was already running, the MySQL team was informed about a security problem in the SSL connect area (a possibility to crash the server). The problem is caused by a buffer overflow in the yaSSL library. MySQL Servers using OpenSSL are not affected; it can only occur when SSL (using yaSSL) is enabled.
This problem is still under detailed investigation with the various versions, configurations, and platforms. When that has finished, the problem will be fixed as soon as possible, and new binaries for the affected versions will be released. However, building and testing these binaries in the various configurations on the various platforms will take some time.
The bug is tracked with CVE ID CVE-2009-4484. We repeat the general security hint: If it is not absolutely necessary that external machines can connect to your database instance, we recommend that the server's connection port be blocked by a firewall to prevent any such illegitimate accesses.
InnoDB Notes:
InnoDBhas been upgraded to version 1.0.6. This version is considered of Release Candidate (RC) quality. Section 13.7.12, “InnoDB Storage Engine Change History”, may contain information in addition to those changes reported here.
RPM Notes:
The version information in RPM package files has been changed:
The “level” field of a MySQL version number is now also included in the RPM version and in the package file name.
The RPM “release” value now starts to count from 1, not 0.
For example, the generic x86 server RPM file of 5.5.1-m2 is named
MySQL-server-5.5.1_m2-1.glibc23.i386.rpm. This improves consistency with other formats that also include the level (for this version: “m2”) in the file name. For example, thetar.gzfilename ismysql-5.5.1-m2-linux-i686-glibc23.tar.gz. The different separator, underscore'_'for RPM, is required by the syntax of RPM.
Functionality added or changed:
Partitioning: The
UNIX_TIMESTAMP()function is now supported in partitioning expressions usingTIMESTAMPcolumns. For example, it now possible to create a partitioned table such as this one:CREATE TABLE t (c TIMESTAMP) PARTITION BY RANGE ( UNIX_TIMESTAMP(c) ) ( PARTITION p0 VALUES LESS THAN (631148400), PARTITION p1 VALUES LESS THAN (946681200), PARTITION p2 VALUES LESS THAN (MAXVALUE) );All other expressions involving
TIMESTAMPvalues are now rejected with an error when attempting to create a new partitioned table or to alter an existing partitioned table.When accessing an existing partitioned table having a timezone-dependent partitioning function (where the table was using a previous version of MySQL), a warning rather than an error is issued. In such cases, you should fix the table. One way of doing this is to alter the table's partitioning expression so that it uses
UNIX_TIMESTAMP(). (Bug#42849)
Bugs fixed:
Performance: When the query cache is fragmented, the size of the free block lists in the memory bins grows, which causes query cache invalidation to become slow. There is now a 50ms timeout for a
SELECTstatement waiting for the query cache lock. If the timeout expires, the statement executes without using the query cache. (Bug#39253)See also Bug#21074.
Incompatible Change: Replication: The file names for the semisynchronous plugins were prefixed with
lib, unlike file names for other plugins. The file names no longer have alibprefix.This change introduces an incompatibility if the plugins had been installed using the previous names. To handle this, uninstall the older version before installing the newer version. For example, use these statements for the master side plugins on Unix:
mysql>
UNINSTALL PLUGIN rpl_semi_sync_master;mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';If you do not uninstall the older version first, attempting to install the newer version results in an error:
mysql>
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';ERROR 1125 (HY000): Function 'rpl_semi_sync_master' already existsFor the slave side, similar statements apply:
mysql>
UNINSTALL PLUGIN rpl_semi_sync_slave;mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';Important Change: Replication: The following functions have been marked unsafe for statement-based replication:
None of the functions just listed are guaranteed to replicate correctly when using the statement-based format, because they can produce different results on the master and the slave. The use of any of these functions while
binlog_formatis set toSTATEMENTis logged with the warning, Statement is not safe to log in statement format. Whenbinlog_formatis set toMIXED, the binary logging format is automatically switched to the row-based format whenever one of these functions is used. (Bug#47995)Important Change: After a binary upgrade to MySQL 5.1 from a MySQL 5.0 installation that contains
ARCHIVEtables:Before MySQL 5.1.42, accessing those tables will cause the server to crash, even if you have run mysql_upgrade or
CHECK TABLE ... FOR UPGRADE.As of MySQL 5.1.42, the server will not open 5.0
ARCHIVEtables at all.
In either case, the solution is to use mysqldump to dump all 5.0
ARCHIVEtables before upgrading, and reload them into MySQL 5.1 after upgrading. The same problem occurs for binary downgrades from MySQL 5.1 to 5.0. (Bug#47012)InnoDB Storage Engine: When compiling on Windows, an error in the CMake definitions for
InnoDBwould cause the engine to be built incorrectly. (Bug#49502)Partitioning: When
SHOW CREATE TABLEwas invoked for a table that had been created using theCOLUMNSkeyword or theTO_SECONDS()function, the output contained the wrong MySQL version number in the conditional comments. (Bug#49591)Partitioning: A query that searched on a
ucs2column failed if the table was partitioned. (Bug#48737)Partitioning: In some cases, it was not possible to add a new column to a table that had subpartitions. (Bug#48276)
Partitioning:
SELECT COUNT(*)from a partitioned table failed when using theONLY_FULL_GROUP_BYSQL mode. (Bug#46923)This regression was introduced by Bug#45807.
Partitioning:
SUBPARTITION BY KEYfailed withDEFAULT CHARSET=utf8. (Bug#45904)Replication: When using row-based logging,
TRUNCATE TABLEwas written to the binary log even if the affected table was temporary, causing replication to fail. (Bug#48350)Replication: A flaw in the implementation of the purging of binary logs could result in orphaned files being left behind in the following circumstances:
If the server failed or was killed while purging binary logs.
If the server failed or was killed after creating of a new binary log when the new log file was opened for the first time.
In addition, if the slave was not connected during the purge operation, it was possible for a log file that was in use to be removed; this could lead data loss and possible inconsistencies between the master and slave. (Bug#45292)
Replication: When using the
STATEMENTorMIXEDlogging format, the statementsLOAD DATA CONCURRENT LOCAL INFILEandLOAD DATA CONCURRENT INFILEwere logged asLOAD DATA LOCAL INFILEandLOAD DATA LOCAL INFILE, respectively (in other words, theCONCURRENTkeyword was omitted). As a result, when using replication with either of these logging modes, queries on the slaves were blocked by the replication SQL thread while trying to execute the affected statements. (Bug#34628)Cluster Replication: When
expire_logs_dayswas set, the thread performing the purge of the log files could deadlock, causing all binary log operations to stop. (Bug#49536)For debug builds on Windows,
SAFEMALLOCwas defined inconsistently, leading to mismatches when usingmy_malloc()andmy_free(). (Bug#49811)The mysql.server script had incorrect shutdown logic. (Bug#49772)
The
push_warning_printf()function was being called with an invalid error levelMYSQL_ERROR::WARN_LEVEL_ERROR, causing an assertion failure. To fix the problem,MYSQL_ERROR::WARN_LEVEL_ERRORhas been replaced byMYSQL_ERROR::WARN_LEVEL_WARN. (Bug#49638)The result of comparison between nullable
BIGINTandINTcolumns was inconsistent. (Bug#49517)A Valgrind error in
make_cond_for_table_from_pred()was corrected. Thanks to Sergey Petrunya for the patch to fix this bug. (Bug#49506)Incorrect cache initialization prevented storage of converted constant values and could produce incorrect comparison results. (Bug#49489)
Comparisons involving
YEARvalues could produce incorrect results. (Bug#49480)See also Bug#43668.
Valgrind warnings for
CHECKSUM TABLEwere corrected. (Bug#49465)Specifying an index algorithm (such as
BTREE) forSPATIALorFULLTEXTindexes caused a server crash. These index types do not support algorithm specification, and it is not longer permitted to do so. (Bug#49250)The optimizer sometimes incorrectly handled conditions of the form
WHERE. (Bug#49199)col_name='const1' ANDcol_name='const2'Execution of
DECODE()andENCODE()could be inefficient because multiple executions within a single statement reinitialized the random generator multiple times even with constant parameters. (Bug#49141)With binary logging enabled,
REVOKE ... ON {PROCEDURE|FUNCTION} FROM ...could cause a crash. (Bug#49119)The
LIKEoperator did not work correctly when using an index for aucs2column. (Bug#49028)check_key_in_view()was missing aDBUG_RETURNin one code branch, causing a crash in debug builds. (Bug#48995)If a query involving a table was terminated with
KILL, a subsequentSHOW CREATE TABLEfor that table caused a server crash. (Bug#48985)Privileges for stored routines were ignored for mixed-case routine names. (Bug#48872)
See also Bug#41049.
Building MySQL on Fedora Core 12 64-bit failed, due to errors in comp_err. (Bug#48864)
Concurrent
ALTER TABLEoperations on anInnoDBtable could raise an assertion. (Bug#48782)Incomplete reset of internal
TABLEstructures could cause a crash witheq_reftable access in subqueries. (Bug#48709)During query execution, ranges could be merged incorrectly for
ORoperations and return an incorrect result. (Bug#48665)The
InnoDBTable Monitor reported theFLOATandDOUBLEdata types incorrectly. (Bug#48526)Re-execution of a prepared statement could cause a server crash. (Bug#48508)
With row-based binary logging, the server crashed for statements of the form
CREATE TABLE IF NOT EXISTS. This occurred because the server handled the existing view as a table when logging the statement. (Bug#48506)existing_viewLIKEtemporary_tableThe error message for
ER_UPDATE_INFOwas subject to buffer overflow or truncation. (Bug#48500)DISTINCTwas ignored for queries withGROUP BY WITH ROLLUPand onlyconsttables. (Bug#48475)Loose index scan was inappropriately chosen for some
WHEREconditions. (Bug#48472)The server could crash and corrupt the tablespace if the
InnoDBtablespace was configured with too small a value, or if manyCREATE TEMPORARY TABLEstatements were executed and the temporary file directory filled up withinnodb_file_per_tableenabled. (Bug#48469)Parts of the range optimizer could be initialized incorrectly, resulting in Valgrind errors. (Bug#48459)
A bad typecast could cause query execution to allocate large amounts of memory. (Bug#48458)
SHOW BINLOG EVENTScould fail with a error:Wrong offset or I/O error. (Bug#48357)Valgrind warnings related to binary logging of
LOAD DATA INFILEstatements were corrected. (Bug#48340)On Windows,
InnoDBcould not be built as a statically linked library. (Bug#48317)mysql_secure_installation did not work on Solaris. (Bug#48086)
When running mysql_secure_installation, the command would fail if the root password contained multiple spaces, \, # or quote characters. (Bug#48031)
MATCH IN BOOLEAN MODEsearches could return too many results inside a subquery. (Bug#47930)User-defined collations with an ID less then 256 were not initialized correctly when loaded and caused a server crash. (Bug#47756)
If a session held a global read lock acquired with
FLUSH TABLES WITH READ LOCK, a lock for one table acquired withLOCK TABLES, and issued anINSERT DELAYEDstatement for another table, deadlock could occur. (Bug#47682)The mysql client
statuscommand displayed an incorrect value for the server character set. (Bug#47671)Connecting to a 4.1.x server from a 5.1.x or higher mysql client resulted in a memory-free error when disconnecting. (Bug#47655)
Queries containing
GROUP BY ... WITH ROLLUPthat did not use indexes could return incorrect results. (Bug#47650)Assignment of a system variable sharing the same base name as a declared stored program variable in the same context could lead to a crash. (Bug#47627)
On Solaris, no stack trace was printed to the error log after a crash. (Bug#47391)
The first execution of
STOP SLAVE UNTILstopped too early. (Bug#47210)The
innodb_file_format_checksystem variable could not be set at runtime toDEFAULTor to the value of a user-defined variable. (Bug#47167)The
IGNOREclause on aDELETEstatement masked an SQL statement error that occurred during trigger processing. (Bug#46425)Valgrind errors for
InnoDBwere corrected. (Bug#45992, Bug#46656)The return value was not checked for some
my_hash_insert()calls. (Bug#45613)It was possible for
init_available_charsets()not to initialize correctly. (Bug#45058)GROUP BYon aconstant(single-row)InnoDBtable joined to other tables caused a server crash. (Bug#44886)For a
VARCHAR(column,N)ORDER BY BINARY(sorted using only the firstcol_name)Nbytes of the column, even though column values could be longer thanNbytes if they contained multibyte characters. (Bug#44131)For
YEAR(2)values,MIN(),MAX(), and comparisons could yield incorrect results. (Bug#43668)Comparison with
NULLvalues sometimes did not produce a correct result. (Bug#42760)In debug builds, killing a
LOAD XML INFILEstatement raised an assertion.Implemented in the course of fixing this bug, mysqltest has a new
send_evalcommand that combines the functionality of the existingsendandevalcommands. (Bug#42520)The server could crash when attempting to access a non-conformant
mysql.procsystem table. For example, the server could crash when invoking stored procedure-related statements after an upgrade from MySQL 5.0 to 5.1 without running mysql_upgrade. (Bug#41726)The mysql_upgrade command would create three additional fields to the
mysql.proctable (character_set_client,collation_connection, anddb_collation), but did not populate the fields with correct values. This would lead to error messages reported during stored procedure execution. (Bug#41569)Use of
InnoDBmonitoring (SHOW ENGINE INNODB STATUSor one of theInnoDBMonitor tables) could cause a server crash due to invalid access to a shared variable in a concurrent environment. (Bug#38883)When compressed
MyISAMfiles were opened, they were always memory mapped, sometimes causing memory-swapping problems. To deal with this, a new system variable,myisam_mmap_size, was added to limit the amount of memory used for memory mapping ofMyISAMfiles. (Bug#37408)When running mysql_secure_installation on Windows, the command would fail to load a required module,
Term::ReadKey, which was required for correct operation. (Bug#35106)If the
--log-binserver option was set to a directory name with a trailing component separator character, the basename of the binary log files was empty so that the created files were named.000001and.index. The same thing occurred with the--log-bin-index,--relay-log, and--relay-log-indexoptions. Now the server reports and error and exits. (Bug#34739)If a comparison involved a constant value that required type conversion, the converted value might not be cached, resulting in repeated conversion and poorer performance. (Bug#34384)
Using the
SHOW ENGINE INNODB STATUSstatement when using partitions inInnoDBtables causedInvalid (old?) table or database nameerrors to be logged. (Bug#32430)Output from mysql --html did not encode the
<,>, or&characters. (Bug#27884)Under heavy load with a large query cache, invalidating part of the cache could cause the server to freeze (that is, to be unable to service other operations until the invalidation was complete). (Bug#21074)
See also Bug#39253.
On some Windows systems,
InnoDBcould reportOperating system error number 995 in a file operationdue to transient driver or hardware problems.InnoDBnow retries the operation and addsRetry attempt is madeto the error message. (Bug#3139)