Dear MySQL users, We are proud to present to you the MySQL Server 5.1.23-rc release, a new "release candidate" version of the popular open source database.
Bear in mind that this is still a "candidate" release, and as with any other pre-production release, caution should be taken when installing on production level systems or systems with critical data. For production level systems using 5.0, we would like to direct your attention to the product description of MySQL Enterprise at: http://mysql.com/products/enterprise/ The MySQL 5.1.23-rc release is now available in source and binary form for a number of platforms from our download pages at http://dev.mysql.com/downloads/ and mirror sites. Note that not all mirror sites may be up to date at this point in time, so if you can't find this version on some mirror, please try again later or choose another download site. Please also note that some of our mirrors are currently experiencing problems that may result in serving corrupted files. We are working with the mirror maintainers to resolve this. We welcome and appreciate your feedback, bug reports, bug fixes, patches etc.: http://forge.mysql.com/wiki/Contributing The description of the changes from version 5.1.22-rc to this 5.1.23-rc is some 1,800 lines long, that is about 96 kB. As some mail systems are bound to truncate long mail at 64 kB, I split the announcement into three parts - this is part 3 only. To ensure these important items do not get lost, I repeat the notes about functionality changes, the security fixes, and other changes labeled "important". All these were also listed in part 1 and 2. If you want to skip this duplication, search for the text "This ends the duplicated part." Following this, there are the remaining changes from version to version in the MySQL source code since the latest released version of MySQL 5.1, the MySQL 5.1.22-rc release. It can also be viewed online at http://dev.mysql.com/doc/refman/5.1/en/news-5-1-23.html Functionality added or changed: * Important Change: Partitioning: Security Fix: It was possible, by creating a partitioned table using the DATA DIRECTORY and INDEX DIRECTORY options to gain privileges on other tables having the same name as the partitioned table. As a result of this fix, any table-level DATA DIRECTORY or INDEX DIRECTORY options are now ignored for partitioned tables. (Bug#32091: http://bugs.mysql.com/32091, CVE-2007-5970 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5970)) See also Bug#29325: http://bugs.mysql.com/29325, Bug#32111: http://bugs.mysql.com/32111 * Incompatible Change: In MySQL 5.1.6, when log tables were implemented, the default log destination for the general query and slow query log was TABLE. This default has been changed to FILE, which is compatible with MySQL 5.0, but incompatible with earlier releases of MySQL 5.1 from 5.1.6 to 5.1.20. If you are upgrading from MySQL 5.0 to this release, no logging option changes should be necessary. However, if you are upgrading from 5.1.6 through 5.1.20 to this release and were using TABLE logging, use the --log-output=TABLE option explicitly to preserve your server's table-logging behavior. In MySQL 5.1.x, this bug was addressed twice because it turned out that the default was set in two places, only one of which was fixed the first time. (Bug#29993: http://bugs.mysql.com/29993) * Incompatible Change The parser accepted statements that contained /* ... */ that were not properly closed with */, such as SELECT 1 /* + 2. Statements that contain unclosed /*-comments now are rejected with a syntax error. This fix has the potential to cause incompatibilities. Because of Bug#26302: http://bugs.mysql.com/26302, which caused the trailing */ to be truncated from comments in views, stored routines, triggers, and events, it is possible that objects of those types may have been stored with definitions that now will be rejected as syntactically invalid. Such objects should be dropped and re-created so that their definitions do not contain truncated comments. (Bug#28779: http://bugs.mysql.com/28779) * MySQL Cluster: The following improvements have been made in the ndb_size.pl utility: + The script can now be used with multiple databases; lists of databases and tables can also be excluded from analysis. + Schema name information has been added to index table calculations. + The database name is now an optional parameter, the exclusion of which causes all databases to be examined. + If selecting from INFORMATION_SCHEMA fails, the script now attempts to fall back to SHOW TABLES. + A --real_table_name option has been added; this designates a table to handle unique index size calculations. + The report title has been amended to cover cases where more than one database is being analyzed. Support for a --socket option was also added. For more information, see Section 15.9.15, "ndb_size.pl --- NDBCluster Size Requirement Estimator." (Bug#28683: http://bugs.mysql.com/28683, Bug#28253: http://bugs.mysql.com/28253) * MySQL Cluster: Mapping of NDB error codes to MySQL storage engine error codes has been improved. (Bug#28423: http://bugs.mysql.com/28423) * MySQL Cluster: The output from the cluster management client showing the progress of data node starts has been improved. (Bug#23354: http://bugs.mysql.com/23354) * Partitioning: Error messages for partitioning syntax errors have been made more descriptive. (Bug#29368: http://bugs.mysql.com/29368) * Replication: Replication of the following now switches to row-based logging in MIXED mode, and generates a warning in STATEMENT mode: + USER() + CURRENT_USER() + CURRENT_USER + FOUND_ROWS() + ROW_COUNT() See Section 5.2.4.3, "Mixed Binary Logging (MBL) Format," for more information. (Bug#12092: http://bugs.mysql.com/12092, Bug#28086: http://bugs.mysql.com/28086, Bug#30244: http://bugs.mysql.com/30244) * mysqltest now has a change_user command to change the user for the current connection. (It invokes the mysql_change_user() C API function.) (Bug#31608: http://bugs.mysql.com/31608) * mysql-test-run.pl now allows a suite name prefix to be specified in command-line arguments that name test cases. The test name syntax now is [suite_name.]test_name[.suffix]. For example, mysql-test-run.pl binlog.mytest runs the mytest.test test in the binlog test suite. (Bug#31400: http://bugs.mysql.com/31400) * The --event-scheduler option without a value disabled the event scheduler. Now it enables the event scheduler. (Bug#31332: http://bugs.mysql.com/31332) * mysqldump produces a -- Dump completed on DATE comment at the end of the dump if --comments is given. The date causes dump files for identical data take at different times to appear to be different. The new options --dump-date and --skip-dump-date control whether the date is added to the comment. --skip-dump-date suppresses date printing. The default is --dump-date (include the date in the comment). (Bug#31077: http://bugs.mysql.com/31077) * Server parser performance was improved for expression parsing by lowering the number of state transitions and reductions needed. (Bug#30625: http://bugs.mysql.com/30625) * Server parser performance was improved for identifier lists, expression lists, and UDF expression lists. (Bug#30333: http://bugs.mysql.com/30333) * Server parser performance was improved for boolean expressions. (Bug#30237: http://bugs.mysql.com/30237) * The LAST_EXECUTED column of the INFORMATION_SCHEMA.EVENTS table now indicates when the event started executing rather than when it finished executing. As a result, the ENDS column is never less than LAST_EXECUTED. (Bug#29830: http://bugs.mysql.com/29830) * The mysql_odbc_escape_string() C API function has been removed. It has multi-byte character escaping issues, doesn't honor the NO_BACKSLASH_ESCAPES SQL mode and is not needed anymore by Connector/ODBC as of 3.51.17. (Bug#29592: http://bugs.mysql.com/29592) * If a MyISAM table is created with no DATA DIRECTORY option, the .MYD file is created in the database directory. By default, if MyISAM finds an existing .MYD file in this case, it overwrites it. The same applies to .MYI files for tables created with no INDEX DIRECTORY option. To suppress this behavior, start the server with the new --keep_files_on_create option, in which case MyISAM will not overwrite existing files and returns an error instead. (Bug#29325: http://bugs.mysql.com/29325) * The default value of the connect_timeout system variable was increased from 5 to 10 seconds. This might help in cases where clients frequently encounter errors of the form Lost connection to MySQL server at 'XXX', system error: errno. (Bug#28359: http://bugs.mysql.com/28359) * MySQL now can be compiled with gcc 4.2.x. There was a problem involving a conflict with the min() and max() macros in my_global.h. (Bug#28184: http://bugs.mysql.com/28184) Bugs fixed: * Security Fix: Replication: It was possible for any connected user to issue a BINLOG statement, which could be used to escalate privileges. Use of the BINLOG statement now requires the SUPER privilege. (Bug#31611: http://bugs.mysql.com/31611, CVE-2007-6313 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6 313)) * Security Fix: Three vulnerabilities in yaSSL versions 1.7.5 and earlier were discovered that could lead to a server crash or execution of unauthorized code. The exploit requires a server with yaSSL enabled and TCP/IP connections enabled, but does not require valid MySQL account credentials. The exploit does not apply to OpenSSL. Note The proof-of-concept exploit is freely available on the Internet. Everyone with a vulnerable MySQL configuration is advised to upgrade immediately. (Bug#33814: http://bugs.mysql.com/33814, CVE-2008-0226 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-0226), CVE-2008-0227 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-0227)) * Security Fix: Using RENAME TABLE against a table with explicit DATA DIRECTORY and INDEX DIRECTORY options can be used to overwrite system table information by replacing the symbolic link points. the file to which the symlink points. MySQL will now return an error when the file to which the symlink points already exists. (Bug#32111: http://bugs.mysql.com/32111, CVE-2007-5969 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5969)) * Security Fix: ALTER VIEW retained the original DEFINER value, even when altered by another user, which could allow that user to gain the access rights of the view. Now ALTER VIEW is allowed only to the original definer or users with the SUPER privilege. (Bug#29908: http://bugs.mysql.com/29908) * Security Fix: When using a FEDERATED table, the local server could be forced to crash if the remote server returned a result with fewer columns than expected. (Bug#29801: http://bugs.mysql.com/29801) * Security Enhancement: It was possible to force an error message of excessive length which could lead to a buffer overflow. This has been made no longer possible as a security precaution. (Bug#32707: http://bugs.mysql.com/32707) * Important Change: Incompatible Change: A number of problems existed in the implementation of MERGE tables that could cause problems. The problems are summarized below: + Bug#26379: http://bugs.mysql.com/26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table. This was caused in a number of situations: 1. A thread trying to lock a MERGE table performs busy waiting while REPAIR TABLE or a similar table administration task is ongoing on one or more of its MyISAM tables. 2. A thread trying to lock a MERGE table performs busy waiting until all threads that did REPAIR TABLE or similar table administration tasks on one or more of its MyISAM tables in LOCK TABLES segments do UNLOCK TABLES. The difference against problem #1 is that the busy waiting takes place after the administration task. It is terminated by UNLOCK TABLES only. 3. Two FLUSH TABLES within a LOCK TABLES segment can invalidate the lock. This does not require a MERGE table. The first FLUSH TABLES can be replaced by any statement that requires other threads to reopen the table. In 5.0 and 5.1 a single FLUSH TABLES can provoke the problem. + Bug#26867: http://bugs.mysql.com/26867 - Simultaneously executing LOCK TABLES and REPAIR TABLE on a MERGE table would result in memory/cpu hogging. Trying DML on a MERGE table, which has a child locked and repaired by another thread, made an infinite loop in the server. + Bug#26377: http://bugs.mysql.com/26377 - Deadlock with MERGE and FLUSH TABLE Locking a MERGE table and its children in parent-child order and flushing the child deadlocked the server. + Bug#25038: http://bugs.mysql.com/25038 - Waiting TRUNCATE Truncating a MERGE child, while the MERGE table was in use, let the truncate fail instead of waiting for the table to become free. + Bug#25700: http://bugs.mysql.com/25700 - MERGE base tables get corrupted by OPTIMIZE/ANALYZE/REPAIR TABLE Repairing a child of an open MERGE table corrupted the child. It was necessary to FLUSH the child first. + Bug#30275: http://bugs.mysql.com/30275 - MERGE tables: FLUSH TABLES or UNLOCK TABLES causes server to crash. Flushing and optimizing locked MERGE children crashed the server. + Bug#19627: http://bugs.mysql.com/19627 - temporary merge table locking Use of a temporary MERGE table with non-temporary children could corrupt the children. Temporary tables are never locked. Creation of tables with non-temporary children of a temporary MERGE table is now prohibited. + Bug#27660: http://bugs.mysql.com/27660 - Falcon: MERGE table possible It was possible to create a MERGE table with non-MyISAM children. + Bug#30273: http://bugs.mysql.com/30273 - MERGE tables: Can't lock file (errno: 155) This was a Windows-only bug. Table administration statements sometimes failed with "Can't lock file (errno: 155)". The fix introduces the following changes in behavior: + This patch changes the behavior of temporary MERGE tables. Temporary MERGE must have temporary children. The old behavior was wrong. A temporary table is not locked. Hence even non-temporary children were not locked. See Bug#19627: http://bugs.mysql.com/19627. + You cannot change the union list of a non-temporary MERGE table when LOCK TABLES is in effect. The following does not work: CREATE TABLE m1 ... ENGINE=MRG_MYISAM ...; LOCK TABLES t1 WRITE, t2 WRITE, m1 WRITE; ALTER TABLE m1 ... UNION=(t1,t2) ...; However, you can do this with a temporary MERGE table. + You cannot create a MERGE table with CREATE ... SELECT, neither as a temporary MERGE table, nor as a non-temporary MERGE table. For example: CREATE TABLE m1 ... ENGINE=MRG_MYISAM ... SELECT ...; gives error message: table is not BASE TABLE. (Bug#19627: http://bugs.mysql.com/19627, Bug#25038: http://bugs.mysql.com/25038, Bug#25700: http://bugs.mysql.com/25700, Bug#26377: http://bugs.mysql.com/26377, Bug#26379: http://bugs.mysql.com/26379, Bug#26867: http://bugs.mysql.com/26867, Bug#27660: http://bugs.mysql.com/27660, Bug#30275: http://bugs.mysql.com/30275, Bug#30491: http://bugs.mysql.com/30491) * Incompatible Change: It is no longer possible to create CSV tables with NULL columns. However, for backwards compatibility, you can continue to use such tables that were created in previous MySQL releases. (Bug#32050: http://bugs.mysql.com/32050) * Incompatible Change: Inserting a row with a NULL value for a DATETIME column results in a CSV file that the storage engine cannot read. All CSV tables now need to be defined with each column marked as NOT NULL. An error is raised if you try to create a CSV table with columns that are not defined with NOT NULL. (Bug#31473: http://bugs.mysql.com/31473, Bug#32817: http://bugs.mysql.com/32817) * Incompatible Change: SET PASSWORD statements now cause an implicit commit, and thus are prohibited within stored functions and triggers. (Bug#30904: http://bugs.mysql.com/30904) * Incompatible Change: The mysql_install_db script could fail to locate some components (including resolveip) during execution if the --basedir option was specified on the command-line or within the my.cnf file. This was due to a conflict when comparing the compiled-in values and the supplied values. The --source-install command-line option to the script has been removed and replaced with the --srcdir option. mysql_install_db now locates components either using the compiled-in options, the --basedir option or --srcdir option. (Bug#30759: http://bugs.mysql.com/30759) * Incompatible Change: Within a stored routine, it is no longer allowable to declare a cursor for a SHOW statement. This happened to work in some instances, but is no longer supported. (Bug#29223: http://bugs.mysql.com/29223) * Incompatible Change: GRANT and REVOKE statements now cause an implicit commit, and thus are prohibited within stored functions and triggers. (Bug#21975: http://bugs.mysql.com/21975, Bug#21422: http://bugs.mysql.com/21422, Bug#17244: http://bugs.mysql.com/17244) * Incompatible Change: It was possible for option files to be read twice at program startup, if some of the standard option file locations turned out to be the same directory. Now duplicates are removed from the list of files to be read. Also, users could not override system-wide settings using ~/.my.cnf because SYSCONFDIR/my.cnf was read last. The latter file now is read earlier so that ~/.my.cnf can override system-wide settings. (Bug#20748: http://bugs.mysql.com/20748) * Important Change: MySQL Cluster: AUTO_INCREMENT columns had the following problems when used in NDB tables: + The AUTO_INCREMENT counter was not updated correctly when such a column was updated. + AUTO_INCREMENT values were not prefetched beyond statement boundaries. + AUTO_INCREMENT values were not handled correctly with INSERT IGNORE statements. + After being set, ndb_autoincrement_prefetch_sz showed a value of 1, regardless of the value it had actually been set to. As part of this fix, the behavior of ndb_autoincrement_prefetch_sz has changed. Setting this to less than 32 no longer has any effect on prefetching within statements (where IDs are now always obtained in batches of 32 or more), but only between statements. The default value for this variable has also changed, and is now 1. (Bug#25176: http://bugs.mysql.com/25176, Bug#31956: http://bugs.mysql.com/31956, Bug#32055: http://bugs.mysql.com/32055) * Partitioning: Important Note: An apostrophe or single quote character (') used in the DATA DIRECTORY, INDEX DIRECTORY, or COMMENT for a PARTITION clause caused the server to crash. When used as part of a CREATE TABLE statement, the crash was immediate. When used in an ALTER TABLE statement, the crash did not occur until trying to perform a SELECT or DML statement on the table. In either case, the server could not be completely restarted until the .FRM file corresponding to the newly created or altered table was deleted. Note Upgrading to the current (or later) release solves this problem only for tables that are newly created or altered. Tables created or altered in previous versions of the server to include ' characters in PARTITION options must still be removed by deleting the corresponding .FRM files and re-creating them afterwards. (Bug#30695: http://bugs.mysql.com/30695) * Important Note: The RENAME DATABASE statement was removed and replaced with ALTER DATABASE db_name UPGRADE DATA DIRECTORY NAME. The RENAME DATABASE statement was intended for upgrading database directory names to the encoding format used in 5.1 for representing identifiers in the filesystem (see Section 7.2.3, "Mapping of Identifiers to Filenames"). However, the statement was found to be dangerous because it could result in loss of database contents. See Section 11.1.18, "RENAME DATABASE Syntax" and Section 11.1.1, "ALTER DATABASE Syntax." (Bug#17565: http://bugs.mysql.com/17565, Bug#21741: http://bugs.mysql.com/21741, Bug#28360: http://bugs.mysql.com/28360) This ends the duplicated part. The remaining bug fixes were not listed in parts 1 or 2 of the announcement: * When loading a dynamic plugin on FreeBSD, the plugin would fail to load. This was due to a build error where the required symbols would be not exported correctly. (Bug#30296: http://bugs.mysql.com/30296) * Simultaneous ALTER TABLE statements for BLACKHOLE tables caused 100% CPU use due to locking problems. (Bug#30294: http://bugs.mysql.com/30294) * Setting certain values on a table using a spatial index could cause the server to crash. (Bug#30286: http://bugs.mysql.com/30286) * Tables with a GEOMETRY column could be marked as corrupt if you added a non-SPATIAL index on a GEOMETRY column. (Bug#30284: http://bugs.mysql.com/30284) * Flushing a merge table between the time it was opened and its child table were actually attached caused the server to crash. (Bug#30273: http://bugs.mysql.com/30273) This regression was introduced by Bug#26379: http://bugs.mysql.com/26379 * The query cache does not support retrieval of statements for which column level access control applies, but the server was still caching such statements, thus wasting memory. (Bug#30269: http://bugs.mysql.com/30269) * Using DISTINCT or GROUP BY on a BIT column in a SELECT statement caused the column to be cast internally as an integer, with incorrect results being returned from the query. (Bug#30245: http://bugs.mysql.com/30245) * Multiple-table DELETE statements could delete rows from the wrong table. (Bug#30234: http://bugs.mysql.com/30234) * GROUP BY on BIT columns produced incorrect results. (Bug#30219: http://bugs.mysql.com/30219) * Short-format mysql commands embedded within /*! ... */ comments were parsed incorrectly by mysql, which discarded the rest of the comment including the terminating */ characters. The result was a malformed (unclosed) comment. Now mysql does not discard the */ characters. (Bug#30164: http://bugs.mysql.com/30164) * If the server crashed during an ALTER TABLE statement, leaving a temporary file in the database directory, a subsequent DROP DATABASE statement failed due to the presence of the temporary file. (Bug#30152: http://bugs.mysql.com/30152) * When mysqldump wrote DROP DATABASE statements within version-specific comments, it included the terminating semicolon in the wrong place, causing following statements to fail when the dump file was reloaded. (Bug#30126: http://bugs.mysql.com/30126) * Some INFORMATION_SCHEMA tables are intended for internal use, but could be accessed by using SHOW statements. (Bug#30079: http://bugs.mysql.com/30079) * On some 64-bit systems, inserting the largest negative value into a BIGINT column resulted in incorrect data. (Bug#30069: http://bugs.mysql.com/30069) * mysqlslap did not properly handle multiple result sets from stored procedures. (Bug#29985: http://bugs.mysql.com/29985) * Specifying the --without-geometry option for configure caused server compilation to fail. (Bug#29972: http://bugs.mysql.com/29972) * Statements within stored procedures ignored the value of the low_priority_updates system variable. (Bug#29963: http://bugs.mysql.com/29963) See also Bug#26162: http://bugs.mysql.com/26162 * With auto-reconnect enabled, row fetching for a prepared statement could crash after reconnect occurred because loss of the statement handler was not accounted for. (Bug#29948: http://bugs.mysql.com/29948) * mysqldump --skip-events --all-databases dumped data from the mysqld.event table, and when restoring from this dump, events were created in spite of the --skip-events option. (Bug#29938: http://bugs.mysql.com/29938) * When mysqlslap was given a query to execute from a file via a --query=file_name option, it executed the query one too many times. (Bug#29803: http://bugs.mysql.com/29803) * configure did not find nss on some Linux platforms. (Bug#29658: http://bugs.mysql.com/29658) * It was possible when creating a partitioned table using CREATE TABLE ... SELECT to refer in the PARTITION BY clause to columns in the table being selected from, which could cause the server to crash. An example of such a statement is: CREATE TABLE t1 (b INT) PARTITION BY RANGE(t2.b) ( PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LESS THAN (20) ) SELECT * FROM t2; The fix is to disallow references in PARTITION BY clauses to columns not in the table being created. (Bug#29444: http://bugs.mysql.com/29444) * If a view used a function in its SELECT statement, the columns from the view were not inserted into the INFORMATION_SCHEMA.COLUMNS table. (Bug#29408: http://bugs.mysql.com/29408) * The mysql client program now ignores Unicode byte order mark (BOM) characters at the beginning of input files. Previously, it read them and sent them to the server, resulting in a syntax error. Presence of a BOM does not cause mysql to change its default character set. To do that, invoke mysql with an option such as --default-character-set=utf8. (Bug#29323: http://bugs.mysql.com/29323) * For transactional tables, an error during a multiple-table DELETE statement did not roll back the statement. (Bug#29136: http://bugs.mysql.com/29136) * The log and log_slow_queries system variables were displayed by SHOW VARIABLES but could not be accessed in expressions as @@log and @@log_slow_queries. Also, attempting to set them with SET produced an incorrect Unknown system variable message. Now these variables are treated as synonyms for general_log and slow_query_log, which means that they can be accessed in expressions and their values can be changed with SET. (Bug#29131: http://bugs.mysql.com/29131) * Denormalized double-precision numbers cannot be handled properly by old MIPS pocessors. For IRIX, this is now handled by enabling a mode to use a software workaround. (Bug#29085: http://bugs.mysql.com/29085) * SHOW VARIABLES did not display the relay_log, relay_log_index, or relay_log_info_file system variables. (Bug#28893: http://bugs.mysql.com/28893) * When doing a DELETE on table that involved a JOIN with MyISAM or MERGE tables and the JOIN referred to the same table, the operation could fail reporting ERROR 1030 (HY000): Got error 134 from storage engine. This was because scans on the table contents would change because of rows that had already been deleted. (Bug#28837: http://bugs.mysql.com/28837) * Killing an SSL connection on platforms where MySQL is compiled with -DSIGNAL_WITH_VIO_CLOSE (Windows, Mac OS X, and some others) could crash the server. (Bug#28812: http://bugs.mysql.com/28812) * SHOW VARIABLES did not correctly display the value of the thread_handling system variable. (Bug#28785: http://bugs.mysql.com/28785) * On Windows, mysql_upgrade created temporary files in C:\ and did not clean them up. (Bug#28774: http://bugs.mysql.com/28774) * Index hints specified in view definitions were ignored when using the view to select from the base table. (Bug#28702: http://bugs.mysql.com/28702) * Views do not have indexes, so index hints do not apply. Use of index hints when selecting from a view is now disallowed. (Bug#28701: http://bugs.mysql.com/28701) * After changing the SQL mode to a restrictive value that would make already-inserted dates in a column be considered invalid, searches returned different results depending on whether the column was indexed. (Bug#28687: http://bugs.mysql.com/28687) * A SELECT in one connection could be blocked by INSERT ... ON DUPLICATE KEY UPDATE in another connection even when low_priority_updates is set. (Bug#28587: http://bugs.mysql.com/28587) * mysql_upgrade could run binaries dynamically linked against incorrect versions of shared libraries. (Bug#28560: http://bugs.mysql.com/28560) * The result from CHAR() was incorrectly assumed in some contexts to return a single-byte result. (Bug#28550: http://bugs.mysql.com/28550) * mysqldump reversed the event name and program name in one of its error messages. (Bug#28535: http://bugs.mysql.com/28535) * If a LIMIT clause was present, the server could fail to consider indexes that could be used for ORDER BY or GROUP BY. (Bug#28404: http://bugs.mysql.com/28404) * The parser confused user-defined function (UDF) and stored function creation for CREATE FUNCTION and required that there be a default database when creating UDFs, although there is no such requirement. (Bug#28318: http://bugs.mysql.com/28318, Bug#29816: http://bugs.mysql.com/29816) * Fast-mutex locking was not thread-safe and optimization-safe on some platforms, which could cause program failures such as out-of-memory errors. (Bug#28284: http://bugs.mysql.com/28284) * The result of a comparison between VARBINARY and BINARY columns differed depending on whether the VARBINARY column was indexed. (Bug#28076: http://bugs.mysql.com/28076) * The metadata in some MYSQL_FIELD members could be incorrect when a temporary table was used to evaluate a query. (Bug#27990: http://bugs.mysql.com/27990) * Partition pruning was not used for queries having <= or >= conditions in the WHERE clause on a table using TO_DAYS() in the partitioning expression. (Bug#27927: http://bugs.mysql.com/27927) * mysqlbinlog produced incorrectly formatted DATETIME and TIMESTAMP values. (Bug#27894: http://bugs.mysql.com/27894) * Failure to log to the general_log or slow_log log tables were not logged to the error log at all or were logged incorrectly. (Bug#27858: http://bugs.mysql.com/27858) * comp_err created files with permissions such that they might be inaccessible during make install operations. (Bug#27789: http://bugs.mysql.com/27789) * SHOW COLUMNS returned NULL instead of the empty string for the Default value of columns that had no default specified. (Bug#27747: http://bugs.mysql.com/27747) * It was possible to create a view having a column whose name consisted of an empty string or space characters only. (Bug#27695: http://bugs.mysql.com/27695) See also Bug#31202: http://bugs.mysql.com/31202 * With recent versions of DBD::mysql, mysqlhotcopy generated table names that were doubly qualified with the database name. (Bug#27694: http://bugs.mysql.com/27694) * The anonymous accounts were not being created during MySQL installation. (Bug#27692: http://bugs.mysql.com/27692) * Some SHOW statements and INFORMATION_SCHEMA queries could expose information not allowed by the user's access privileges. (Bug#27629: http://bugs.mysql.com/27629) * ALTER TABLE tbl_name ROW_FORMAT=format_type did not cause the table to be rebuilt. (Bug#27610: http://bugs.mysql.com/27610) * A race condition between killing a statement and the thread executing the statement could lead to a situation such that the binary log contained an event indicating that the statement was killed, whereas the statement actually executed to completion. (Bug#27571: http://bugs.mysql.com/27571) * Some character mappings in the ascii.xml file were incorrect. (Bug#27562: http://bugs.mysql.com/27562) * Some queries using the NAME_CONST() function failed to return either a result or an error to the client, causing it to hang. This was due to the fact that there was no check to insure that both arguments to this function were constant expressions. (Bug#27545: http://bugs.mysql.com/27545, Bug#32559: http://bugs.mysql.com/32559) * With the read_only system variable enabled, CREATE DATABASE and DROP DATABASE were allowed to users who did not have the SUPER privilege. (Bug#27440: http://bugs.mysql.com/27440) * For an event with an ON COMPLETION value of PRESERVE, an ALTER EVENT statement that specified no ON COMPLETION option caused the value to become NOT PRESERVE. (Bug#27407: http://bugs.mysql.com/27407) * MySQL failed to generate or retrieve an AUTO_INCREMENT primary key for InnoDB tables with user-defined partitioning. (Bug#27405: http://bugs.mysql.com/27405) * Changes to the sql_mode system variable were not tracked by INSERT DELAYED. (Bug#27358: http://bugs.mysql.com/27358) * A SELECT with more than 31 nested dependent subqueries returned an incorrect result. (Bug#27352: http://bugs.mysql.com/27352) * The ExtractValue() and UpdateXML() functions performed extremely slowly for large amounts of XML data (greater than 64 KB). These functions now execute approximately 2000 times faster than previously. (Bug#27287: http://bugs.mysql.com/27287) * Several functions and operators returned an incorrect result type (string) when given DATE parameters: COALESCE(), IF(), IFNULL(), LEAST(), GREATEST(), CASE. These now aggregate DATE (or DATETIME) parameters to produce a DATE (or DATETIME result. In addition, the result type of the STR_TO_DATE() function is now DATETIME by default. (Bug#27216: http://bugs.mysql.com/27216) * On Windows, writes to the debug log were using freopen() instead of fflush(), resulting in slower performance. (Bug#27099: http://bugs.mysql.com/27099) * For a table that used different full-text parsers for different FULLTEXT indexes, SHOW CREATE TABLE displayed the first parser name for all of them. (Bug#27040: http://bugs.mysql.com/27040) * STR_TO_DATE() displayed an error message that referred to STR_TO_TIME(). (Bug#27014: http://bugs.mysql.com/27014) * The mysql_insert_id() C API function sometimes returned different results for libmysqld and libmysqlclient. (Bug#26921: http://bugs.mysql.com/26921) * Symbolic links on Windows could fail to work. (Bug#26811: http://bugs.mysql.com/26811) * mysqld sometimes miscalculated the number of digits required when storing a floating-point number in a CHAR column. This caused the value to be truncated, or (when using a debug build) caused the server to crash. (Bug#26788: http://bugs.mysql.com/26788) See also Bug#12860: http://bugs.mysql.com/12860 * LOAD DATA INFILE ran very slowly when reading large files into partitioned tables. (Bug#26527: http://bugs.mysql.com/26527) * Using HANDLER to open a table having a storage engine not supported by HANDLER properly returned an error, but also improperly prevented the table from being dropped by other connections. (Bug#25856: http://bugs.mysql.com/25856) * For a prepared statement stmt, changing the default database following PREPARE stmt but before EXECUTE stmt caused stmt to be recorded incorrectly in the binary log. (Bug#25843: http://bugs.mysql.com/25843) * CREATE TABLE LIKE did not work when the source table was an INFORMATION_SCHEMA table. (Bug#25629: http://bugs.mysql.com/25629) * Threads that were calculating the estimated number of records for a range scan did not respond to the KILL statement. That is, if a range join type is possible (even if not selected by the optimizer as a join type of choice and thus not shown by EXPLAIN), the query in the statistics state (shown by the SHOW PROCESSLIST) did not respond to the KILL statement. (Bug#25421: http://bugs.mysql.com/25421) * For InnoDB tables, CREATE TABLE a AS SELECT * FROM A would fail. (Bug#25164: http://bugs.mysql.com/25164) * For mysql --show-warnings, warnings were in some cases not displayed. (Bug#25146: http://bugs.mysql.com/25146) * The returns column of the mysql.proc table was CHAR(64), which is not long enough to store long data types such as ENUM types. The column has been changed to LONGBLOB and a warning is generated if truncation occurs when storing a row into the proc table. (Bug#24923: http://bugs.mysql.com/24923) * If the expected precision of an arithmetic expression exceeded the maximum precision supported by MySQL, the precision of the result was reduced by an unpredictable or arbitrary amount, rather than to the maximum precision. In some cases, exceeding the maximum supported precision could also lead to a crash of the server. (Bug#24907: http://bugs.mysql.com/24907) * A CREATE TRIGGER statement could cause a deadlock or server crash if it referred to a table for which a table lock had been acquired with LOCK TABLES. (Bug#23713: http://bugs.mysql.com/23713) * For storage engines that do not redefine handler::index_next_same() and are capable of indexes, statements that include a WHERE clause might select incorrect data. (Bug#22351: http://bugs.mysql.com/22351) * The parser treated the INTERVAL() function incorrectly, leading to situations where syntax errors could result depending on which side of an arithmetic operator the function appeared. (Bug#22312: http://bugs.mysql.com/22312) * Entries in the general query log were truncated at 1000 characters. (Bug#21557: http://bugs.mysql.com/21557) * A memory leak occurred when CREATE TEMPORARY TABLE .. SELECT was invoked from a stored function that in turn was called from CREATE TABLE ... SELECT. (Bug#21136: http://bugs.mysql.com/21136) * It was possible to execute CREATE TABLE t1 ... SELECT ... FROM t2 with the CREATE privilege for t1 and SELECT privilege for t2, even in the absence of the INSERT privilege for t1. (Bug#20901: http://bugs.mysql.com/20901) * Worked around an icc problem with an incorrect machine instruction being generated in the context of software pre-fetching after a subroutine got in-lined. (Upgrading to icc 10.0.026 makes the workaround unnecessary.) (Bug#20803: http://bugs.mysql.com/20803) * If a column selected by a view referred to a stored function, the data type reported for the column in INFORMATION_SCHEMA.COLUMNS could be incorrect. (Bug#20550: http://bugs.mysql.com/20550) * The mysql_change_user() C API function changed the value of the SQL_BIG_SELECTS session variable. (Bug#20023: http://bugs.mysql.com/20023) * Hostnames sometimes were treated as case sensitive in account-management statements (CREATE USER, GRANT, REVOKE, and so forth). (Bug#19828: http://bugs.mysql.com/19828) * Issuing an SQL KILL of the active connection caused an error on Mac OS X. (Bug#19723: http://bugs.mysql.com/19723) * The readline library has been updated to version 5.2. This addresses issues in the mysql client where history and editing within the client would fail to work as expected. (Bug#18431: http://bugs.mysql.com/18431) * 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: http://bugs.mysql.com/18322) * The Aborted_clients status variable was incremented twice if a client exited without calling mysql_close(). (Bug#16918: http://bugs.mysql.com/16918) * Clients were ignoring the TCP/IP port number specified as the default port via the --with-tcp-port configuration option. (Bug#15327: http://bugs.mysql.com/15327) * Parameters of type DATETIME or DATE in stored procedures were silently converted to VARBINARY. (Bug#13675: http://bugs.mysql.com/13675) * Zero-padding of exponent values was not the same across platforms. (Bug#12860: http://bugs.mysql.com/12860) * Values of types REAL ZEROFILL, DOUBLE ZEROFILL, FLOAT ZEROFILL, were not zero-filled when converted to a character representation in the C prepared statement API. (Bug#11589: http://bugs.mysql.com/11589) * mysql stripped comments from statements sent to the server. Now the --comments or --skip-comments option can be used to control whether to retain or strip comments. The default is --skip-comments. (Bug#11230: http://bugs.mysql.com/11230, Bug#26215: http://bugs.mysql.com/26215) * Several buffer-size system variables were either being handled incorrectly for large values (for settings larger than 4GB, they were truncated to values less than 4GB without a warning), or were limited unnecessarily to 4GB even on 64-bit systems. The following changes were made: + For key_buffer_size, values larger than 4GB are allowed on 64-bit platforms. + For join_buffer_size, sort_buffer_size, and myisam_sort_buffer_size, values larger than 4GB are allowed on 64-bit platforms (except Windows, for which large values are truncated to 4GB with a warning). In addition, settings for read_buffer_size and read_rnd_buffer_size are limited to 2GB on all platforms. Larger values are truncated to 2GB with a warning. (Bug#5731: http://bugs.mysql.com/5731, Bug#29419: http://bugs.mysql.com/29419, Bug#29446: http://bugs.mysql.com/29446) * Executing DISABLE KEYS and ENABLE KEYS on a non-empty table would cause the size of the index file for the table to grow considerable. This was because the DISABLE KEYS operation would only mark the existing index, without deleting the index blocks. The ENABLE KEYS operation would re-create the index, adding new blocks, while the previous index blocks would remain. Existing indexes are now dropped and recreated when the ENABLE KEYS statement is executed. (Bug#4692: http://bugs.mysql.com/4692) * Grant table checks failed in libmysqld. * There were no more transaction records in the transaction coordinator * Replicating from a master table to a slave table where the size of a CHAR or VARCHAR column was a different size would cause mysqld to crash. For more information on replicating with different column definitions, see Section 14.3.1.21, "Replication with Differing Tables on Master and Slave." * The LAST_DAY() function returns a DATE value, but internally the value did not have the time fields zeroed and calculations involving the value could return incorrect results. (Bug #32270: http://bugs.mysql.com/32270) Please also check parts 1 and 2 for any item you are interested in. Enjoy ! Jörg -- Joerg Bruehe, Senior Production Engineer MySQL AB, www.mysql.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]