Note: This was an internal release only, and no binaries were published.
MySQL 5.1.10 includes the patches for recently reported security
vulnerabilites in the MySQL client-server protocol. We would like
to thank Stefano Di Paola <stefano.dipaola@wisec.it>
for finding and reporting these to us.
この項目は前回のMySQL公式リリース以降に適用されたすべての変更とバグ修正を説明します。更に頻繁でありご使用のバージョンと機能に合わせた更新情報を希望される場合には、MySQLエンタープライズ(商用版MySQL)への登録をお考えください。詳細は、http://www.mysql.com/products/enterpriseをご覧下さい。
Functionality added or changed:
Security enhancement: Added
the global max_prepared_stmt_count system
variable to limit the total number of prepared statements in
the server. This limits the potential for denial-of-service
attacks based on running the server out of memory by preparing
huge numbers of statements. The current number of prepared
statements is available through the
prepared_stmt_count system variable. (Bug#16365)
The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See 項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」.
Binary distributions that include SSL support now are built using yaSSL when possible.
The
MySQL-shared-compat-5.1.
shared compatibility RPMs no longer contain libraries for
MySQL 5.0. This avoids a conflict because the 5.0 and 5.1
libraries share the same soname number. It contains libraries
for 3.23, 4.0, 4.1, and 5.1. (Bug#19288)
X-.i386.rpm
The ONLY_FULL_GROUP_BY SQL mode now also
applies to the HAVING clause. That is,
columns not named in the GROUP BY clause
cannot be used in the HAVING clause if not
used in an aggregate function. (Bug#18739)
SQL syntax for prepared statements now supports
ANALYZE TABLE, OPTIMIZE
TABLE, and REPAIR TABLE. (Bug#19308)
XPath expressions passed to the
ExtractValue() and
UpdateXML() functions can now include the
colon character (「 : 」). This
enables use of these functions with XML which employs
namespaces. (Bug#18170)
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug#17737)
For the mysql client, typing Control-C causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. Previously, Control-C caused mysql to exit in all cases. (Bug#1989)
Creating a table in an InnoDB database with a column name that
matched the name of an internal InnoDB column (including
DB_ROW_ID, DB_TRX_ID,
DB_ROLL_PTR and
DB_MIX_ID) would cause a crash. MySQL now
returns error 1005 (cannot create table) with
errno set to -1. (Bug#18934)
On Windows, some names such as nul,
prn, and aux could not
be used as filenames because they are reserved as device
names. These are now allowable names in MySQL. They are
encoded by appending @@@ to the name when
the server creates the corresponding file or directory. This
occurs on all platforms for portability of the corresponding
database object between platforms. (Bug#17870)
Added the REFERENTIAL_CONSTRAINTS table to
INFORMATION_SCHEMA. It provides information
about foreign keys.
Added --debug option to Instance Manager.
Added the have_dynamic_loading system
variable that indicates whether the server supports dynamic
loading of plugins.
Added the sql_big_selects system variable
to the output of SHOW VARIABLES.
You must now have the DROP privilege to
drop table partitions. (Bug#17139)
NDB Cluster: It is now possible to perform
a partial start of a cluster. That is, it is now possible to
bring up the cluster without running ndbd --initial on
all configured data nodes first. (Bug#18606)
NDB Cluster: It is now possible to restore
a Cluster backup between big-endian and little-endian
machines. (Bug#19255)
NDB Cluster: It is now possible to install
MySQL with Cluster support to a non-default location and
change the search path for font description files using either
the --basedir or
--character-sets-dir options. (Previously in
MySQL 5.1, ndbd searched only the default
path for character sets.)
In result set metadata, the
MYSQL_FIELD.length value for
BIT columns now is reported in number of
bits. For example, the value for a BIT(9)
column is 9. (Formerly, the value was related to number of
bytes.) (Bug#13601)
Added the KEY_BLOCK_SIZE table option and
index option. This can be used in CREATE
TABLE, ALTER TABLE, and
CREATE INDEX statements to provide a hint
to the storage engine about the size to use for index key
blocks. The engine is allowed to change the value if
necessary.
Bugs fixed:
Security fix: A malicious
client, using specially crafted invalid login or
COM_TABLE_DUMP packets was able to read
uninitialized memory, which potentially, though unlikely in
MySQL, could have led to an information disclosure.
(CVE-2006-1516, CVE-2006-1517) Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it> for finding and
reporting this bug.
Security fix: A malicious
client, using specially crafted invalid
COM_TABLE_DUMP packets was able to trigger
an exploitable buffer overflow on the server. (CVE-2006-1518)
Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it> for finding and
reporting this bug.
NDB Cluster (Replication): Using the
--binlog-do-db option caused problems with
CREATE TABLE on the cluster acting as the
replication master. (Bug#19492)
NDB Cluster: Some queries having a
WHERE clause of the form c1=val1
OR c2 LIKE 'val2' were not evaluated correctly. (Bug
# 17421)
NDB Cluster: Repeated use of the
SHOW and ALL STATUS
commands in the ndb_mgm client could cause
the mgmd process to crash. (Bug#18591)
NDB Cluster: An issue with
ndb_mgmd prevented more than 27
mysqld processes from connecting to a
single cluster at one time. (Bug#17150)
Running myisampack followed by
myisamchk with the
--unpack option would corrupt the
auto_increment key. (Bug#12633)
A view definition that referred to an alias in the
HAVING clause could be saved in the
.frm file with the alias replaced by the
expression that it referred to, causing failure of subsequent
SELECT * FROM
statements.
(Bug#19573)
view_name
A compatibility issue with NPTL (Native POSIX Thread Library)
on Linux could result in a deadlock with FLUSH TABLES
WITH READ LOCK under some conditions. (Bug#20048)
MyISAM table deadlock was possible if one
thread issued a LOCK TABLES request for
write locks and then an administrative statement such as
OPTIMIZE TABLE, if between the two
statements another client meanwhile issued a multiple-table
SELECT for some of the locked tables. (Bug#16986)
The patch for Bug#17164 introduced the problem that some outer joins were incorrectly converted to inner joins. (Bug#19816)
A NUL byte within a comment in a statement
string caused the rest of the string not to be written to the
query log, allowing logging to be bypassed. (CVE-2006-0903)
(Bug#17667)
NDB Cluster: mysqld
could crash when attempting an update if the cluster had
failed previously. (Bug#18798)
mysql-test-run.pl started
NDB even for test cases that didn't need
it. (Bug#19083)
Selecting from a view that used GROUP BY on
a non-constant temporal interval (such as
DATE(
could cause a server crash. (Bug#19490)
col) + INTERVAL
TIME_TO_SEC(col) SECOND
An outer join of two views that was written using {
OJ ... } syntax could cause a server crash. (Bug#19396)
mysql displayed NULL for
strings that are empty or contain only spaces. (Bug#19564)
A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug#17379, Bug#18940)
SELECT DISTINCT queries sometimes returned
only the last row. (Bug#18068)
Eliminated some memory corruption problems that resultsd in
double free or corruption errors and a
server crash. (Bug#19154)
Use of CONVERT_TZ() in a stored function or
trigger (or in a stored procedure called from a stored
function or trigger) caused an error. (Bug#11081)
Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug#14292)
MySQL-shared-compat-5.1.9-0.i386.rpm
incorrectly depended on glibc 2.3 and could
not be installed on a glibc 2.2 system.
(Bug#16539)
Updates to a MEMORY table caused the size
of BTREE indexes for the table to increase.
(Bug#18160)
REPAIR TABLE did not restore the length for
packed keys in tables created under MySQL 4.x. (Bug#17810)
The parser leaked memory when its stack needed to be extended. (Bug#18930)
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost. (Bug#10405)
Use of --default-storage-engine=innodb
resulted in an error with the server reporting that
InnoDB was an unknown table type. (Bug#16691)
Executing a CREATE EVENT statement could
cause 100% CPU usage. (Bug#19170)
After calling FLUSH STATUS, the
max_used_connections variable did not
increment for existing connections and connections which use
the thread cache. (Bug#15933)
MySQL would not compile on Linux distributions that use the tinfo library. (Bug#18912)
An issue with file handling in the partitioning code could cause mysqld to crash when started and then stopped within a very short period of time. (Bug#19313)
NDB Cluster (Replication): When taking part
in Cluster replication of tables containing
BLOB columns, mysqld
falsely reported a large memory leak in the replication
buffers when there was none. (Bug#19247)
NDB Cluster: Stopping multiple nodes could
cause node failure handling not to be completed. (Bug#19039)
NDB Cluster: A simultaneous DROP
TABLE and table update operation utilising a table
scan could trigger a node failure. (Bug#18597)
NDB Cluster: ndbd could
sometimes fail to start with the error Node failure
handling not completed following a graceful
restart. (Bug#18550)
NDB Cluster: Backups could fail for large
clusters with many tables, where the number of tables
approached MaxNoOfTables. (Bug#17607)
NDB Cluster: A 5.1.6 or newer server did
not read local checkpoints recorded by any other 5.1 version,
thus preventing a system restart following an upgrade. (Bug#19333)
NDB Cluster: Trying to restore the
apply_status table from a 5.0 cluster
backup failed on a 5.1 server. (Bug#18935)
NDB Cluster (Disk Data): CREATE
LOGFILE GROUP accepted values other than
NDB or NDBCLUSTER in the
ENGINE clause. (Bug#18604)
NDB Cluster (Disk Data): Omitting the
required ENGINE clause from a
CREATE LOGFILE GROUP or CREATE
TABLESPACE statement caused the server to crash. An
appropriate error message is now returned instead. (Bug#18603)
NDB Cluster: mysqldump
included in its output data from the internal
cluster database. (Bug#17840)
Event-creation statements enclosed in multi-line comments
using /*! syntax were not parsed correctly. (Bug#18078)
version_number
... */
Within a trigger, CONNECTION_ID() did not
return the connection ID of the thread that caused the trigger
to be activated. (Bug#16461)
mysqltest incorrectly interpreted some
ER_ error
names given in the xxxerror command. (Bug#18495)
For single-SELECT union constructs of the
form (SELECT ... ORDER BY
order_list1 [LIMIT
n]) ORDER BY
order_list2, the ORDER
BY lists were concatenated and the
LIMIT clause was ignored. (Bug#18767)
Logging to the mysql.general_log and
mysql.slow_log tables did not work for
Windows builds because the CSV storage
engine was unavailable. The CSV engine now
is enabled in Windows builds. (Bug#17368)
LOAD DATA FROM MASTER would fail when
trying to load the INFORMATION_SCHEMA
database from the master, because the
INFORMATION_SCHEMA system database would
already exist on the slave. (Bug#18607)
The binary log would create an incorrect
DROP query when creating temporary tables
during replication. (Bug#17263)
CREATE VIEW statements would not be
replicated to the slave if the
--replicate-wild-ignore-table rule was
enabled. (Bug#18715)
In mysqltest, --sleep=0
had no effect. Now it correctly causes
sleep commands in test case files to sleep
for 0 seconds. (Bug#18312)
Attempting to set the default value of an
ENUM or SET column to
NULL caused a server crash. (Bug#19145)
Index corruption could occur in cases when
key_cache_block_size was not a multiple of
myisam_block_size (for example, with
key_cache_block_size=1536 and
myisam_block_size=1024). (Bug#19079)
The sql_big_selects system variable was not
displayed by SHOW VARIABLES. (Bug#17849)
The sql_notes and
sql_warnings system variables were not
always displayed correctly by SHOW
VARIABLES (for example, they were displayed as
ON after being set to
OFF). (Bug#16195)
LAST_INSERT_ID() in a stored function or
trigger returned zero. . (Bug#15728)
Use of CONVERT_TZ() in a view definition
could result in spurious syntax or access errors. (Bug#15153)
The system_time_zone and
version_* system variables could not be
accessed via SELECT
@@ syntax. (Bug#12792, Bug#15684)
var_name
Conversion of a number to a CHAR UNICODE
string returned an invalid result. (Bug#18691)
Some fast ALTER TABLE operations (requiring
no temporary table) did not work for all tables. (Bug#19011)
DELETE and UPDATE
statements that used large NOT IN
( clauses
could use large amounts of memory. (Bug#15872)
value_list)
Prevent recursive views caused by using RENAME
TABLE on a view after creating it. (Bug#14308)
A LOCK TABLES statement that failed could
cause MyISAM not to update table statistics
properly, causing a subsequent CHECK TABLE
to report table corruption. (Bug#18544)
A failed ALTER TABLE operation could fail
to clean up a temporary .frm file. (Bug#18129)
For a reference to a non-existent stored function in a stored
routine that had a CONTINUE handler, the
server continued as though a useful result had been returned,
possibly resulting in a server crash. (Bug#18787)
InnoDB did not use a consistent read for
CREATE ... SELECT when
innodb_locks_unsafe_for_binlog was set.
(Bug#18350)
InnoDB could read a delete mark from its
system tables incorrectly. (Bug#19217)
myisamchk and
myisam_ftdump should allow either table
names or .MYI filenames as arguments, but
allowed only table names. (Bug#19220)
DROP DATABASE did not drop stored routines
associated with the database if the database name was longer
than 21 characters. (Bug#18344)
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code. (Bug#13621)
Executing SELECT on a large table that had
been compressed within myisampack could
cause a crash. (Bug#17917)
NDB Cluster (NDBAPI): Passing a nonexistent
index name to
NdbIndexScanOperation::setBound() caused a
segmentation fault. (Bug#19088)
ALTER TABLE ... REBUILD PARTITION returned
an inaccurate error message. (Bug#16819)
InnoDB: A DELETE
followed by an INSERT and then by an
UPDATE on a partitioned
InnoDB table caused subsequent queries to
return incorrect results. (Bug#17992)
NDB Cluster: A table insert or update of
more than 128 bytes of data in a 4-replica Cluster could cause
a node to crash. (Bug#18622)
NDB Cluster (Disk Data): Concurrent table
schema operations and operations on log files groups,
tablespaces, data files, or undofiles could lead to Cluster
node failures. (Bug#18575)
NDB Cluster: An issue with replication
caused a mysqld connected to a replicated
cluster to crash when entering single user mode. (Bug#18535)
Successive ALTER TABLE ... DROP PARTITION
statements on the same subpartitioned table could eventually
cause the server to crash. (Bug#18962)
NDB Cluster: When attempting to create an
index on a BIT or BLOB
column, Error 743: Unsupported character set in
table or index was returned instead of
Error 906: Unsupported attribute type in
index.
NDB Cluster: The Cluster binlog
mysqld accepted updates even though the
binary log was not set up, which could lead to updates missing
from the binary log. (Bug#18932)
NDB Cluster: Concurrent
INSERT and ROLLBACK
statements from different connections could cause node
failures. (Bug#19245)
NDB Cluster (Disk Data): Running an
INSERT and a DELETE on a
Disk Data table in the same transaction could cause a
deadlock. (Bug#19244)
NDB Cluster (Disk Data): Issuing a
CREATE LOGFILE GROUP statement during the
drop of an NDB table would cause database
corruption. (Bug#19141)
NDB Cluster: ndb_restore
failed to restore a backup made from a 5.0 cluster to a 5.1
cluster. (Bug#18210)
NDB Cluster: Adding an index to an unsigned
integer column did not work correctly. (Bug#18133)
NDB Cluster: A SELECT
from an NDB table with ORDER BY
and a
indexed_columnLIMIT clause would fail following
ALTER TABLE. (Bug#18094)
NDB Cluster: Performing multiple
ALTER TABLE operations on the same NDB
table from different mysqld processes in
the same cluster led to schema versioning errors when trying
to access the table again following the restart of one of the
mysqld processes. (Bug#16445)
NDB Cluster: Starting
mysqld without --log-bin
caused DDL statements on NDB tables to time
out. (Bug#19214)
NDB Cluster: Fragment IDs were not being
logged correctly, causing ndb_restore_log
to fail. (Bug#18594)
Casting a string to DECIMAL worked, but
casting a trimmed string (using LTRIM() or
RTRIM()) resulted in loss of decimal
digits. (Bug#17043)
NDB Cluster (Replication): Delete and
update of rows in a table without a primary key failed on the
slave. (Bug#17400)
NDB Cluster: On slow networks or CPUs, the
management client SHOW command could
sometimes erroneously show all data nodes as being master
nodes belonging to nodegroup 0. (Bug#15530)
The XPath string-length() function was not
implemented for use with ExtractValue().
(Bug#16319)
Fix the way that Instance Manager finds the version number of instances, so that it works properly when the executable name isn't the same as what the Instance Manager launched (such as when wrapping a libtool-wrapped executable from the source tree). (Bug#19059)
The server attempted to flush uninitialized log tables during
SIGHUP processing, causing a crash. (Bug#18848)
If the second or third argument to BETWEEN
was a constant expression such as '2005-09-01 -
INTERVAL 6 MONTH and the other two arguments were
columns, BETWEEN was evaluated incorrectly.
(Bug#18618)
If the first argument to BETWEEN was a
DATE or TIME column of a
view and the other arguments were constants,
BETWEEN did not perform conversion of the
constants to the appropriate temporary type, resulting in
incorrect evaluation. (Bug#16069)
ExtractValue function did not return
character data within <![CDATA[]]> as
expected. (Bug#18285)
Server and clients ignored the --sysconfdir
option that was passed to configure. (Bug#15069)
It was possible to create a
RANGE-partitioned table with a partition
defined using the clause VALUES LESS THAN
(NULL), even though such a partition could never
contain any values whatsoever. (Bug#18752)
Running an ALTER TABLE on a partitioned
table simultaneously experiencing a high number of concurrent
DML statements could crash the server. (Bug#18572)
It was possible to use trailing spaces in the names of partitions and subpartitions. Attempting to do so now raises the error Incorrect partition name. (Bug#17973)
LIKE searches failed on a
CHAR column used as the partitioning column
of a table partitioned by KEY. (Bug#17946)
If the WHERE condition of a query contained
an OR-ed FALSE term, the
set of tables whose rows cannot serve for null-complements in
outer joins was determined incorrectly. This resulted in
blocking possible conversions of outer joins into joins by the
optimizer for such queries. (Bug#17164)
The ExtractValue() function failed with a
syntax error when the XPath expression used special characters
such as Ñ (「N-tilde」).
(Bug#16233)
Inserts failed with duplicate key errors on a table
partitioned using an AUTO_INCREMENT column
for the partitioning key. (Bug#18552, Bug#18753)
Delimited identifiers for partitions were not being treated the same as delimited identifiers for other database objects (such as tables and columns) with regard to allowed characters. (Bug#18750)
A query on a table partitioned or subpartitioned by
HASH did not display all results when using
a WHERE condition involving a column used
in the hashing expression. (Bug#18423, Bug#18329)
If the server were built without partition support, it was
possible to run partitioning-related statements with no errors
or warnings, even though these statements would have no
effect. Now such statements are disallowed unless the server
has been compiled using the
--with-partition option. (Bug#15561)
NDB Cluster: In a 2-node cluster with a
node failure, restarting the node with a low value for
StartPartialTimeout could cause the cluster
to come up partitioned (「split-brain」 issue).
(Bug#16447)
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#18612)
NDB Cluster: On systems with multiple
network interfaces, data nodes would get 「stuck」
in startup phase 2 if the interface connecting them to the
management server was working on node startup while the
interface interconnecting the data nodes experienced a
temporary outage. (Bug#15695)
NDB Cluster: Unused open handlers for
tables in which the metadata had changed were not properly
closed. This could result in stale results from Cluster tables
following an ALTER TABLE. (Bug#13228)
NDB Cluster: Uninitialized internal
variables could lead to unexpected results. (Bug#11033, Bug#11034)
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug#16504)
A recent change caused the mysql client not
to display NULL values correctly and to
display numeric columns left-justified rather than
right-justified. The problems have been corrected. (Bug#18265)
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
enabled. (Bug#15758)
InnoDB: ALTER TABLE to
add or drop a foreign key for an InnoDB
table had no effect. (Bug#18477)
NDB Cluster: Attempting to create an index
using multiple columns on an explicitly partitioned table in a
replicated Cluster database could cause the master
mysqld process to crash. (Bug#18284)
NDB Cluster: Queries using ORDER
BY failed against a
pkNLIST-partitioned Cluster table having a
multi-column primary key, where pkN
represents one of the columns making up the primary key. (Bug#18598)
Updating a field value when also requesting a lock with
GET_LOCK() would cause slave servers in a
replication environment to terminate. (Bug#17284)
