MySQL 6.0.4アルファ版がリリースされました。

オリジナル版: http://dev.mysql.com/doc/refman/6.0/en/news-6-0-4.html

新たなFalconトランザクションストレージエンジンおよびその他の機能を持つMySQLデータベースシステムの新バージョンであるMySQL 6.0.4アルファ版がリリースされました。MySQL 6.0に関する主要なページは、http://www.mysql.com/mysql60/にあります。

Falconストレージエンジンが初めてで、より多くの情報が必要な場合、Falcon Evaluation Guide
と、Falcon White Paper

MySQL 6.0.4アルファ版は、http://dev.mysql.com/downloads/mysql/6.0.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.
See alsoBug#29325:http://bugs.mysql.com/29325,
* Incompatible Change: The Unicode implementation has been
extended to provide support for supplementary characters that
lie outside the Basic Multilingual Plane (BMP). Noteworthy
+ 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
+ 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.
* Replication: Replication of the following now switches to row-based
logging in MIXED mode, and generates a warning in STATEMENT mode:
+ USER()
See Section, "Mixed Binary Logging (MBL) Format," for
more information. (Bug#12092:http://bugs.mysql.com/12092,
* 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
statement (see Section, "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.
* The --event-scheduler option without a value disabled the event
scheduler. Now it enables the event scheduler.
* 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).
* 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
+ 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.
* 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.
The proof-of-concept exploit is freely available on the Internet-
Everyone with a vulnerable MySQL configuration is advised to upgrade
* 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.
* 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
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
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. SeeBug#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:
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:
gives error message: table is not BASE TABLE.
* Incompatible Change: SET PASSWORD statements now cause an implicit
commit, and thus are prohibited within stored functions and triggers.
* 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.
* 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.
* Partitioning: Important Note: An apostrophe or single quote character
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.
* Partitioning: MySQL Cluster: EXPLAIN PARTITIONS reported partition
usage by queries on NDB tables according to the standard MySQL hash
function than the hash function used in the NDB storage engine.
* Replication: MySQL Cluster: Row-based replication from or to a
big-endian machine where the table used the NDB storage engine
failed, if the same table on the other machine was either
non-NDB or the other machine was little-endian.
See alsoBug#24231:http://bugs.mysql.com/24231,
* MySQL Cluster: An insert or update with combined range and equality
constraints failed when run against an NDB table with the error Got
unknown error from NDB. An example of such a statement would be UPDATE
t1 SET b = 5 WHERE a IN (7,8) OR a >= 10;.
* MySQL Cluster: An error with an if statement in sql/ha_ndbcluster.cc
could potentially lead to an infinite loop in case of failure when
working with AUTO_INCREMENT columns in NDB tables.
* MySQL Cluster: The NDB storage engine code was not safe for
strict-alias optimization in gcc 4.2.1.
* MySQL Cluster: Following an upgrade, ndb_mgmd would fail with
an ArbitrationError. (Bug#31690:http://bugs.mysql.com/31690)
* MySQL Cluster: It was possible in some cases for a node group to be
"lost" due to missed local checkpoints following a system restart.
* MySQL Cluster: A query against a table with TEXT or BLOB columns that
would return more than a certain amount of data failed with Got error
4350 'Transaction already aborted' from NDBCLUSTER.
This regression was introduced by
* MySQL Cluster: NDB tables having names containing
non-alphanumeric characters (such as " $ ") were not
discovered correctly. (Bug#31470:http://bugs.mysql.com/31470)
* MySQL Cluster: A node failure during a local checkpoint could
lead to a subsequent failure of the cluster during a system
restart. (Bug#31257:http://bugs.mysql.com/31257)
* MySQL Cluster: In some cases, the cluster managment server
logged entries multiple times following a restart of mgmd.
* MySQL Cluster: ndb_mgm --help did not display any information
about the -a option. (Bug#29509:http://bugs.mysql.com/29509)
* MySQL Cluster: An interpreted program of sufficient size and
complexity could cause all cluster data nodes to shut down due
to buffer overruns. (Bug#29390:http://bugs.mysql.com/29390)
* MySQL Cluster: Performing DELETE operations after a data node
had been shut down could lead to inconsistent data following a
restart of the node. (Bug#26450:http://bugs.mysql.com/26450)
* MySQL Cluster: UPDATE IGNORE could sometimes fail on NDB
tables due to the use of unitialized data when checking for
duplicate keys to be ignored.
* MySQL Cluster: The cluster log was formatted inconsistently
and contained extraneous newline characters.
* MySQL Cluster: (Replication): Inconsistencies could occur
between the master and the slave when replicating Disk Data
tables. (Bug#19259:http://bugs.mysql.com/19259,
* Partitioning: Repeated updates of a table that was partitioned
by KEY on a TIMESTAMP column eventually crashed the server.
* Partitioning: Selecting from a table partitioned by KEY on a
VARCHAR column whose size was greater than 65530 caused the
server to crash. (Bug#31705:http://bugs.mysql.com/31705)
* Partitioning: INSERT DELAYED into a partitioned table crashed
the server. (Bug#31201:http://bugs.mysql.com/31201)
* Partitioning: Using ALTER TABLE to partition an existing table
having an AUTO_INCREMENT column could crash the server.
This regression was introduced by
* Partitioning: Falcon cannot drop a table for which there is a
pending transaction, but the error message for such attempts
was misleading. (Bug#22972:http://bugs.mysql.com/22972)
* Replication: When dropping a database containing a stored
procedure while using row-cased replication, the delete of the
stored procedure from the mysql.proc table was recorded in the
binary log following the DROP DATABASE statement. To correct
this issue, DROP DATABASE now uses statement-based
replication. (Bug#32435:http://bugs.mysql.com/32435)
* Replication: It was possible for the name of the relay log
file to exceed the amount of memory reserved for it, possibly
leading to a crash of the server.
See alsoBug#28597:http://bugs.mysql.com/28597
* Replication: Corruption of log events caused the server to
crash on 64-bit Linux systems having 4 GB of memory or more.
* Replication: Trying to replicate an update of a row that was
missing on the slave led to a failure on the slave.
* Replication: Table names were displayed as binary "garbage"
characters in slave error messages. The issue was observed on
64-bit Windows but may have effected other platforms.
* Replication: One thread could read uninitialized memory from
the stack of another thread. This issue was only known to
occur in a mysqld process acting as both a master and a slave.
* Replication: It was possible to set SQL_SLAVE_SKIP_COUNTER
such that the slave would jump into the middle of an event
group, including possibly a transaction.
See alsoBug#12691:http://bugs.mysql.com/12691
* Replication: Due a previous change in how the default name and
location of the binlog file were determined, replication
failed following some upgrades.
See alsoBug#31836:http://bugs.mysql.com/31836
This regression was introduced by
* Replication: Stored procedures having BIT parameters were not
replicated correctly. (Bug#26199:http://bugs.mysql.com/26199)
* Replication: Issuing SHOW SLAVE STATUS as mysqld was shutting
down could cause a crash.
* Replication: If a temporary error occured inside an event
group on an event that was not the first event of the group,
the slave could get caught in an endless loop because the
retry counter was reset whenever an event was executed
successfully. (Bug#24860:http://bugs.mysql.com/24860)
See alsoBug#12691:http://bugs.mysql.com/12691,
* Replication: An UPDATE statement using a stored function that
modified a non-transactional table was not logged if it
failed. This caused the copy of the non-transactional table on
the master have a row that the copy on the slave did not.
See alsoBug#12713:http://bugs.mysql.com/12713
* Replication: A replication slave sometimes failed to reconnect
because it was unable to run SHOW SLAVE HOSTS.
See alsoBug#13963:http://bugs.mysql.com/13963,
* Replication: A replication slave sometimes stopped for changes
that were idempotent (that is, such changes should have been
considered "safe"), even though it should have simply noted
that the change was already done, and continued operation.
* Cluster Replication: A replication slave could return "garbage" data
that was not in recognizable row format due to a problem with the
internal all_set() method. (Bug#33375:http://bugs.mysql.com/33375)
* Cluster Replication: A node failure during replication could
lead to buckets out of order; now active subscribers are
checked for, rather than empty buckets.
* Cluster Replication: In some cases, not all tables were
properly initialized before the binlog thread was started.
* Using Falcon when accessing multiple versions of the same
record, certain records could fail to be retrieved from the
record cache, causing an assertion failure.
* Creating an index on a Falcon table with a column using UTF32
that has been converted to UTF8 would cause a server crash.
* Using ALTER TABLE on a Falcon table it would be possible to
create two tables with the same name but different case.
* Converting a table from InnoDB to Falcon, where the Falcon
table with the same name (but different case) would cause a
server crash. (Bug#32829:http://bugs.mysql.com/32829)
* mysqld_safe looked for error messages in the wrong location.
* An issue with the NO_ENGINE_SUBSTITUTION sql_mode database can
cause the creation of stored routines to fail. If you are
having problems with creating stored routines while using this
sql_mode value, remove this value from your sql_mode setting.
* Repeatedly creating and dropping Falcon tablespaces would fail
because a dropped tablespace would not be dropped before the
new tablespace file was created.
* The INTERVAL() function incorrectly handled NULL values in the
value list. (Bug#32560:http://bugs.mysql.com/32560)
* Use of a NULL-returning GROUP BY expression in conjunction
with WITH ROLLUP could cause a server crash.
See alsoBug#31095:http://bugs.mysql.com/31095
* ORDER BY UpdateXML(...) caused the server to crash in queries
where UpdateXML() returned NULL.
* Falcon used a fixed index key size which would be too small to
cope with some Falcon page sizes, leading to a crash. Falcon
now supports variable length index keys according to the
supported page sizes. See falcon_page_size.
* The rules for valid column names were being applied differently for
base tables and views. (Bug#32496:http://bugs.mysql.com/32496)
* Falcon options to set the limits of memory usage would not be
honoured. This could lead to crashes and assertions during
normal usage, instead of generating a suitable warning.
* Falcon would incorrectly return the supported repeatable-read
level when queried by the Online Backup system, preventing the
ability to create a consistent snapshot backup.
* Some uses of user variables in a query could result in a
server crash. (Bug#32260:http://bugs.mysql.com/32260)
* Under certain conditions, the presence of a GROUP BY clause
could cause an ORDER BY clause to be ignored.
* Altering a Falcon table to support an auto increment column on
a column with existing data and null values would incorrectly
update the table and return an incorrect count of the altered
rows. (Bug#32194:http://bugs.mysql.com/32194)
* InnoDB does not support SPATIAL indexes, but could crash when
asked to handle one. Now an error is returned.
* 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.
* Inserting, updating and deleting a large number of BLOB records in a
Falcon table would take significant amount of time and may prevent
shutdown. (Bug#32062:http://bugs.mysql.com/32062)
* 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)
* In debug builds, testing the result of an IN subquery against
NULL caused an assertion failure.
* SHOW CREATE TRIGGER caused a server crash.
* The server crashed after insertion of a negative value into an
AUTO_INCREMENT column of an InnoDB table.
* 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)
* 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'.
* 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)
* The examined-rows count was not incremented for const queries.
* Falcon tables would fail during replication if ROW-based
replication was specified. (Bug#31671:http://bugs.mysql.com/31671)
* 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.
* 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)
* For queries for which loose index scan is applicable, the
optimizer could choose the wrong execution plan for correlated
subqueries. (Bug#31639:http://bugs.mysql.com/31639)
* Queries that include a comparison of an INFORMATION_SCHEMA
table column to NULL caused a server crash.
caused an assertion failure.
* 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)
* For semi-join processing, pullout of functionally dependent
tables was not handled transitively.
* HAVING could treat lettercase of table aliases incorrectly if
lower_case_table_names was enabled.
* Spurious duplicate-key errors could occur for multiple-row
inserts into an InnoDB table that activate a trigger.
* When inserting dates into a DATETIME column with a Falcon, the
values would automatically be converted with values between 70
and 99 converted to 1970-1999, and values from 00 to 69
converted to 2000 to 2069. These dates are now correctly
handled. (Bug#31490:http://bugs.mysql.com/31490)
* 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.
* 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.
* SELECT 1 REGEX NULL caused an assertion failure for debug
servers. (Bug#31440:http://bugs.mysql.com/31440)
* INFORMATION_SCHEMA.TABLES was returning incorrect information.
* DROP USER caused an increase in memory usage.
* TABLESPACE names within Falcon did not support characters
outside the alpha-numeric ASCII character set.
* 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.
* For an almost-full MyISAM table, an insert that failed could
leave the table in a corrupt state.
* When dropping Falcon tablespaces the associated tablespace
file would not be deleted. (Bug#31296:http://bugs.mysql.com/31296)
* myisamchk --unpack could corrupt a table that when unpacked has static
(fixed-length) row format. (Bug#31277:http://bugs.mysql.com/31277)
* Building a 64-bit binary with support for the Falcon storage
engine using gcc on Solaris could fail. See Section 2.9,
"MySQL Installation Using a Source Distribution," for more
information. (Bug#31268:http://bugs.mysql.com/31268,
* 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)
* If MAKETIME() returned NULL when used in an ORDER BY that was
evaluated using filesort, a server crash could result.
* 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)
* When creating a TABLESPACE that uses the same name as an existing
TABLESPACE, Falcon would return Unknown error -103. MySQL will now
return an error stating that the specified tablespace already exists.
* 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. (Bug#31111:http://bugs.mysql.com/31111)
* Dropping a tablespace and specifying an engine type that does not
support tablespaces would report a warning. The response has now been
updated to report an error. (Bug#31110:http://bugs.mysql.com/31110)
* GROUP BY NULL WITH ROLLUP could cause a server crash.
See alsoBug#32558:http://bugs.mysql.com/32558
* 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)
* Falcon would fail to compile on FreeBSD. This limitation has
now been fixed. (Bug#31045:http://bugs.mysql.com/31045)
* Using ORDER BY with ARCHIVE tables caused a server crash.
* The MOD() function and the % operator crashed the server for a
divisor less than 1 with a very long fractional part.
* Using falcon_serial_log_dir to set the location of the Falcon
serial log would have no effect.
* The LooseScan subquery optimization strategy could produce
duplicate rows in query results.
* 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.
* The result from CHAR(str USING ucs2) did not add a leading
0x00 byte for input strings with an odd number of bytes.
* 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.
* 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.
* 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.
* Running ALTER TABLE ... OPTIMIZE PARTITION on a Falcon table,
a 'divide by zero' error would be reported during a server
crash. (Bug#30826:http://bugs.mysql.com/30826)
* For a spatial column with a regular (non-SPATIAL) index,
queries failed if the optimizer tried to use the index.
* INFORMATION_SCHEMA.SCHEMATA was returning incorrect information.
* 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)
* A multiple-table UPDATE involving transactional and non-transactional
tables caused an assertion failure.
* 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)
were defined to select from other INFORMATION_SCHEMA tables.
* Issuing an ALTER SERVER statement to update the settings for a
FEDERATED server would cause the mysqld to crash.
* 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
* MyISAM tables could not exceed 4294967295 (2^32 - 1) rows on
Windows. (Bug#30638:http://bugs.mysql.com/30638)
* mysql-test-run.pl could not run mysqld with root privileges.
* 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)
* The options available to the CHECK TABLE statement were also
allowed in OPTIMIZE TABLE and ANALYZE TABLE statements, but
caused corruption during their execution. An error is now
raised if you try to apply these options to these statements.
* 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.
* Compared to MySQL 5.1, the 6.0 optimizer failed to use join
buffering for certain queries, resulting in slower performance
for those queries. (Bug#30363:http://bugs.mysql.com/30363)
* A table-access check was performed improperly by libmysqld,
causing a crash. (Bug#30329:http://bugs.mysql.com/30329)
* Some valid euc-kr characters having the second byte in the
ranges [0x41..0x5A] and [0x61..0x7A] were rejected.
* 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)
* Setting certain values on a table using a spatial index could cause
the server to crash. (Bug#30286:http://bugs.mysql.com/30286)
* Some INFORMATION_SCHEMA tables are intended for internal use, but
could be accessed by using SHOW statements.
* On some 64-bit systems, inserting the largest negative value into a
BIGINT column resulted in incorrect data.
* mysqlslap did not properly handle multiple result sets from
stored procedures. (Bug#29985:http://bugs.mysql.com/29985)
* Running the sqlbench test suite against Falcon would cause a
crash. (Bug#29870:http://bugs.mysql.com/29870)
* When accessing statistics in INFORMATION_SCHEMA.FALCON_DATABASE_IO,
the information would relate only to the Falcon database, not user
tablespaces. (Bug#29823:http://bugs.mysql.com/29823)
* Whitespace characters other than spaces within XML tags, such
as linefeeds or tabs, caused LOAD XML INFILE to skip rows.
* configure did not find nss on some Linux platforms.
* Compilation failed on systems where a native log2() implementation was
unavailable. (Bug#29640:http://bugs.mysql.com/29640)
* Use of the latin2_czech_cs collation caused a server crash.
* Using two simultaneous connections it was possible to create a
deadlock situation between two different active transactions on the
same Falcon table. There is no way to prevent this, but a new
parameter, falcon_lock_timeout can set the timeout for deadlocked
transactions. The default timeout is 0 (timeouts are disabled).
* 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. (Bug#29323:http://bugs.mysql.com/29323)
* Insert information into the same table from multiple threads could
cause duplicate key errors. This was related to the changes made to
allow compatibility with the InnoDB repeatable-read isolation level.
The option, falcon_innodb_compatibility, has been renamed to
falcon_consistent_read, but with the opposite effect. The default is
for this option to be on. When set to off, the behaviour of Falcon is
similar to that in InnoDB. (Bug#29151:http://bugs.mysql.com/29151)
* For transactional tables, an error during a multiple-table DELETE
statement did not roll back the statement.
* 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. (Bug#29131:http://bugs.mysql.com/29131)
* When loading large data sets using LOAD DATA INFILE into a Falcon
table, the server could crash.
* SHOW VARIABLES did not display the relay_log, relay_log_index,
or relay_log_info_file system variables.
* Index hints specified in view definitions were ignored when using the
view to select from the base table.
* Views do not have indexes, so index hints do not apply. Use of
index hints when selecting from a view is now disallowed.
* 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)
* The result from CHAR() was incorrectly assumed in some contexts to
return a single-byte result. (Bug#28550:http://bugs.mysql.com/28550)
* Using a temporary table within Falcon that is created in a
directory where the path contains a mixture of upper and lower
letters would fail. (Bug#28541:http://bugs.mysql.com/28541)
* Under heavy load when updating Falcon tables, a race condition
could occur that would ultimately result in a crash.
* 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.
* It was possible to create a view having a column whose name
consisted of an empty string or space characters only.
See alsoBug#31202:http://bugs.mysql.com/31202
* ALTER TABLE tbl_name ROW_FORMAT=format_type did not cause the
table to be rebuilt. (Bug#27610:http://bugs.mysql.com/27610)
* Searching a Falcon table that uses DATETIME columns with an index
could return incorrect results.
* Removing a partition on a Falcon table when there are two
tables with the same name, but different case, would cause a
crash during normal shutdown. (Bug#27425:http://bugs.mysql.com/27425)
* Mixing differently cased tables between MyISAM and Falcon
tables would cause a crash. (Bug#27424:http://bugs.mysql.com/27424)
* 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.
* On Windows, writes to the debug log were using freopen() instead of
fflush(), resulting in slower performance.
* Connections from one mysqld server to another failed on Mac OS X,
affecting replication and FEDERATED tables.
See alsoBug#29083:http://bugs.mysql.com/29083
* LOAD DATA INFILE ran very slowly when reading large files into
partitioned tables. (Bug#26527:http://bugs.mysql.com/26527)
* 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 mysql --show-warnings, warnings were in some cases not displayed.
* Using CREATE UNIQUE INDEX on a Falcon table where rows contain
duplicate values could result in pending transactions to the
table being deleted. (Bug#22842:http://bugs.mysql.com/22842)
* Creating a Falcon table with an auto-increment column that is not
indexed as the first column in a multi-column index would
auto0increment. This behavior was different to the behavior in both
MyISAM and InnoDB. Falcon now rejects such tables during creation in
the same way InnoDB does. (Bug#22564:http://bugs.mysql.com/22564)
* 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)
* Creating a new table or dropping a database on a newly created
database or tablespace where the Falcon engine was used would
raise an error. (Bug#22199:http://bugs.mysql.com/22199)
* Using TRUNCATE on a Falcon table did not reset the auto-increment
counters and used an inefficient method of deleting existing data.
* Creating a DATE outside the normal range within a Falcon table
would result in a zero DATE value being returned, even though
normally invalid values would be stored correctly in other
storage engines. (Bug#22168:http://bugs.mysql.com/22168)
* Selecting information from a Falcon table using a DOUBLE
column with an index would produce incorrect results.
* 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.
* 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,
* Executing DISABLE KEYS and ENABLE KEYS on a non-empty table would
cause the size of the index file for the table to grow considerably.