Dear MySQL users,

MySQL 6.0.4-alpha, a new version of the MySQL database system including
the Falcon transactional storage engine (now at beta stage), has been
released. The main page for MySQL 6.0 is at:

      http://www.mysql.com/mysql60/

If you are new to the Falcon storage engine and need more information,
please read the Falcon Evaluation Guide at:

http://www.mysql.com/why-mysql/white-papers/falcon-getting-started.php

and the Falcon White Paper at:

http://www.mysql.com/why-mysql/white-papers/storage-engines-falcon.php

MySQL 6.0.4-alpha is available in source and binary form for a number
of platforms from our download pages at

      http://dev.mysql.com/downloads/mysql/6.0.html

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.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches etc.:

      http://forge.mysql.com/wiki/Contributing

Despite all trimming, describing all changes since the last released
version of MySQL 6.0 exceeds the mailing list configuration.
We had to split this message into two parts, this one (part 1) lists all
changes which are labeled "functionality", "security", "incompatible",
or "important".
You can view the full list online at

      http://dev.mysql.com/doc/refman/6.0/en/news-6-0-4.html



"Functionality", "security", "incompatible", or "important" changes
since the last release:

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: The Unicode implementation has been
  extended to provide support for supplementary characters that
  lie outside the Basic Multilingual Plane (BMP). Noteworthy
  features:
  + utf16 and utf32 character sets have been added. These correspond to
    the UTF-16 and UTF-32 encodings of the Unicode character set, and
    they both support supplementary characters.
  + The utf8 character set from previous versions of MySQL
    has been renamed to utf8mb3, to reflect that its encoding
    uses a maximum of three bytes for multi-byte characters.
    (Old tables that previously used utf8 will be reported as
    using utf8mb3 after an in-place upgrade to MySQL 6.0, but
    otherwise work as before.)
  + The new utf8 character set in MySQL 6.0 is similar to
    utf8mb3, but its encoding allows up to four bytes per
    character to enable support for supplementary characters.
  + The ucs2 character set is essentially unchanged except
    for the inclusion of some newer BMP characters.
  In most respects, upgrading from MySQL 5.1 to 6.0 should
  present few problems with regard to Unicode usage, although
  there are some potential areas of incompatibility. Some
  examples:
  + For the variable-length character data types (VARCHAR and
    the TEXT types), the maximum length in characters for
    utf8 columns is less in MySQL 6.0 than previously.
  + For all character data types (CHAR, VARCHAR, and the TEXT
    types), the maximum number of characters for utf8 columns
    that can be indexed is less in MySQL 6.0 than previously.
  Consequently, if you want to upgrade tables from the old utf8
  (now utf8mb3) to the current utf8, it may be necessary to
  change some column or index definitions.
  For additional details about the new Unicode character sets
  and potential incompatibilities, see Section 9.1.8, "Unicode
  Support," and Section 9.1.9, "Upgrading from Previous to
  Current Unicode Support."
  If you use events, a known issue is that if you upgrade from
  MySQL 5.1 to 6.0.4, the event scheduler will not work, even
  after you run mysql_upgrade. (This is an issue only for an
  upgrade, not for a new installation of MySQL 6.0.4.) To work
  around this upgrading problem, use these instructions:
  1. In MySQL 5.1, before upgrading, create a dump file
     containing your mysql.event table:
shell> mysqldump -uroot -p mysql event > event.sql
  2. Stop the server, upgrade to MySQL 6.0, and start the server.
  3. Recreate the mysql.event table using the dump file:
shell> mysql -uroot -p mysql < event.sql
  4. Run mysql_upgrade to upgrade the other system tables in
     the mysql database:
shell> mysql_upgrade -uroot -p
  5. Restart the server. The event scheduler should run normally.
