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]

Reply via email to