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 xxx
error
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_column
LIMIT
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
pkN
LIST
-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)