Released on 25 Jun 2007
MySQL 5.1.20 Changelog

This is a new Beta development release, fixing recently discovered bugs.


This Beta release, as any other pre-production release, should not be installed on production level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL has worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release. Please refer to our bug database at for more details about the individual bugs fixed in this version.

This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see (

  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Incompatible Change: It is no longer possible to partition the log tables. (Bug #27816)

  • Incompatible Change: mysqld_safe now supports error logging to syslog on systems that support the logger command. The new --syslog and --skip-syslog options can be used instead of the --log-error option to control logging behavior, as described in mysqld_safe — MySQL Server Startup Script. The default is to use syslog, which differs from the previous default behavior of writing an error log file.

    Currently, logging to syslog may fail to operate correctly in some cases; if so, use --skip-syslog or --log-error. To maintain the older behavior if you were using no error-logging option, use --skip-syslog. If you were using --log-error, continue to use it.

    Note: In 5.1.21, the default is changed to --skip-syslog, which is compatible with releases prior to 5.1.20. (Bug #4858)

  • Important Change; MySQL Cluster: The TimeBetweenWatchdogCheckInitial configuration parameter was added to enable setting of a separate watchdog timeout for memory allocation during startup of the data nodes. (Bug #28899)

  • MySQL Cluster: The cluster management client now stores command history between sessions. (Bug #29073)

  • MySQL Cluster: auto_increment_increment and auto_increment_offset are now supported for NDB tables. (Bug #26342)

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

  • MySQL Cluster: A new configuration parameter ODirect causes NDB to attempt using O_DIRECT writes for LCP, backups, and redo logs, often lowering CPU usage.

  • Replication: The sql_mode, foreign_key_checks, unique_checks, character set/collations, and sql_auto_is_null session variables are written to the binary log and honored during replication. See The Binary Log.

  • If a MERGE table cannot be opened or used because of a problem with an underlying table, CHECK TABLE now displays information about which table caused the problem. (Bug #26976)

  • User variables and stored procedure variables are now supported for use in XPath expressions employed as arguments to the ExtractValue() and UpdateXML() functions.

    This means that:

    • XPath can now be used to load data from XML files using virtually any format, and so able to import data from most third party software which either has XML export functionality, or uses XML natively as a storage format.

    • Various complex conditions can be put on rows and columns, so one can filter for desired rows (or skip unwanted rows) when loading XML.

    • Various types of preprocessing using SQL functions are now possible when loading XML. For example, you can concatenate two XML tag or attribute values into a single column value using CONCAT(), or remove some parts of the data using REPLACE().

    See XML Functions, for more information. (Bug #26518)

  • Binary distributions for some platforms did not include shared libraries; now shared libraries are shipped for all platforms except AIX 5.2 64-bit. Exception: The library for the libmysqld embedded server is not shared except on Windows. (Bug #16520, Bug #26767, Bug #13450)

  • Added a new PAD_CHAR_TO_FULL_LENGTH SQL mode. By default, trailing spaces are trimmed from CHAR column values on retrieval. If PAD_CHAR_TO_FULL_LENGTH is enabled, trimming does not occur and retrieved CHAR values are padded to their full length. This mode does not apply to VARCHAR columns, for which trailing spaces are retained on retrieval.

  • Various complex conditions can be put on rows and columns, so one can filter for desired rows (or skip unwanted rows) when loading XML.

  • Various types of preprocessing using SQL functions are now possible when loading XML. For example, you can concatenate two XML tag or attribute values into a single column value using CONCAT(), or remove some parts of the data using REPLACE().

  • XPath can now be used to load data from XML files using virtually any format, and so able to import data from most third party software which either has XML export functionality, or uses XML natively as a storage format.

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: Some error codes had error numbers in MySQL 5.1 different from the numbers in MySQL 5.0. In MySQL 5.1, error numbers have been changed to match the MySQL 5.0 values: Error codes with value of 1458 or higher have changed in MySQL 5.1 now. Client applications designed to work with MySQL 5.1 with hard-coded error code values (for example, in statements such as if (mysql_errno(mysql) == 1463) { ... }) need to be updated in the source code. All clients designed to work with MySQL 5.1 that test error codes (for example, in statements such as if (mysql_errno(mysql) == ER_VIEW_RECURSIVE) { ... }) should be recompiled. Existing 5.0 clients should now work, without changes or recompilation, against servers for MySQL 5.1.20 or higher. (Bug #29245)

  • 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; Replication: (Replication): A replicated unique key permitted duplicate key inserts on the slave. (Bug #27044)

  • MySQL Cluster: Memory corruption could occur due to a problem in the DBTUP kernel block. (Bug #29229)

  • MySQL Cluster: A query having a large IN(...) or NOT IN(...) list in the WHERE condition on an NDB table could cause mysqld to crash. (Bug #29185)

  • MySQL Cluster: In the event that two data nodes in the same node group and participating in a GCP crashed before they had written their respective P0.sysfile files, QMGR could refuse to start, issuing an invalid Insufficient nodes for restart error instead. (Bug #29167)

  • MySQL Cluster: Attempting to restore a NULL row to a VARBINARY column caused ndb_restore to fail. (Bug #29103)

  • MySQL Cluster: ndb_error_reporter now preserves timestamps on files. (Bug #29074)

  • MySQL Cluster: It is now possible to set the maximum size of the allocation unit for table memory using the MaxAllocate configuration parameter. (Bug #29044)

  • MySQL Cluster: When shutting down mysqld, the NDB binlog process was not shut down before log cleanup began. (Bug #28949)

  • MySQL Cluster: ndb_mgm could hang when connecting to a nonexistent host. (Bug #28847)

  • MySQL Cluster: A regression in the heartbeat monitoring code could lead to node failure under high load. This issue affected MySQL 5.1.19 and MySQL Cluster NDB 6.1.10 only. (Bug #28783)

  • MySQL Cluster: A corrupt schema file could cause a File already open error. (Bug #28770)

  • MySQL Cluster: Having large amounts of memory locked caused swapping to disk. (Bug #28751)

  • MySQL Cluster: Setting InitialNoOfOpenFiles equal to MaxNoOfOpenFiles caused an error. This was due to the fact that the actual value of MaxNoOfOpenFiles as used by the cluster was offset by 1 from the value set in config.ini. (Bug #28749)

  • MySQL Cluster: LCP files were not removed following an initial system restart. (Bug #28726)

  • 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: The management client's response to START BACKUP WAIT COMPLETED did not include the backup ID. (Bug #27640)

  • Replication; Cluster Replication: When replicating MyISAM or InnoDB tables to a MySQL Cluster, it was not possible to determine exactly what had been applied following a shutdown of the slave cluster or mysqld process. (Bug #26783)

  • Replication: DROP USER statements that named multiple users, only some of which could be dropped, were replicated incorrectly. (Bug #29030)

  • Replication: Using events in replication could cause the slave to crash. (Bug #28953)

  • Replication: It was possible to set SQL_SLAVE_SKIP_COUNTER such that the slave would jump into the middle of an event group. (Bug #28618)

    References: See also Bug #12691.

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

  • Disk Data: When loading data into a cluster following a version upgrade, the data nodes could forcibly shut down due to page and buffer management failures (that is, ndbrequire failures in PGMAN). (Bug #28525)

  • Disk Data: Repeated INSERT and DELETE operations on a Disk Data table having one or more large VARCHAR columns could cause data nodes to fail. (Bug #20612)

  • Cluster API: The timeout set using the MGM API ndb_mgm_set_timeout() function was incorrectly interpreted as seconds rather than as milliseconds. (Bug #29063)

  • Cluster API: An invalid error code could be set on transaction objects by BLOB handling code. (Bug #28724)

  • The TRUNCATE TABLE statement was handled differently by the server when row-based logging was in effect, even though the binlogging format in effect does not effect the fact that TRUNCATE TABLE is always logged as a statement. (Bug #29130)

  • If one of the queries in a UNION used the SQL_CACHE option and another query in the UNION contained a nondeterministic function, the result was still cached. For example, this query was incorrectly cached:


    (Bug #29053)

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

  • Queries using UDFs or stored functions were cached. (Bug #28921)

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

  • Non-utf8 characters could get mangled when stored in CSV tables. (Bug #28862)

  • On Windows, USE_TLS was not defined for mysqlclient.lib. (Bug #28860)

  • In MySQL 5.1.15, a new error code ER_DUP_ENTRY_WITH_KEY_NAME (1582) was introduced to replace ER_DUP_ENTRY (1062) so that the key name could be provided instead of the key number. This was unnecessary, so ER_DUP_ENTRY is used again and the key name is printed. The incompatibility introduced in 5.1.15 no longer applies. (Bug #28842)

  • A subquery with ORDER BY and LIMIT 1 could cause a server crash. (Bug #28811)

  • Running SHOW TABLE STATUS while performing a high number of inserts on partitioned tables with a great many partitions could cause the server to crash. (Bug #28806)

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

  • The binlog_format system variable value was empty if the server was started with binary logging disabled. Now it is set to MIXED. (Bug #28752)

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

  • Setting an interval of EVERY 0 SECOND for a scheduled event caused the server to crash. (Bug #28666)

  • For debug builds, ALTER TABLE could trigger an assertion failure due to occurrence of a deadlock when committing changes. (Bug #28652)

  • Attempting to create an index on a BIT column failed after modifying the column. (Bug #28631)

  • Conversion of U+00A5 YEN SIGN and U+203E OVERLINE from ucs2 to ujis produced incorrect results. (Bug #28600)

  • Killing from one connection a long-running EXPLAIN QUERY started from another connection caused mysqld to crash. (Bug #28598)

  • SHOW GLOBAL VARIABLES repeated some variable names. (Bug #28580)

  • When one thread attempts to lock two (or more) tables and another thread executes a statement that aborts these locks (such as REPAIR TABLE, OPTIMIZE TABLE, or CHECK TABLE), the thread might get a table object with an incorrect lock type in the table cache. The result is table corruption or a server crash. (Bug #28574)

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

  • Calling the UpdateXML() function using invalid XPath syntax caused memory corruption possibly leading to a crash of the server. (Bug #28558)

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

  • When upgrading from MySQL 5.1.17 to 5.1.18, mysql_upgrade and mysql_fix_privilege_tables did not upgrade the system tables relating to the Event Scheduler correctly. (Bug #28521)

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

  • Performing ALTER TABLE ... ADD PARTITION or ALTER TABLE DROP PARTITION could result in inconsistent data, or cause the server to crash, if done concurrently with other accesses to the table. (Bug #28477, Bug #28488)

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

  • Using ALTER TABLE to move columns resulted only in the columns being renamed. The table contents were not changed. (Bug #28427)

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

  • mysqltest used a too-large stack size on PowerPC/Debian Linux, causing thread-creation failure for tests that use many threads. (Bug #28333)

  • When using a MEMORY table on Mac OS X, dropping a table and than creating a table with the same name could cause the information of the deleted table to remain accessible, leading to index errors. (Bug #28309)

  • The IS_UPDATABLE column in the INFORMATION_SCHEMA.VIEWS table was not always set correctly. (Bug #28266)

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

  • When the query cache was fully used, issuing RENAME DATABASE or RENAME SCHEMA could cause the server to hang, with 100% CPU usage. (Bug #28211)

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

  • Some valid identifiers were not parsed correctly. (Bug #28127)

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

  • Sending debugging information from a dump of the Event Scheduler to COM_DEBUG could cause the server to crash. (Bug #28075)

  • The PARTITION_COMMENT column of the INFORMATION_SCHEMA.PARTITIONS table had the wrong default value. (Bug #28007)

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

  • For attempts to open a nonexistent table, the server should report ER_NO_SUCH_TABLE but sometimes reported ER_TABLE_NOT_LOCKED. (Bug #27907)

  • Following an invalid call to UpdateXML(), calling the function again (even if valid) crashed the server. (Bug #27898)

  • A stored program that uses a variable name containing multibyte characters could fail to execute. (Bug #27876)

  • The server made strong assumptions about the structure of the general_log and slow_log log tables: It supported only the table structure defined in the mysql database creation scripts. The server also permitted limited ALTER TABLE operations on the log tables, but adding an AUTO_INCREMENT column did not properly initialize the column, and subsequent inserts into the table could fail to generate correct sequence numbers. Now an ALTER TABLE statement that adds an AUTO_INCREMENT column populates the column correctly. In addition, when the server writes a log table row, it will set columns not present in the original table structure to their default values. (Bug #27857)

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

  • The modification of a table by a partially completed multi-column update was not recorded in the binlog, rather than being marked by an event and a corresponding error code. (Bug #27716)

  • SHOW ENGINES and queries on INFORMATION_SCHEMA.ENGINES did not use the same values for representing the same storage engine states. (Bug #27684)

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

  • A stack overrun could occur when storing DATETIME values using repeated prepared statements. (Bug #27592)

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

  • ALTER TABLE ... ENABLE KEYS could cause mysqld to crash when executed on a table containing on a MyISAM table containing billions of rows. (Bug #27029)

  • Binary content 0x00 in a BLOB column sometimes became 0x5C 0x00 following a dump and reload, which could cause problems with data using multibyte character sets such as GBK (Chinese). This was due to a problem with SELECT INTO OUTFILE whereby LOAD DATA later incorrectly interpreted 0x5C as the second byte of a multibyte sequence rather than as the SOLIDUS (\) character, used by MySQL as the escape character. (Bug #26711)

  • The server crashed when attempting to open a table having a #mysql50# prefix in the database or table name. The server now will not open such tables. (This prefix is reserved by mysql_upgrade for accessing 5.0 tables that have names not yet encoded for 5.1.) (Bug #26402)

  • A FLUSH TABLES WITH READ LOCK statement followed by a FLUSH LOGS statement caused a deadlock if the general log or the slow query log was enabled. (Bug #26380)

  • The query SELECT /*2*/ user, host, db, info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE (command!='Daemon' || user='event_scheduler') AND (info IS NULL OR info NOT LIKE '%processlist%') ORDER BY INFO yielded inconsistent results. (Bug #26338)

  • For a given user variable @v, the statements SELECT @v and CREATE TABLE ... AS SELECT @v did not return the same data type. (Bug #26277)

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

    References: See also Bug #29963.

  • The embedded server library displayed error messages at startup if the mysql.plugin table was not present. This no longer occurs. (Bug #25800)

  • On Windows, an application that called mysql_thread_init() but forgot to call mysql_thread_end() would get this error: Error in my_thread_global_end(). (Bug #25621)

  • Embedded /* ... */ comments were handled incorrectly within the definitions of stored programs and views, resulting in malformed definitions (the trailing */ was stripped). This also affected binary log contents. (Bug #25411, Bug #26302)

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

  • In SHOW SLAVE STATUS output, Last_Errno and Last_Error were not set after master_retry_count errors had occurred. To provide additional information, the statement now displays four additional columns:

    • Last_IO_Errno: The number of the last error that caused the I/O thread to stop

    • Last_IO_Error: A description of the last error that caused the I/O thread to stop

    • Last_SQL_Errno: The number of the last error that caused the SQL thread to stop

    • Last_SQL_Error: A description of the last error that caused the SQL thread to stop

    Also, Last_Errno and Last_Error now are aliases for Last_SQL_Errno and Last_SQL_Error. (Bug #24954)

  • A too-long shared-memory-base-name value could cause a buffer overflow and crash the server or clients. (Bug #24924)

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

  • A number of SHOW statements caused mysqld to crash on recent versions of Solaris. This issue is believed to be present only in MySQL 5.1.12 and later. (Bug #23810)

  • The server deducted some bytes from the key_cache_block_size option value and reduced it to the next lower 512 byte boundary. The resulting block size was not a power of two. Setting the key_cache_block_size system variable to a value that is not a power of two resulted in MyISAM table corruption. (Bug #23068, Bug #28478, Bug #25853)

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

  • The server was ignoring the return value of the parse() function for full-text parser plugins. (Bug #18839)

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

  • When using mysqlbinlog with --read-from-remote-server to load the data direct from a remote MySQL server would cause a core dump when dumping certain binary log events. (Bug #17654)

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

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

  • The internal functions for table preparation, creation, and alteration were not re-execution friendly, causing problems in code that: repeatedly altered a table; repeatedly created and dropped a table; opened and closed a cursor on a table, altered the table, and then reopened the cursor; used ALTER TABLE to change a table's current AUTO_INCREMENT value; created indexes on utf8 columns.

    Re-execution of CREATE DATABASE, CREATE TABLE, and ALTER TABLE statements in stored routines or as prepared statements also caused incorrect results or crashes. (Bug #4968, Bug #6895, Bug #19182, Bug #19733, Bug #22060, Bug #24879)