Released on 21 Jun 2007
MySQL 5.0.44 Changelog

This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.

This section documents all changes and bug fixes that have been applied since the last MySQL Enterprise Server release (5.0.42).

  • Functionality Added or Changed

  • Bugs Fixed

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 Configuring MySQL Cluster to use SCI Sockets. (Bug #25470)

  • Enterprise builds did not include the CSV storage engine. CSV is now included in Enterprise builds for all platforms except Windows, QNX, and NetWare. (Bug #28844)

  • INSERT DELAYED statements on BLACKHOLE tables are now rejected, due to the fact that the BLACKHOLE storage engine does not support them. (Bug #27998)

  • 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 for providing details and a proof of concept. (Bug #28984, CVE-2007-3780)

  • 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: The names of stored functions referenced by views were not properly displayed by SHOW CREATE VIEW.

    The fix corrects a problem introduced by Bug #23491. There is an incompatibility when upgrading from versions affected by that bug fix (MySQL 5.0.40 through 5.0.43, MySQL 5.1.18 through 5.1.19): If you use mysqldump before upgrading from an affected version and reload the data after upgrading to a higher version, you must drop and recreate your views. (Bug #28605)

  • 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 BINARY 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: UPDATE IGNORE statements involving the primary keys of multiple tables could result in data corruption. (Bug #28719)

  • MySQL Cluster: A race condition could result when nonmaster nodes (in addition to the master node) tried to update active status due to a local checkpoint (that is, between NODE_FAILREP and COPY_GCIREQ events). Now only the master updates the active status. (Bug #28717)

  • MySQL Cluster: A fast global checkpoint under high load with 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: A failure to release internal resources following an error could lead to problems with single user mode. (Bug #25818)

  • Replication: The result of executing of a prepared statement created with PREPARE s FROM "SELECT 1 LIMIT ?" was not replicated correctly. (Bug #28464)

  • Replication: 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)

  • Replication: 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)

  • Replication: Connections from one mysqld server to another failed on Mac OS X, affecting replication and FEDERATED tables. (Bug #26664)

    References: See also Bug #29083.

  • Replication: When using transactions and replication, shutting down the master in the middle of a transaction would cause all slaves to stop replicating. (Bug #22725)

  • Replication: Using CREATE TABLE LIKE ... would raise an assertion when replicated to a slave. (Bug #18950)

  • On the IBM i5 platform, the installation script in the .savf binaries unconditionally executed the mysql_install_db script. This problem was fixed in a repackaged distribution numbered 5.0.44b. (Bug #30084)

  • Long path names 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 permitted into the query cache. (This should not happen because UUID() is nondeterministic.) (Bug #28897)

  • Using a VIEW created with a nonexisting DEFINER could lead to incorrect results under some circumstances. (Bug #28895)

  • For InnoDB tables that use the utf8 character set, incorrect results could occur for DML statements such as DELETE or UPDATE that use an index on character-based columns. (Bug #28878)

    References: See also Bug #29449, Bug #30485, Bug #31395. This bug was introduced by Bug #13195.

  • 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 nonindexed 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 file system, causing the statement to fail. (Bug #28754)

  • Searches on indexed and nonindexed 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)

  • The result of evaluation for a view's CHECK OPTION option over an updated record and records of merged tables was arbitrary and dependent 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)

  • 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)

    References: This bug 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 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)

  • 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 PowerPC/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)

  • 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)

  • The Bytes_received and Bytes_sent status variables could hold only 32-bit values (not 64-bit values) on some platforms. (Bug #28149)

  • 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)

  • DECIMAL values beginning with nine 9 digits could be incorrectly rounded. (Bug #27984)

  • 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)

  • For attempts to open a nonexistent 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)

  • 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)

  • On some systems, udf_example.c returned an incorrect result length. Also on some systems, could not find the shared object built from udf_example.c. (Bug #27741)

  • 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)

  • An error occurred trying to connect to mysqld-debug.exe. (Bug #27597)

  • 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, permitting the calling statement to continue without noticing the problem. This could lead to incorrect results. (Bug #27563)

  • 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)

  • 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)

  • The error message for error number 137 did not report which database/table combination reported the problem. (Bug #27173)

  • A large filesort could result in a division by zero error and a server crash. (Bug #27119)

  • Some test suite files were missing from some MySQL-test packages. (Bug #26609)

  • Statements within triggers ignored the value of the low_priority_updates system variable. (Bug #26162)

    References: See also Bug #29963.

  • 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)

  • Due to a race condition, executing FLUSH PRIVILEGES in one thread could cause brief table unavailability in other threads. (Bug #24988)

  • When mysqld was run as a Windows service, shared memory objects were not created in the global namespace and could not be used by clients to connect. (Bug #24731)

  • 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)

  • 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)

  • Linux binaries were unable to dump core after executing a setuid() call. (Bug #21723)

  • 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)

  • 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)

  • Granting access privileges to an individual table where the database or table name contained an underscore failed. (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)

  • Using up-arrow for command-line recall in mysql could cause a segmentation fault. (Bug #10218)

  • The result for CAST() when casting a value to UNSIGNED was limited to the maximum signed BIGINT value (9223372036854775808), rather than the maximum unsigned value (18446744073709551615). (Bug #8663)