* Incompatible Change: Because of a change in the format of the
  Falcon pages stored within Falcon database files, Falcon
  databases created in MySQL 6.0.4 (or later) are not compatible
  with previous releases, and existing Falcon databases are
  incompatible with MySQL 6.0.4 (and later versions. You should
  dump Falcon databases using mysqldump before upgrading, and
  then reload them after the upgrade. For more information, see
  Section 4.5.4, "mysqldump --- A Database Backup Program."
* 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)
* Cluster Replication: A replication heartbeat mechanism has been added
  to facilitate monitoring. This provides an alternative to checking log
  files, making it possible to detect in real time when a slave has
  failed. Configuration of heartbeats is done via a new
  MASTER_HEARTBEAT_PERIOD = interval clause for the CHANGE MASTER TO
  statement (see Section 12.6.2.1, "CHANGE MASTER TO Syntax");
  monitoring can be done by checking the values of the status variables
  Slave_heartbeat_period and Slave_received_heartbeats  (see Section
  5.1.5, "Status Variables").
  The addition of replication heartbeats addresses a number of issues:
  + Relay logs were rotated every slave_net_timeout seconds
    even if no statements were being replicated.
  + SHOW SLAVE STATUS displayed an incorrect value for
    seconds_behind_master following a FLUSH LOGS statement.
  + Replication master-slave connections used
    slave_net_timeout for connection timeouts.
  (Bug#20435: http://bugs.mysql.com/20435,
  Bug#29309: http://bugs.mysql.com/29309,
  Bug#30932: http://bugs.mysql.com/30932)
* 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 taken 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)
* 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)
* It is now possible to set long_query_time in microseconds or to 0.
  Setting this value to 0 causes all queries to be recorded in the slow
  query log.
  Currently, fractional values can be used only when logging to files.
  We plan to provide this functionality for logging to tables when
  time-related data types are enhanced to support microsecond
  resolution. (Bug#25412: http://bugs.mysql.com/25412)
* INFORMATION_SCHEMA implementation changes were made that optimize
  certain types of queries for INFORMATION_SCHEMA tables so that they
  execute more quickly. Section 7.2.17, "INFORMATION_SCHEMA
  Optimization," provides guidelines on how to take advantage of these
  optimizations by writing queries that minimize the need for the server
  to access the filesystem to obtain the information contained in
  INFORMATION_SCHEMA tables. By writing queries that enable the server
  to avoid directory scans or opening table files, you will obtain
  better performance. (Bug#19588: http://bugs.mysql.com/19588)
* Three options were added to mysqldump make it easier to generate a
  dump from a slave server. --dump-slave is similar to --master-data,
  but the CHANGE MASTER statement contains binary log coordinates for
  the slave's master host, not the slave itself.
  --apply-slave-statements causes STOP SLAVE and START SLAVE statements
  to be added before the CHANGE MASTER statement and at the end of the
  output, respectively. --include-master-host-port causes the CHANGE
  MASTER statement to include MASTER_PORT and MASTER_HOST options for
  the slave's master. (Bug#8368: http://bugs.mysql.com/8368)
* An alternative thread model is available for dealing with the issues
  that occur with the original one-thread-per-client model when scaling
  to large numbers of simultaneous connections. This model uses thread
  pooling:
  + Connection manager threads do not dedicate a thread to each client
    connection. Instead, the connection is added to the set of existing
    connection sockets. The server collects input from these sockets and
    when a complete request has been received from a given client, it is
    queued for service.
  + The server maintains a pool of service threads to process requests.
    When a queued request is waiting and there is an available (not
    busy) service thread in the pool, the request is given to the thread
    to be handled. After processing the request, the service thread
    becomes available to process other requests.
    Service threads are created at server startup and exist until the
    server terminates. A given service thread is not tied to a specific
    client connection and the requests that it processes over time may
    originate from different client connections.
  + The pool of service threads has a fixed size, so the amount of
    memory required for it does not increase as the number of client
    connections increases.
  For information about choosing one thread model over the other and
  tuning the parameters that control thread resources, see Section
  7.5.7, "How MySQL Uses Threads for Client Connections."
* When the server detects MyISAM table corruption, it now writes
  additional information to the error log, such as the name and
  line number of the source file, and the list of threads accessing
  the table. Example: Got an error from thread_id=1, mi_dynrec.c:368.
  This is useful information to include in bug reports.
* Two options relating to slow query logging have been added for mysqld.
  --log-slow-slave-statements causes slow statements executed by a
  replication slave to be written to the slow query log;
  in_examined_row_limit can be used to cause queries which examine fewer
  than the stated number of rows not to be logged.

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-6313))
* 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)
* 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. 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: 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: 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)
* 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.
  (Bug#30695: http://bugs.mysql.com/30695)


See part 2 for the description of further changes.


Enjoy,
Daniel

--
Daniel Fischer, Team Lead, Build           +46 18174400 ext. 4537
MySQL GmbH, Dachauer Strasse 37, D-80335 Muenchen - www.mysql.com
Geschaeftsfuehrer: Kaj Arnoe                  HRB Muenchen 162140
Are you MySQL certified? mysql.com/certification    49.011, 8.376





--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to