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 2 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.
If you want to skip this duplication, search for the text
    "This ends the duplicated part."

Following this, there is the next set of 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 part 1 of the announcement:


  * The server crashed on optimizations involving a join of
    INT and MEDIUMINT columns and a system variable in the
    WHERE clause. (Bug#32103: http://bugs.mysql.com/32103)
  * mysql-test-run.pl used the --user option when starting
    mysqld, which produces warnings if the current user is
    not root. Now --user is added only for root.
    (Bug#32078: http://bugs.mysql.com/32078)
  * mysqlslap was missing from the MySQL 5.1.22 Linux RPM
    packages. (Bug#32077: http://bugs.mysql.com/32077)
  * With lower_case_table_names set, CREATE TABLE LIKE was
    treated differently by libmysqld than by the non-embedded
    server. (Bug#32063: http://bugs.mysql.com/32063)
  * Within a subquery, UNION was handled differently than at
    the top level, which could result in incorrect results or
    a server crash. (Bug#32036: http://bugs.mysql.com/32036,
    Bug#32051: http://bugs.mysql.com/32051)
  * On 64-bit platforms, assignments of values to
    enumeration-valued storage engine-specific system
    variables were not validated and could result in
    unexpected values.
    (Bug#32034: http://bugs.mysql.com/32034)
  * A DELETE statement with a subquery in the WHERE clause
    would sometimes ignore an error during subquery
    evaluation and proceed with the delete operation.
    (Bug#32030: http://bugs.mysql.com/32030)
  * Using dates in the range '0000-00-01' to '0000-00-99'
    range in the WHERE clause could result in an incorrect
    result set. (These dates are not in the supported range
    for DATE, but different results for a given query could
    occur depending on position of records containing the
    dates within a table.)
    (Bug#32021: http://bugs.mysql.com/32021)
  * User-defined functions are not loaded if the server is
    started with the --skip-grant-tables option, but the
    server did not properly handle this case and issued an
    Out of memory error message instead.
    (Bug#32020: http://bugs.mysql.com/32020)
  * If a user-defined function was used in a SELECT
    statement, and an error occurred during UDF
    initialization, the error did not terminate execution of
    the SELECT, but rather was converted to a warning.
    (Bug#32007: http://bugs.mysql.com/32007)
  * HOUR(), MINUTE(), and SECOND() could return non-zero
    values for DATE arguments.
    (Bug#31990: http://bugs.mysql.com/31990)
  * Changing the SQL mode to cause dates with "zero" parts to
    be considered invalid (such as '1000-00-00') could result
    in indexed and non-indexed searches returning different
    results for a column that contained such dates.
    (Bug#31928: http://bugs.mysql.com/31928)
  * The server used unnecessarily large amounts of memory
    when user variables were used as an argument to CONCAT()
    or CONCAT_WS(). (Bug#31898: http://bugs.mysql.com/31898)
  * In debug builds, testing the result of an IN subquery
    against NULL caused an assertion failure.
    (Bug#31884: http://bugs.mysql.com/31884)
  * SHOW CREATE TRIGGER caused a server crash.
    (Bug#31866: http://bugs.mysql.com/31866)
  * The server crashed after insertion of a negative value
    into an AUTO_INCREMENT column of an InnoDB table.
    (Bug#31860: http://bugs.mysql.com/31860)
  * For libmysqld applications, handling of
    mysql_change_user() calls left some pointers improperly
    updated, leading to server crashes.
    (Bug#31850: http://bugs.mysql.com/31850)
  * Using ORDER BY led to the wrong result when using the
    ARCHIVE on a table with a BLOB when the table cache was
    full. The table could also be reported as crashed after
    the query had completed, even though the table data was
    intact. (Bug#31833: http://bugs.mysql.com/31833)
  * Comparison results for BETWEEN were different from those
    for operators like < and > for DATETIME-like values with
    trailing extra characters such as '2007-10-01 00:00:00
    GMT-6'. BETWEEN treated the values as DATETIME, whereas
    the other operators performed a binary-string comparison.
    Now they all uniformly use a DATETIME comparison, but
    generate warnings for values with trailing garbage.
    (Bug#31800: http://bugs.mysql.com/31800)
  * Name resolution for correlated subqueries and HAVING
    clauses failed to distinguish which of two was being
    performed when there was a reference to an outer aliased
    field. This could result in error messages about a HAVING
    clause for queries that had no such clause.
    (Bug#31797: http://bugs.mysql.com/31797)
  * With ONLY_FULL_GROUP_BY SQL mode enabled, queries such as
    SELECT a FROM t1 HAVING COUNT(*)>2 were not being
    rejected as they should have been.
    (Bug#31794: http://bugs.mysql.com/31794)
  * The server could crash during filesort for ORDER BY based
    on expressions with INET_NTOA() or OCT() if those
    functions returned NULL.
    (Bug#31758: http://bugs.mysql.com/31758)
  * For a fatal error during filesort in find_all_keys(), the
    error was returned without the necessary handler
    uninitialization, causing an assertion failure. Fixed by
    uninitializing the handler before returning the error.
    (Bug#31742: http://bugs.mysql.com/31742)
  * mysqlslap failed to commit after the final record load.
    (Bug#31704: http://bugs.mysql.com/31704)
  * The examined-rows count was not incremented for const
    queries. (Bug#31700: http://bugs.mysql.com/31700)
  * The server crashed if a thread was killed while locking
    the general_log table at the beginning of statement
    processing. (Bug#31692: http://bugs.mysql.com/31692)
  * The mysql_change_user() C API function was subject to
    buffer overflow. (Bug#31669: http://bugs.mysql.com/31669)
  * For SELECT ... INTO OUTFILE, if the ENCLOSED BY string is
    empty and the FIELDS TERMINATED BY string started with a
    special character (one of n, t, r, b, 0, Z, or N), every
    occurrence of the character within field values would be
    duplicated. (Bug#31663: http://bugs.mysql.com/31663)
  * SHOW COLUMNS and DESCRIBE displayed null as the column
    type for a view with no valid definer. This caused
    mysqldump to produce a non-reloadable dump file for the
    view. (Bug#31662: http://bugs.mysql.com/31662)
  * The mysqlbug script did not include the correct values of
    CFLAGS and CXXFLAGS that were used to configure the
    distribution. (Bug#31644: http://bugs.mysql.com/31644)
  * Queries that include a comparison of an
    INFORMATION_SCHEMA table column to NULL caused a server
    crash. (Bug#31633: http://bugs.mysql.com/31633)
  * EXPLAIN EXTENDED for SELECT from INFORMATION_SCHEMA
    tables caused an assertion failure.
    (Bug#31630: http://bugs.mysql.com/31630)
  * ucs2 does not work as a client character set, but
    attempts to use it as such were not rejected. Now
    character_set_client cannot be set to ucs2. This also
    affects statements such as SET NAMES and SET CHARACTER
    SET. (Bug#31615: http://bugs.mysql.com/31615)
  * A buffer used when setting variables was not dimensioned
    to accommodate the trailing '\0' byte, so a single-byte
    buffer overrun was possible.
    (Bug#31588: http://bugs.mysql.com/31588)
  * HAVING could treat lettercase of table aliases
    incorrectly if lower_case_table_names was enabled.
    (Bug#31562: http://bugs.mysql.com/31562)
  * Spurious duplicate-key errors could occur for
    multiple-row inserts into an InnoDB table that activate a
    trigger. (Bug#31540: http://bugs.mysql.com/31540)
  * Using ALTER EVENT to rename a disabled event caused it to
    become enabled. (Bug#31539: http://bugs.mysql.com/31539)
  * The fix for Bug#24989: http://bugs.mysql.com/24989
    introduced a problem such that a NULL thread handler
    could be used during a rollback operation. This problem
    is unlikely to be seen in practice.
    (Bug#31517: http://bugs.mysql.com/31517)
  * The length of the result from IFNULL() could be
    calculated incorrectly because the sign of the result was
    not taken into account.
    (Bug#31471: http://bugs.mysql.com/31471)
  * Queries that used the ref access method or index-based
    subquery execution over indexes that have DECIMAL columns
    could fail with an error Column col_name cannot be null.
    (Bug#31450: http://bugs.mysql.com/31450)
  * InnoDB now tracks locking and use of tables by MySQL only
    after a table has been successfully locked on behalf of a
    transaction. Previously, the locked flag was set and the
    table in-use counter was updated before checking whether
    the lock on the table succeeded. A subsequent failure in
    obtaining a lock on the table led to an inconsistent
    state as the table was neither locked nor in use.
    (Bug#31444: http://bugs.mysql.com/31444)
  * SELECT 1 REGEX NULL caused an assertion failure for debug
    servers. (Bug#31440: http://bugs.mysql.com/31440)
  * The UpdateXML() function did not check for the validity
    of all its arguments; in some cases, this could lead to a
    crash of the server.
    (Bug#31438: http://bugs.mysql.com/31438)
  * The mysql_change_user() C API function caused advisory
    locks (obtained with GET_LOCK()) to malfunction.
    (Bug#31418: http://bugs.mysql.com/31418)
  * NDB libraries and include files were missing from some
    binary tar file distributions.
    (Bug#31414: http://bugs.mysql.com/31414)
  * Executing RENAME while tables were open for use with
    HANDLER statements could cause a server crash.
    (Bug#31409: http://bugs.mysql.com/31409)
  * mysql-test-run.pl tried to create files in a directory
    where it could not be expected to have write permission.
    mysqltest created .reject files in a directory other than
    the one where test results go.
    (Bug#31398: http://bugs.mysql.com/31398)
  * For a table that had been opened with HANDLER and marked
    for reopening after being closed with FLUSH TABLES, DROP
    TABLE did not properly discard the handler.
    (Bug#31397: http://bugs.mysql.com/31397)
  * Automatically allocated memory for string options
    associated with a plugin was not freed if the plugin did
    not get installed.
    (Bug#31382: http://bugs.mysql.com/31382)
  * INFORMATION_SCHEMA.TABLES was returning incorrect
    information. (Bug#31381: http://bugs.mysql.com/31381)
  * DROP USER caused an increase in memory usage.
    (Bug#31347: http://bugs.mysql.com/31347)
  * For InnoDB tables with READ COMMITTED isolation level,
    UPDATE statements skipped rows locked by another
    transaction, rather than waiting for the locks to be
    released. (Bug#31310: http://bugs.mysql.com/31310)
  * For an almost-full MyISAM table, an insert that failed
    could leave the table in a corrupt state.
    (Bug#31305: http://bugs.mysql.com/31305)
  * myisamchk --unpack could corrupt a table that when
    unpacked has static (fixed-length) row format.
    (Bug#31277: http://bugs.mysql.com/31277)
  * CONVERT(val, DATETIME) would fail on invalid input, but
    processing was not aborted for the WHERE clause, leading
    to a server crash.
    (Bug#31253: http://bugs.mysql.com/31253)
  * Allocation of an insufficiently large group-by buffer
    following creation of a temporary table could lead to a
    server crash. (Bug#31249: http://bugs.mysql.com/31249)
  * Use of DECIMAL(n, n) ZEROFILL in GROUP_CONCAT() could
    cause a server crash.
    (Bug#31227: http://bugs.mysql.com/31227)
  * When a TIMESTAMP with a non-zero time part was converted
    to a DATE value, no warning was generated. This caused
    index lookups to assume that this is a valid conversion
    and was returning rows that match a comparison between a
    TIMESTAMP value and a DATE keypart. Now a warning is
    generated so that TIMESTAMP with a non-zero time part
    will not match DATE values.
    (Bug#31221: http://bugs.mysql.com/31221)
  * Server variables could not be set to their current values
    on Linux platforms.
    (Bug#31177: http://bugs.mysql.com/31177)
    See also Bug#6958: http://bugs.mysql.com/6958
  * WIth small values of myisam_sort_buffer_size, REPAIR
    TABLE for MyISAM tables could cause a server crash.
    (Bug#31174: http://bugs.mysql.com/31174)
  * Use of the @@hostname system variable in inserts in
    mysql_system_tables_data.sql did not replicate. The
    workaround is to select its value into a user variable
    (which does replicate) and insert that.
    (Bug#31167: http://bugs.mysql.com/31167)
  * If MAKETIME() returned NULL when used in an ORDER BY that
    was evaluated using filesort, a server crash could
    result. (Bug#31160: http://bugs.mysql.com/31160)
  * Data in BLOB or GEOMETRY columns could be cropped when
    performing a UNION query.
    (Bug#31158: http://bugs.mysql.com/31158)
  * LAST_INSERT_ID() execution could be handled improperly in
    subqueries. (Bug#31157: http://bugs.mysql.com/31157)
  * An assertion designed to detect a bug in the ROLLUP
    implementation would incorrectly be triggered when used
    in a subquery context with non-cacheable statements.
    (Bug#31156: http://bugs.mysql.com/31156)
  * Selecting spatial types in a UNION could cause a server
    crash. (Bug#31155: http://bugs.mysql.com/31155)
  * Use of GROUP_CONCAT(DISTINCT bit_column) caused an
    assertion failure.
    (Bug#31154: http://bugs.mysql.com/31154)
  * The server crashed in the parser when running out of
    memory. Memory handling in the parser has been improved
    to gracefully return an error when out-of-memory
    conditions occur in the parser.
    (Bug#31153: http://bugs.mysql.com/31153)
  * MySQL declares a UNIQUE key as a PRIMARY key if it
    doesn't have NULL columns and is not a partial key, and
    the PRIMARY key must alway be the first key. However, in
    some cases, a non-first key could be reported as PRIMARY,
    leading to an assert failure by InnoDB. This is fixed by
    correcting the key sort order.
    (Bug#31137: http://bugs.mysql.com/31137)
  * mysqldump failed to handle databases containing a `-'
    character in the name.
    (Bug#31113: http://bugs.mysql.com/31113)
  * Starting the server using --read-only and with the Event
    Scheduler enabled caused it to crash.
    Note
       This issue occurred only when the server had been built
       with certain nonstandard combinations of configure
       options.
    (Bug#31111: http://bugs.mysql.com/31111)
  * A rule to prefer filesort over an indexed ORDER BY when
    accessing all rows of a table was being used even if a
    LIMIT clause was present.
    (Bug#31094: http://bugs.mysql.com/31094)
  * REGEXP operations could cause a server crash for
    character sets such as ucs2. Now the arguments are
    converted to utf8 if possible, to allow correct results
    to be produced if the resulting strings contain only
    8-bit characters.
    (Bug#31081: http://bugs.mysql.com/31081)
  * Expressions of the form WHERE col NOT IN (col, ...),
    where the same column was named both times, could cause a
    server crash in the optimizer.
    (Bug#31075: http://bugs.mysql.com/31075)
  * Internal conversion routines could fail for several
    multi-byte character sets (big5, cp932, euckr, gb2312,
    sjis) for empty strings or during evaluation of SOUNDS
    LIKE. (Bug#31069: http://bugs.mysql.com/31069,
    Bug#31070: http://bugs.mysql.com/31070)
  * Many nested subqueries in a single query could led to
    excessive memory consumption and possibly a crash of the
    server. (Bug#31048: http://bugs.mysql.com/31048)
  * Using ORDER BY with ARCHIVE tables caused a server crash.
    (Bug#31036: http://bugs.mysql.com/31036)
  * A server crash could occur when a non-DETERMINISTIC
    stored function was used in a GROUP BY clause.
    (Bug#31035: http://bugs.mysql.com/31035)
  * The MOD() function and the % operator crashed the server
    for a divisor less than 1 with a very long fractional
    part. (Bug#31019: http://bugs.mysql.com/31019)
  * Transactions were committed prematurely when LOCK TABLE
    and SET AUTOCOMMIT=OFF were used together.
    (Bug#30996: http://bugs.mysql.com/30996)
  * On Windows, the pthread_mutex_trylock() implementation
    was incorrect. (Bug#30992: http://bugs.mysql.com/30992)
  * A character set introducer followed by a hexadecimal or
    bit-value literal did not check its argument and could
    return an ill-formed result for invalid input.
    (Bug#30986: http://bugs.mysql.com/30986)
  * CHAR(str USING charset) did not check its argument and
    could return an ill-formed result for invalid input.
    (Bug#30982: http://bugs.mysql.com/30982)
  * The result from CHAR(str USING ucs2) did not add a
    leading 0x00 byte for input strings with an odd number of
    bytes. (Bug#30981: http://bugs.mysql.com/30981)
  * A cluster restart could sometimes fail due to an issue
    with table IDs. (Bug#30975: http://bugs.mysql.com/30975)
  * The GeomFromText() function could cause a server crash if
    the first argument was NULL or the empty string.
    (Bug#30955: http://bugs.mysql.com/30955)
  * MAKEDATE() incorrectly moved year values in the 100-200
    range into the 1970-2069 range. (This is legitimate for
    00-99, but three-digit years should be used unchanged.)
    (Bug#30951: http://bugs.mysql.com/30951)
  * When invoked with constant arguments, STR_TO_DATE() could
    use a cached value for the format string and return
    incorrect results.
    (Bug#30942: http://bugs.mysql.com/30942)
  * GROUP_CONCAT() returned ',' rather than an empty string
    when the argument column contained only empty strings.
    (Bug#30897: http://bugs.mysql.com/30897)
  * For MEMORY tables, lookups for NULL values in BTREE
    indexes could return incorrect results.
    (Bug#30885: http://bugs.mysql.com/30885)
  * A server crash could occur if a stored function that
    contained a DROP TEMPORARY TABLE statement was invoked by
    a CREATE TEMPORARY TABLE statement that created a table
    of the same name.
    (Bug#30882: http://bugs.mysql.com/30882)
  * Calling NAME_CONST() with non-constant arguments
    triggered an assertion failure. Non-constant arguments
    are now disallowed.
    (Bug#30832: http://bugs.mysql.com/30832)
  * For a spatial column with a regular (non-SPATIAL) index,
    queries failed if the optimizer tried to use the index.
    (Bug#30825: http://bugs.mysql.com/30825)
  * Values for the --tc-heuristic-recover option incorrectly
    were treated as values for the --myisam-stats-method
    option. (Bug#30821: http://bugs.mysql.com/30821)
  * INFORMATION_SCHEMA.SCHEMATA was returning incorrect
    information. (Bug#30795: http://bugs.mysql.com/30795)
  * The optimizer incorrectly optimized conditions out of the
    WHERE clause in some queries involving subqueries and
    indexed columns. (Bug#30788: http://bugs.mysql.com/30788)
  * Improper calculation of CASE expression results could
    lead to value truncation.
    (Bug#30782: http://bugs.mysql.com/30782)
  * On Windows, the pthread_mutex_trylock() implementation
    was incorrect. One symptom was that invalidating the
    query cache could cause a server crash.
    (Bug#30768: http://bugs.mysql.com/30768)
  * User-supplied names foreign key names might not be set to
    the right key, leading to foreign keys with no name.
    (Bug#30747: http://bugs.mysql.com/30747)
  * Under some circumstances, CREATE TABLE ... SELECT could
    crash the server or incorrectly report that the table row
    size was too large.
    (Bug#30736: http://bugs.mysql.com/30736)
  * Using the MIN() or MAX() function to select one part of a
    multi-part key could cause a crash when the function
    result was NULL. (Bug#30715: http://bugs.mysql.com/30715)
  * The embedded server did not properly check column-level
    privileges. (Bug#30710: http://bugs.mysql.com/30710)
  * INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION was incorrect
    for views that were defined to select from other
    INFORMATION_SCHEMA tables.
    (Bug#30689: http://bugs.mysql.com/30689)
  * Issuing an ALTER SERVER statement to update the settings
    for a FEDERATED server would cause the mysqld to crash.
    (Bug#30671: http://bugs.mysql.com/30671)
  * The optimizer could ignore ORDER BY in cases when the
    result set is ordered by filesort, resulting in rows
    being returned in incorrect order.
    (Bug#30666: http://bugs.mysql.com/30666)
  * A different execution plan was displayed for EXPLAIN than
    would actually have been used for the SELECT because the
    test of sort keys for ORDER BY did not consider keys
    mentioned in IGNORE KEYS FOR ORDER BY.
    (Bug#30665: http://bugs.mysql.com/30665)
  * On Windows, LIMIT arguments greater than 2^32 did not
    work correctly. (Bug#30639: http://bugs.mysql.com/30639)
  * MyISAM tables could not exceed 4294967295 (2^32 - 1) rows
    on Windows. (Bug#30638: http://bugs.mysql.com/30638)
  * A failed HANDLER ... READ operation could leave the table
    in a locked state.
    (Bug#30632: http://bugs.mysql.com/30632)
  * mysql-test-run.pl could not run mysqld with root
    privileges. (Bug#30630: http://bugs.mysql.com/30630)
  * The mysqld_safe script contained a syntax error.
    (Bug#30624: http://bugs.mysql.com/30624)
  * The optimization that uses a unique index to remove GROUP
    BY did not ensure that the index was actually used, thus
    violating the ORDER BY that is implied by GROUP BY.
    (Bug#30596: http://bugs.mysql.com/30596)
  * SHOW STATUS LIKE 'Ssl_cipher_list' from a MySQL client
    connected via SSL returned an empty string rather than a
    list of available ciphers.
    (Bug#30593: http://bugs.mysql.com/30593)
  * For MEMORY tables, DELETE statements that remove rows
    based on an index read could fail to remove all matching
    rows. (Bug#30590: http://bugs.mysql.com/30590)
  * Using GROUP BY on an expression of the form timestamp_col
    DIV number caused a server crash due to incorrect
    calculation of number of decimals.
    (Bug#30587: http://bugs.mysql.com/30587)
  * Executing a SELECT COUNT(*) query on an InnoDB table
    partitioned by KEY that used a DOUBLE column as the
    partitioning key caused the server to crash.
    (Bug#30583: http://bugs.mysql.com/30583)
  * The options available to the CHECK TABLE statement were
    also allowed in OPTIMIZE TABLE and ANALYZE TABLE
    statements, but caused corruption during their execution.
    These options were never supported for the these
    statements, and an error is now raised if you try to
    apply these options to these statements.
    (Bug#30495: http://bugs.mysql.com/30495)
  * A self-referencing trigger on a partitioned table caused
    the server to crash instead of failing with an error.
    (Bug#30484: http://bugs.mysql.com/30484)
  * The mysql_change_user() C API function did not correctly
    reset the character set variables to the values they had
    just after initially connecting.
    (Bug#30472: http://bugs.mysql.com/30472)
  * When expanding a * in a USING or NATURAL join, the check
    for table access for both tables in the join was done
    using only the grant information of the first table.
    (Bug#30468: http://bugs.mysql.com/30468)
  * When casting a string value to an integer, cases where
    the input string contained a decimal point and was long
    enough to overrun the unsigned long long type were not
    handled correctly. The position of the decimal point was
    not taken into account which resulted in miscalculated
    numbers and incorrect truncation to appropriate SQL data
    type limits. (Bug#30453: http://bugs.mysql.com/30453)
  * Versions of mysqldump from MySQL 4.1 or higher tried to
    use START TRANSACTION WITH CONSISTENT SNAPSHOT if the
    --single-transaction and --master-data options were
    given, even with servers older than 4.1 that do not
    support consistent snapshots.
    (Bug#30444: http://bugs.mysql.com/30444)
  * With libmysqld, use of prepared statements and the query
    cache at the same time caused problems.
    (Bug#30430: http://bugs.mysql.com/30430)
  * Issuing a DELETE statement having both an ORDER BY clause
    and a LIMIT clause could cause mysqld to crash.
    (Bug#30385: http://bugs.mysql.com/30385)
  * For CREATE ... SELECT ... FROM, where the resulting table
    contained indexes, adding SQL_BUFFER_RESULT to the SELECT
    part caused index corruption in the table.
    (Bug#30384: http://bugs.mysql.com/30384)
  * The Last_query_cost status variable value can be computed
    accurately only for simple "flat" queries, not complex
    queries such as those with subqueries or UNION. However,
    the value was not consistently being set to 0 for complex
    queries. (Bug#30377: http://bugs.mysql.com/30377)
  * The optimizer made incorrect assumptions about the value
    of the is_member value for user-defined functions,
    sometimes resulting in incorrect ordering of UDF results.
    (Bug#30355: http://bugs.mysql.com/30355)
  * Queries that had a GROUP BY clause and selected
    COUNT(DISTINCT bit_column) returned incorrect results.
    (Bug#30324: http://bugs.mysql.com/30324)
  * Some valid euc-kr characters having the second byte in
    the ranges [0x41..0x5A] and [0x61..0x7A] were rejected.
    (Bug#30315: http://bugs.mysql.com/30315)


Please also check parts 1 and 3 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]

Reply via email to