オリジナル版:http://dev.mysql.com/doc/refman/4.1/en/news-4-1-22.html
最も普及しているオープンソースデータベース管理システムであるMySQL 4.1.22がリリースされました。コミュニティエディションは、http://dev.mysql.com/downloads/とミラーサイトのダウンロード・ページから、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。
ご意見、バグレポート、バグ修正、パッチ、その他の情報がございましたら、
http://forge.mysql.com/wiki/Contributingをご利用ください。
すべてのミラーサイトが現在、最新であるとは限らないことに注意してください。
あるミラーサイトでこのバージョンを見つけることができない場合は、再度確認を行うか、あるいは別のダウンロード・サイトを選択してください。
これは、MySQL 4.1製品系列における最終の計画されたバイナリのバグ修正リリースです。MySQL製品のLife Cycle policyとしましては、バージョン4.1のactive supportは2006年12月31日に終了します。しかし、MySQL製品Life Cycle policy(URLはhttp://www.mysql.com/company/legal/lifecycle/)に記載していますが、MySQL Enterprise経由で、さらに3年間、extended lifecycle supportを利用できます。MySQL Enterpriseについてのより詳細な情報および、MonitoringとAdvisory Serviceのデモ内容についてはhttp://www.mysql.com/products/enterprise/をご参照ください。
MySQLサーバの最新バージョン情報については、http://dev.mysql.com/downloads/mysql/5.0.htmlをご参照ください。
このセクションでは、その前の公式のMySQLリリース以来適用している、変更とバグ修正の全てを記録しています。使用するバージョンと特徴に関連した修正に関するより良質な個別の変更情報を受け取りたい場合は、MySQLネットワークにご登録下さい(商用のMySQL提供です。)より詳細については、http://www.mysql.com/network/advisors.htmlをご参照ください。
以下は、追加または変更された機能です。
Functionality added or changed:
* The mysqld manpage has been reclassified from volume 1 to
volume 8. (Bug#21220:http://bugs.mysql.com/21220)
* MySQL now can do stack dumps on x86_64 and i386/NPTL systems.
(Bug#21250:http://bugs.mysql.com/21250)
* The LOAD DATA FROM MASTER and LOAD TABLE FROM MASTER
statements are deprecated. See Section 13.6.2.2, "LOAD DATA
FROM MASTER Syntax," for recommended alternatives.
(Bug#18822:http://bugs.mysql.com/18822,
Bug#9125:http://bugs.mysql.com/9125,
Bug#12187:http://bugs.mysql.com/12187,
Bug#14399:http://bugs.mysql.com/14399,
Bug#15025:http://bugs.mysql.com/15025,
Bug#20596:http://bugs.mysql.com/20596)
* A warning now is issued if the client attempts to set the
SQL_LOG_OFF variable without the SUPER privilege.
(Bug#16180:http://bugs.mysql.com/16180)
Bugs fixed:
* Deleting entries from a large MyISAM index could cause index
corruption when it needed to shrink. Deletes from an index can
happen when a record is deleted, when a key changes and must
be moved, and when a key must be un-inserted because of a
duplicate key. This can also happen in REPAIR TABLE when a
duplicate key is found and in myisamchk when sorting the
records by an index. (Bug#22384:http://bugs.mysql.com/22384)
* Setting myisam_repair_threads caused any repair operation on a
MyISAM table to fail to update the cardinality of indexes,
instead making them always equal to 1.
(Bug#18874:http://bugs.mysql.com/18874)
* Within a prepared statement, SELECT (COUNT(*) = 1) (or similar
use of other aggregate functions) did not return the correct
result for statement re-execution.
(Bug#21354:http://bugs.mysql.com/21354)
* DELETE IGNORE could hang for foreign key parent deletes.
(Bug#18819:http://bugs.mysql.com/18819)
* Redundant binary log LAST_INSERT_ID events could be generated;
LAST_INSERT_ID(expr) didn't return the value of expr;
LAST_INSERT_ID() could return the value generated by the
current statement if the call happens after value generation,
as in:
CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
(Bug#21726:http://bugs.mysql.com/21726)
* FROM_UNIXTIME() did not accept arguments up to POWER(2,31)-1,
which it had previously.
(Bug#9191:http://bugs.mysql.com/9191)
* A literal string in a GROUP BY clause could be interpreted as
a column name. (Bug#14019:http://bugs.mysql.com/14019)
* WITH ROLLUP could group unequal values.
(Bug#20825:http://bugs.mysql.com/20825)
* LIKE searches failed for indexed utf8 character columns.
(Bug#20471:http://bugs.mysql.com/20471)
* The optimizer sometimes mishandled R-tree indexes for GEOMETRY
data types, resulting in a server crash.
(Bug#21888:http://bugs.mysql.com/21888)
* Entries in the slow query log could have an incorrect
Rows_examined value. (Bug#12240:http://bugs.mysql.com/12240)
* Insufficient memory (myisam_sort_buffer_size) could cause a
server crash for several operations on MyISAM tables: repair
table, create index by sort, repair by sort, parallel repair,
bulk insert. (Bug#23175:http://bugs.mysql.com/23175)
* REPAIR TABLE ... USE_FRM could cause a server crash or hang
when used for a MyISAM table in a database other than the
default database. (Bug#22562:http://bugs.mysql.com/22562)
* OPTIMIZE TABLE with myisam_repair_threads > 1 could result in
MyISAM table corruption.
(Bug#8283:http://bugs.mysql.com/8283)
* The result for CAST() when casting a value to UNSIGNED was
limited to the maximum signed BIGINT value
(9223372036854775808), not the maximum unsigned value
(18446744073709551615). (Bug#8663:http://bugs.mysql.com/8663)
* For multiple-table UPDATE statements, storage engines were not
notified of duplicate-key errors.
(Bug#21381:http://bugs.mysql.com/21381)
* Successive invocations of a COUNT(*) query containing a join
on two MyISAM tables and a WHERE clause of the form WHERE
(table1.column1 = table2.column2) OR table2.column2 IS NULL
yielded different results.
(Bug#21019:http://bugs.mysql.com/21019)
* Using ALTER TABLE to add an ENUM column with an enumeration
value containing 0xFF caused the name of the first table
column to be lost. (Bug#20922:http://bugs.mysql.com/20922)
* PROCEDURE ANALYSE() returned incorrect values of M FLOAT(M, D)
and DOUBLE(M, D). (Bug#20305:http://bugs.mysql.com/20305)
* A query that used GROUP BY and an ALL or ANY quantified
subquery in a HAVING clause could trigger an assertion
failure. (Bug#21853:http://bugs.mysql.com/21853)
* For an ENUM column that used the ucs2 character set, using
ALTER TABLE to modify the column definition caused the default
value to be lost. (Bug#20108:http://bugs.mysql.com/20108)
* Creating a TEMPORARY table with the same name as an existing
table that was locked by another client could result in a lock
conflict for DROP TEMPORARY TABLE because the server
unnecessarily tried to acquire a name lock.
(Bug#21096:http://bugs.mysql.com/21096)
* Incorporated some portability fixes into the definition of
__attribute__ in my_global.h.
(Bug#2717:http://bugs.mysql.com/2717)
* In the package of pre-built time zone tables that is available
for download athttp://dev.mysql.com/downloads/timezones.html,
the tables now explicitly use the utf8 character set so that
they work the same way regardless of the system character set
value. (Bug#21208:http://bugs.mysql.com/21208)
* The build process incorrectly tried to overwrite
sql/lex_hash.h. This caused the build to fail when using a
shadow link tree pointing to original sources that were owned
by another account. (Bug#18888:http://bugs.mysql.com/18888)
* Execution of a prepared statement that uses an IN subquery
with aggregate functions in the HAVING clause could cause a
server crash. (Bug#22085:http://bugs.mysql.com/22085)
* Selecting from a MERGE table could result in a server crash if
the underlying tables had fewer indexes than the MERGE table
itself. (Bug#21617:http://bugs.mysql.com/21617,
Bug#22937:http://bugs.mysql.com/22937)
* SUBSTR() results sometimes were stored improperly into a
temporary table when multi-byte character sets were used.
(Bug#20204:http://bugs.mysql.com/20204)
* Parallel builds occasionally failed on Solaris.
(Bug#16282:http://bugs.mysql.com/16282)
* The source distribution failed to compile when configured with
the --without-geometry option.
(Bug#12991:http://bugs.mysql.com/12991)
* The server returns a more informative error message when it
attempts to open a MERGE table that has been defined to use
non-MyISAM tables. (Bug#10974:http://bugs.mysql.com/10974)
* On Mac OS X, zero-byte read() or write() calls to an
SMB-mounted filesystem could return a non-standard return
value, leading to data corruption. Now such calls are avoided.
(Bug#12620:http://bugs.mysql.com/12620)
* For INSERT ... ON DUPLICATE KEY UPDATE, use of
VALUES(col_name) within the UPDATE clause sometimes was
handled incorrectly. (Bug#21555:http://bugs.mysql.com/21555)
* Table aliases in multiple-table DELETE statements sometimes
were not resolved. (Bug#21392:http://bugs.mysql.com/21392)
* EXPORT_SET() did not accept arguments with coercible character
sets. (Bug#21531:http://bugs.mysql.com/21531)
* The --collation-server server option was being ignored. With
the fix for this problem, if you choose a non-default
character set with --character-set-server, you should also use
--collation-server to specify the collation.
(Bug#15276:http://bugs.mysql.com/15276)
* A subquery that uses an index for both the WHERE and ORDER BY
clauses produced an empty result.
(Bug#21180:http://bugs.mysql.com/21180)
* Queries containing a subquery that used aggregate functions
could return incorrect results.
(Bug#16792:http://bugs.mysql.com/16792)
* The MD5(), SHA1(), and ENCRYPT() functions should return a
binary string, but the result sometimes was converted to the
character set of the argument. MAKE_SET() and EXPORT_SET() now
use the correct character set for their default separators,
resulting in consistent result strings which can be coerced
according to normal character set rules.
(Bug#20536:http://bugs.mysql.com/20536)
* Use of myisampack or myisamchk on a compressed MyISAM table
with FULLTEXT indexing resulted in table corruption.
(Bug#19702:http://bugs.mysql.com/19702)
* The optimizer could produce an incorrect result after AND with
collations such as latin1_german2_ci, utf8_czech_ci, and
utf8_lithianian_ci. (Bug#9509:http://bugs.mysql.com/9509)
* character_set_results can be NULL to signify "no conversion,"
but some code did not check for NULL, resulting in a server
crash. (Bug#21913:http://bugs.mysql.com/21913)
* The myisam_stats_method variable was mishandled when set from
an option file or on the command line.
(Bug#21054:http://bugs.mysql.com/21054)
* libmysqld produced some warnings to stderr which could not be
silenced. These warnings now are suppressed.
(Bug#13717:http://bugs.mysql.com/13717)
* If a column definition contained a character set declaration,
but a DEFAULT value began with an introducer, the introducer
character set was used as the column character set.
(Bug#20695:http://bugs.mysql.com/20695)
* Some Linux-x86_64-icc packages (of previous releases)
mistakenly contained 32-bit binaries. Only ICC builds are
affected, not gcc builds. Solaris and FreeBSD x86_64 builds
are not affected. (Bug#22238:http://bugs.mysql.com/22238)
* For TIME_FORMAT(), the %H and %k format specifiers can return
values larger than two digits (if the hour is greater than
99), but for some query results that contained three-character
hours, column values were truncated.
(Bug#19844:http://bugs.mysql.com/19844)
* For table-format output, mysql did not always calculate
columns widths correctly for columns containing multi-byte
characters in the column name or contents.
(Bug#17939:http://bugs.mysql.com/17939)
* Views could not be updated within a stored function or
trigger. (Bug#17591:http://bugs.mysql.com/17591)
* Usernames have a maximum length of 16 characters (even if they
contain multi-byte characters), but were being truncated to 16
bytes. (Bug#20393:http://bugs.mysql.com/20393)
* Database and table names have a maximum length of 64
characters (even if they contain multi-byte characters), but
were being truncated to 64 bytes.
(Bug#21432:http://bugs.mysql.com/21432)
* When using tables created under MySQL 4.1 with a 5.0 server,
if the tables contained VARCHAR columns, for some queries the
metadata sent to the client could have an empty column name.
(Bug#14897:http://bugs.mysql.com/14897)
* On 64-bit systems, use of the cp1250 character set with a
primary key column in a LIKE clause caused a server crash for
patterns having letters in the range 128..255.
(Bug#19741:http://bugs.mysql.com/19741)
* A subquery in the WHERE clause of the outer query and using IN
and GROUP BY returned an incorrect result.
(Bug#16255:http://bugs.mysql.com/16255)
* COUNT(*) queries with ORDER BY and LIMIT could return the
wrong result. (Bug#21787:http://bugs.mysql.com/21787)
Note: This problem was introduced by the fix for
Bug#9676:http://bugs.mysql.com/9676, which limited the rows
stored in a temporary table to the LIMIT clause. This
optimization is not applicable to non-group queries with
aggregate functions. The current fix disables the optimization
in such cases.
* Running SHOW MASTER LOGS at the same time as binary log files
were being switched would cause mysqld to hang.
(Bug#21965:http://bugs.mysql.com/21965)
* Adding ORDER BY to a SELECT DISTINCT(expr) query could produce
incorrect results. (Bug#21456:http://bugs.mysql.com/21456)
* For InnoDB tables, the server could crash when executing NOT
IN () subqueries. (Bug#21077:http://bugs.mysql.com/21077)
* mysqld --flush failed to flush MyISAM table changes to disk
following an UPDATE statement for which no updated column had
an index. (Bug#20060:http://bugs.mysql.com/20060)
* The --with-collation option was not honored for client
connections. (Bug#7192:http://bugs.mysql.com/7192)
* NDB Cluster: Attempting to create an NDB table on a MySQL with
an existing non-Cluster table with the same name in the same
database could result in data loss or corruption. MySQL now
issues a warning when a SHOW TABLES or other statement causing
table discovery finds such a table.
(Bug#21378:http://bugs.mysql.com/21378)
* NDB Cluster (NDB API): Attempting to read a nonexistent tuple
using Commit mode for NdbTransaction::execute() caused node
failures. (Bug#22672:http://bugs.mysql.com/22672)
* NDB Cluster: Restoring a cluster failed if there were any
tables with 128 or more columns.
(Bug#23502:http://bugs.mysql.com/23502)
* NDB Cluster: INSERT ... ON DUPLICATE KEY UPDATE on an NDB
table could lead to deadlocks and memory leaks.
(Bug#23200:http://bugs.mysql.com/23200)
* NDB Cluster: If a node restart could not be performed from the
REDO log, no node takeover took place. This could cause
partitions to be left empty during a system restart.
(Bug#22893:http://bugs.mysql.com/22893)
* NDB Cluster: Multiple node restarts in rapid succession could
cause a system restart to fail
(Bug#22892:http://bugs.mysql.com/22892), or induce a race
condition (Bug#23210:http://bugs.mysql.com/23210).
* NDB Cluster: The node recovery algorithm was missing a version
check for tables in the ALTER_TABLE_COMMITTED state (as
opposed to the TABLE_ADD_COMMITTED state, which has the
version check). This could cause inconsistent schemas across
nodes following node recovery.
(Bug#21756:http://bugs.mysql.com/21756)
* NDB Cluster: The output for the --help option used with NDB
executable programs (ndbd, ndb_mgm, ndb_restore, ndb_config,
and so on) referred to the Ndb.cfg file, instead of my.cnf.
(Bug#21585:http://bugs.mysql.com/21585)
* NDB Cluster: The ndb_mgm management client did not set the
exit status on errors, always returning 0 instead.
(Bug#21530:http://bugs.mysql.com/21530)
* NDB Cluster: Cluster logs were not rotated following the first
rotation cycle. (Bug#21345:http://bugs.mysql.com/21345)
* NDB Cluster: When inserting a row into an NDB table with a
duplicate value for a non-primary unique key, the error issued
would reference the wrong key.
(Bug#21072:http://bugs.mysql.com/21072)
* NDB Cluster: Under some circumstances, local checkpointing
would hang, keeping any unstarted nodes from being started.
(Bug#20895:http://bugs.mysql.com/20895)
* NDB Cluster: In some cases where SELECT COUNT(*) from an NDB
table should have yielded an error, MAX_INT was returned
instead. (Bug#19914:http://bugs.mysql.com/19914)
* NDB Cluster: ndb_restore did not always make clear that it had
recovered successfully from temporary errors while restoring a
cluster backup. (Bug#19651:http://bugs.mysql.com/19651)
* NDB Cluster: A problem with takeover during a system restart
caused ordered indexes to be rebuilt incorrectly.
(Bug#15303:http://bugs.mysql.com/15303)
* NDB Cluster: The ndb_mgm program was included in both the
MySQL-ndb-tools and MySQL-ndb-management RPM packages,
resulting in a conflict if both were installed. Now ndb_mgm is
included only in MySQL-ndb-tools.
(Bug#21058:http://bugs.mysql.com/21058)
* NDB Cluster: ndb_size.pl and ndb_error_reporter were missing
from RPM packages. (Bug#20426:http://bugs.mysql.com/20426)
* NDB Cluster: Setting TransactionDeadlockDetectionTimeout to a
value greater than 12000 would cause scans to deadlock, time
out, fail to release scan records, until the cluster ran out
of scan records and stopped processing.
(Bug#21800:http://bugs.mysql.com/21800)
* NDB Cluster: The server provided a non-descriptive error
message when encountering a fatally corrupted REDO log.
(Bug#21615:http://bugs.mysql.com/21615)
* NDB Cluster: A partial rollback could lead to node restart
failures. (Bug#21536:http://bugs.mysql.com/21536)
* NDB Cluster: The failure of a unique index read due to an
invalid schema version could be handled incorrectly in some
cases, leading to unpredictable results.
(Bug#21384:http://bugs.mysql.com/21384)
* NDB Cluster: In a cluster with more than 2 replicas, a manual
restart of one of the data nodes could fail and cause the
other nodes in its nodegroup to shut down.
(Bug#21213:http://bugs.mysql.com/21213)
* NDB Cluster: When the redo buffer ran out of space, a Pointer
too large error was raised and the cluster could become
unusable until restarted with --initial.
(Bug#20892:http://bugs.mysql.com/20892)
* NDB Cluster: In some situations with a high disk-load, writing
of the redo log could hang, causing a crash with the error
message GCP STOP detected.
(Bug#20904:http://bugs.mysql.com/20904)
* NDB Cluster: ndb_size.pl and ndb_error_reporter were missing
from RPM packages. (Bug#20426:http://bugs.mysql.com/20426)
* NDB Cluster: The server failed with a non-descriptive error
message when out of data memory.
(Bug#18475:http://bugs.mysql.com/18475)
* NDB Cluster: SELECT ... FOR UPDATE failed to lock the selected
rows. (Bug#18184:http://bugs.mysql.com/18184)
* NDB Cluster: Some queries involving joins on very large NDB
tables could crash the MySQL server.
(Bug#21059:http://bugs.mysql.com/21059)
* Character set collation was ignored in GROUP BY clauses.
(Bug#20709:http://bugs.mysql.com/20709)
* A query using WHERE column = constant OR column IS NULL did
not return consistent results on successive invocations. The
column in each part of the WHERE clause could be either the
same column, or two different columns, for the effect to be
observed. (Bug#21019:http://bugs.mysql.com/21019)
* A query using WHERE NOT (column < ANY (subquery)) yielded a
different result from the same query using the same column and
subquery with WHERE (column > ANY (subquery)).
(Bug#20975:http://bugs.mysql.com/20975)
* Using the extended syntax for TRIM() --- that is, TRIM(...
FROM ...) --- caused erroneous output from EXPLAIN EXTENDED
statements. (Bug#17526:http://bugs.mysql.com/17526)
* DELETE with WHERE condition on a BTREE-indexed column for a
MEMORY table deleted only the first matched row.
(Bug#9719:http://bugs.mysql.com/9719)
* For cross-database multiple-table UPDATE statements, a user
with all privileges for the default database could update
tables in another database for which the user did not have
UPDATE privileges. (Bug#7391:http://bugs.mysql.com/7391)
* mysql_install_db incorrectly had a blank first line.
(Bug#20721:http://bugs.mysql.com/20721)
* Under heavy load (executing more than 1024 simultaneous
complex queries), a problem in the code that handles internal
temporary tables could lead to writing beyond allocated space
and memory corruption.
(Bug#21206:http://bugs.mysql.com/21206)
* Multiple invocations of the REVERSE() function could return
different results. (Bug#18243:http://bugs.mysql.com/18243)
* Conversion of TIMESTAMP values between UTC and the local time
zone resulted in some values having the year 2069 rather than
1969. (Bug#16327:http://bugs.mysql.com/16327)
* Under certain circumstances, AVG(key_val) returned a value but
MAX(key_val) returned an empty set due to incorrect
application of MIN()/MAX() optimization.
(Bug#20954:http://bugs.mysql.com/20954)
* Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
(Bug#20792:http://bugs.mysql.com/20792)
* Using > ALL with subqueries that return no rows yielded
incorrect results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
(Bug#18503:http://bugs.mysql.com/18503)
* Using ANY with "non-table" subqueries such as SELECT 1 yielded
incorrect results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
(Bug#16302:http://bugs.mysql.com/16302)
* The use of WHERE col_name IS NULL in SELECT statements reset
the value of LAST_INSERT_ID() to zero.
(Bug#14553:http://bugs.mysql.com/14553)
* Use of the join cache in favor of an index for ORDER BY
operations could cause incorrect result sorting.
(Bug#17212:http://bugs.mysql.com/17212)
* libmysqld returned TEXT columns to the client as number of
bytes, not number of characters (which can be different for
multi-byte character sets).
(Bug#19983:http://bugs.mysql.com/19983)