2006.04.12

MySQL

MySQL 5.0.20がリリースされました。

オリジナル版:http://dev.mysql.com/doc/refman/5.0/en/news-5-0-20.html

最も普及しているオープンソースデータベース管理システムであるMySQL 5.0.20がリリースされました。コミュニティエディションは、http://dev.mysql.com/downloads/とミラーサイトのダウンロード・ページから、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。

すべてのミラーサイトが現在、最新であるとは限らないことに注意してください。
あるミラーサイトでこのバージョンを見つけることができない場合は、再度確認を行うか、あるいは別のダウンロード・サイトを選択してください。

これは最近の製品バージョンのバグ修正バージョンです。

このバージョンで解消された個々のバグに関するその他の詳細については、http://bugs.mysql.com/のバグデータベースを参照してください。

このセクションでは、その前の公式のMySQLリリース以来適用している、全ての変更とバグ修正を記録しています。使用するバージョンと特徴に関連した修正に関するより良質な個別の変更情報を受け取りたい場合は、MySQLネットワークにご登録下さい(商用のMySQL提供です。)より詳細については、http://www.mysql.com/network/advisors.htmlをご参照ください。
あなたのご意見をお待ちしています。

以下は、変更ログからのニュースです。

Functionality added or changed:

* InnoDB: The InnoDB storage engine now provides a descriptive error
  message if ibdata file information is omitted from my.cnf.
  (Bug #16827 (http://bugs.mysql.com/16827))
* The NDBCluster storage engine now supports INSERT IGNORE and REPLACE
  statements. Previously, these statements failed with an error.
  (Bug #17431 (http://bugs.mysql.com/17431))
* Builds for Windows, Linux, and Unix (except AIX) platforms now have
  SSL support enabled, in the server as well as in the client
  libraries. Because part of the SSL code is written in C++, this does
  introduce dependencies on the system's C++ runtime libraries in
  several cases, depending on compiler specifics.
  (Bug #18195 (http://bugs.mysql.com/18195))
* The syntax for CREATE PROCEDURE and CREATE FUNCTION statements now
  includes a DEFINER clause. The DEFINER value specifies the security
  context to be used when checking access privileges at routine
  invocation time if the routine has the SQL SECURITY DEFINER
  characteristic. See Section 17.2.1, "CREATE PROCEDURE and CREATE
  FUNCTION Syntax," for more information.
  When mysqldump is invoked with the --routines option, it now dumps
  the DEFINER value for stored routines.
  (http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html)

  Functionality added already in 5.0.19 (and documented),
  repeated here just as a reminder:
* Added the mysql_upgrade program that checks all tables for
  incompatibilities with the current version of MySQL Server and
  repairs them if necessary. This program should be run for each MySQL
  upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2,
  "mysql_upgrade --- Check Tables for MySQL Upgrade."
  (http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html)

Bugs fixed:

* Security Fix: Checks for permissions on database operations could
  be performed in a case-insensitive manner (a user with permissions
  on database MYDATABASE could by accident get permissions on database
  myDataBase), if the privilege data were still cached from a previous
  check. (Bug #17279 (http://bugs.mysql.com/17279))
* InnoDB: The LATEST FOREIGN KEY ERROR section in the output of SHOW
  INNODB STATUS was sometimes formatted incorrectly, causing problems
  with scripts that parsed the output of this statement.
  (Bug #16814 (http://bugs.mysql.com/16814))
* When using ORDER BY with a non-string column inside GROUP_CONCAT()
  the result's character set was converted to binary.
  (Bug #18281 (http://bugs.mysql.com/18281))
  See also Bug #14169 (http://bugs.mysql.com/14169).
* SELECT ... WHERE column LIKE 'A%' when column had a key and used the
  latin2_czech_cs collation.
  (Bug #17374 (http://bugs.mysql.com/17374))
* Complex queries with nested joins could cause a server crash.
  (Bug #18279 (http://bugs.mysql.com/18279))
* The server could deadlock under heavy load while writing to the
  binary log. (Bug #18116 (http://bugs.mysql.com/18116))
* A SELECT ... ORDER BY ... from a view defined using a function could
  crash the server. An example of such a view might be CREATE VIEW AS
  SELECT SQRT(c1) FROM t1. (Bug #18386 (http://bugs.mysql.com/18386))
* A DELETE using a subquery could crash the server.
  (Bug #18306 (http://bugs.mysql.com/18306))
* REPAIR TABLE, OPTIMIZE TABLE, and ALTER TABLE operations on
  transactional tables (or on tables of any type on Windows)
  could corrupt triggers associated with those tables.
  (Bug #18153 (http://bugs.mysql.com/18153))
* MyISAM: Performing a bulk insert on a table referenced by a trigger
  would crash the table. (Bug #17764 (http://bugs.mysql.com/17764))
* MyISAM: Keys for which the first part of the key was a CHAR or
  VARCHAR column using the UTF-8 character set and longer than 254
  bytes could become corrupted.
  (Bug #17705 (http://bugs.mysql.com/17705))
* Using ORDER BY intvar within a stored procedure (where intvar is an
  integer variable or expression) would crash the server.
  (Bug #16474 (http://bugs.mysql.com/16474))
  Note: The use of an integer i in an ORDER BY i clause for sorting
  the result by the i^th column is deprecated (and non-standard). It
  should not be used in new applications. See Section 13.2.7, "SELECT
  Syntax."
* Triggers created in MySQL 5.0.16 and earlier could not be dropped
  after upgrading the server to 5.0.17 or later.
  (Bug #15921 (http://bugs.mysql.com/15921))
* A SELECT using a function against a nested view would crash the
  server. (Bug #15683 (http://bugs.mysql.com/15683))
* NDB Cluster: Certain queries using ORDER BY ... ASC in the WHERE
  clause could return incorrect results.
  (Bug #17729 (http://bugs.mysql.com/17729))
* NDB Cluster: A timeout in the handling of an ABORT condition with
  more that 32 operations could yield a node failure.
  (Bug #18414 (http://bugs.mysql.com/18414))
* NDB Cluster: A node restart immediately following a CREATE TABLE
  would fail. Important: This fix supports 2-node Clusters only.
  (Bug #18385 (http://bugs.mysql.com/18385))
* NDB Cluster: In event of a node failure during a rollback, a "false"
  lock could be established on the backup for that node, which lock
  could not be removed without restarting the node.
  (Bug #18352 (http://bugs.mysql.com/18352))
* NDB Cluster: The cluster created a crashed replica of a table having
  an ordered index --- or when logging was not enabled, of a table
  having a table or unique index --- leading to a crash of the cluster
  following 8 successibe restarts.
  (Bug #18298 (http://bugs.mysql.com/18298))
* NDB Cluster: When replacing a failed master node, the replacement
  node could cause the cluster to crash from a buffer overflow if it
  had an excessively large amount of data to write to the cluster log.
  (Bug #18118 (http://bugs.mysql.com/18118))
* NDB Cluster: If a mysql or other client could not parse the result
  set returned from a mysqld process acting as an SQL node in a
  cluster, the client would crash instead of returning the appropriate
  error. For example, this could happen when the client attempted to
  use a character set was not available to the mysqld.
  (Bug #17380 (http://bugs.mysql.com/17380))
* NDB Cluster: Restarting nodes were allowed to start and join the
  cluster too early. (Bug #16772 (http://bugs.mysql.com/16772))
* If a row was inserted inside a stored procedure using the parameters
  passed to the procedure in the INSERT statement, the resulting
  binlog entry was not escaped properly.
  (Bug #18293 (http://bugs.mysql.com/18293))
* If InnoDB encountered a HA_ERR_LOCK_TABLE_FULL error and rolled-back
  a transaction, the transaction was still written to the binary log.
  (Bug #18283 (http://bugs.mysql.com/18283))
* Stored procedures that call UDFs and pass local string variables
  caused server crashes. (Bug #17261 (http://bugs.mysql.com/17261))
* Connecting to a server with a UCS2 default character set with a
  client using a non-UCS2 character set crashed the server.
  (Bug #18004 (http://bugs.mysql.com/18004))
* Loading of UDFs in a statically linked MySQL caused a server crash.
  UDF loading is now blocked if the MySQL server is statically linked.
  (Bug #11835 (http://bugs.mysql.com/11835))
* Views that incorporate tables from the INFORMATION_SCHEMA resulted
  in a server crash when queried.
  (Bug #18224 (http://bugs.mysql.com/18224))
* A SELECT
* query on an INFORMATION_SCHEMA table by a user with
  limited privileges resulted in a server crash.
  (Bug #18113 (http://bugs.mysql.com/18113))
* Attempting to access an InnoDB table after starting the server with
  --skip-innodb caused a server crash.
  (Bug #14575 (http://bugs.mysql.com/14575))
* InnoDB used table locks (not row locks) within stored functions.
  (Bug #18077 (http://bugs.mysql.com/18077))
* Replication slaves could not replicate triggers from older servers
  that included no DEFINER clause in the trigger definition. Now the
  trigger executes with the privileges of the invoker (which on the
  slave is the slave SQL thread).
  (Bug #16266 (http://bugs.mysql.com/16266))
* Character set conversion of string constants for UNION of constant
  and table column was not done when it was safe to do so.
  (Bug #15949 (http://bugs.mysql.com/15949))
* The DEFINER value for stored routines was not replicated.
  (Bug #15963 (http://bugs.mysql.com/15963))
* Use of stored functions with DISTINCT or GROUP BY can produce
  incorrect results when ORDER BY is also used.
  (Bug #13575 (http://bugs.mysql.com/13575))
* Use of TRUNCATE TABLE for a TEMPORARY table on a master server was
  propagated to slaves properly, but slaves did not decrement the
  Slave_open_temp_tables counter properly.
  (Bug #17137 (http://bugs.mysql.com/17137))
* SELECT COUNT(*) for a MyISAM table could return different results
  depending on whether an index was used.
  (Bug #14980 (http://bugs.mysql.com/14980))
* A LEFT JOIN with a UNION that selects literal values could crash the
  server. (Bug #17366 (http://bugs.mysql.com/17366))
* Large file support did not work in AIX server binaries.
  (Bug #10776 (http://bugs.mysql.com/10776))
* Updating a view that filters certain rows to set a filtered out row
  to be included in the table caused infinite loop. For example, if
  the view has a WHERE clause of salary > 100 then issuing an UPDATE
  statement of SET salary = 200 WHERE id = 10, caused an infinite
  loop. (Bug #17726 (http://bugs.mysql.com/17726))
* Certain combinations of joins with mixed ON and USING clauses caused
  unknown column errors. (Bug #15229 (http://bugs.mysql.com/15229))
* NDB Cluster: Inserting and deleting BLOB column values while a
  backup was in process could cause the loss of an ndbd node.
  (Bug #14028 (http://bugs.mysql.com/14028))
* If the server was started with the --skip-grant-tables option, it
  was impossible to create a trigger or a view without explicitly
  specifying a DEFINER clause.
  (Bug #16777 (http://bugs.mysql.com/16777))
* COUNT(DISTINCT col1, col2) and COUNT(DISTINCT CONCAT(col1, col2))
  operations produced different results if one of the columns was an
  indexed DECIMAL column. (Bug #15745 (http://bugs.mysql.com/15745))
* The server displayed garbage in the error message warning about bad
  assignments to DECIMAL columns or routine variables.
  (Bug #15480 (http://bugs.mysql.com/15480))
* The server would execute stored routines that had a non-existent
  definer. (Bug #13198 (http://bugs.mysql.com/13198))
* For FEDERATED tables, a SELECT statement with an ORDER BY clause did
  not return rows in the proper order.
  (Bug #17377 (http://bugs.mysql.com/17377))
* The FORMAT() function returned an incorrect result when the client's
  character_set_connection value was utf8.
  (Bug #16678 (http://bugs.mysql.com/16678))
* NDB Cluster: Some query cache statistics were not always correctly
  reported for Cluster tables.
  (Bug #16795 (http://bugs.mysql.com/16795))
* Updating the value of a Unicode VARCHAR column with the result
  returned by a stored function would cause the insertion of ASCII
  characters into the column instead of Unicode, even where the
  function's return type was also declared as Unicode.
  (Bug #17615 (http://bugs.mysql.com/17615))