2005.07.15

MySQL

MySQL 5.0.9 ベータ版がリリースされました。

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

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

これは、5.0シリーズの15回目に発表されたベータリリースとなります。すべての注意は、後の製品リリースのために、5.0のバグフィックスと安定化に焦点を合わせ続けられるでしょう。

バージョン5.0.8-ベータが発表されなかったので、その変更はこの発表に含まれています。

注意:このベータリリースは、他の出荷前製品リリースと同様、重大なデータを備えた、「製品」レベルのシステムあるいはシステムにインストールされるべきではありません。新しいバージョンのソフトウェアのインストールの前にデータをバックアップことは良い習慣です。MySQLは高いレベルの品質を確実にするために最善をつくしましたが、あたなが、どんなソフトウェアベータリリースの対しても行うようにバックアップを作ることによって、データを保護してください。

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

リリース5.0.9の変更点
===========

Functionality added or changed:

* InnoDB: When creating or extending an InnoDB data file, at most one megabyte at a time is allocated for initializing the file. Previously, InnoDB allocated and initialized 1 or 8 megabytes of memory, even if only a few 16-kilobyte pages were to be written. This improves the performance of CREATE TABLE in innodb_file_per_table mode.
* InnoDB: Various optimizations. Removed unreachable debug code from non-debug builds. Added hints for the branch predictor in GCC. Made assertions occupy less space.
* InnoDB: Make innodb_thread_concurrency=20 by default. Bypass the concurrency checking if the setting is greater than or equal to 20.
* InnoDB: Make CHECK TABLE killable.(Bug #9730 (http://bugs.mysql.com/9730))
* Recursion in stored routines is now disabled because it was crashing the server. We plan to modify stored routines to allow this to operate safely in a future release. (Bug #11394 (http://bugs.mysql.com/11394))
* The handling of BIT columns has been improved, and should now be much more reliable in a number of cases. (Bug #10617 (http://bugs.mysql.com/10617),Bug#11091(http://bugs.mysql.com/11091), Bug #11572 (https://bugs.mysql.com/11572))

Bugs fixed:

* When used in joins, SUBSTRING() failed to truncate to zero any stringvalues that could not be converted to numbers.(Bug #10124(http://bugs.mysql.com/10124))
* mysqldump --xml did not format NULL column values correctly. (Bug #9657 (http://bugs.mysql.com/9657))
* There was a compression algorithm issue with myisampack for very large datasets (where the total size of of all records in a single columnwas on the order of 3 GB or more) on 64-bit platforms. (A fix for?other platforms was made in MySQL 5.0.6.) (Bug #8321 (http://bugs.mysql.com/8321))
* Temporary tables were created in the data directory instead of tmpdir. (Bug #11440 (http://bugs.mysql.com/11440))
* MySQL would not compile correctly on QNX due to missing rint() function.(Bug #11544 (http://bugs.mysql.com/11544))
* A SELECT DISTINCT col_name would work correctly with a MyISAM table only when there was an index on col_name. (Bug #11484(http://bugs.mysql.com/11484))
* The server would lose table-level CREATE VIEW and SHOW VIEW privileges following a FLUSH PRIVILEGES or server restart.(Bug #9795(http://bugs.mysql.com/9795))
* In strict mode, an INSERT into a view that did not include a value for a NOT NULL column but that did include a WHERE test on the same column would succeed, This happened even though the INSERT should have been prevented due to the failure to supply a value for the NOT NULL column.(Bug #6443 (http://bugs.mysql.com/6443))
* Running a CHECK TABLES on multiple views crashed the server. (Bug #11337 (http://bugs.mysql.com/11337))
* When a table had a primary key containing a BLOB column, creation of another index failed with the error BLOB/TEXT column used in key specification without keylength, even when the new index did not contain a BLOB column. (Bug #11657 (http://bugs.mysql.com/11657))
* NDB Cluster: When trying to open a table that could not be discovered or unpacked, cluster would return error codes which the MySQL server falsely interpreted as operating system errors.(Bug #10365 (http://bugs.mysql.com/10365))
* Manually inserting a row with host='' into mysql.tables_priv and performing a FLUSH PRIVILEGES would cause the server to crash. (Bug #11330 (http://bugs.mysql.com/11330))
* A cursor using a query with a filter on a DATE or DATETIME column would cause the server to crash server after the data was fetched. (Bug #11172 (http://bugs.mysql.com/11172))
* Closing a cursor that was already closed would cause MySQL to hang. (Bug #9814 (http://bugs.mysql.com/9814))
* Using CONCAT_WS on a column set NOT NULL caused incorrect results when used in a LEFT JOIN. (Bug #11469 (http://bugs.mysql.com/11469))
* Signed BIGINT would not accept -9223372036854775808 as a DEFAULT value.

リリース5.0.8の変更点 (公開されていません)
===========

Note: Starting with version 5.0.8, changes for MySQL Cluster can be found in the combined Change History.

Functionality added or changed:

* MEMORY tables now support indexes of up to 500 bytes. See Section 14.3, "The MEMORY (HEAP) Storage Engine." (Bug #10566 (http://bugs.mysql.com/10566))
* New SQL_MODE - NO_ENGINE_SUBSTITUTION Prevents automatic substitution of storage engine when the requested storage engine is disabled or not compiled in. (Bug #6877 (http://bugs.mysql.com/6877))
* The statements CREATE TABLE, TRUNCATE TABLE, DROP DATABASE, and CREATE DATABASE cause an implicit commit.(Bug #6883 (http://bugs.mysql.com/6883))
* Expanded on information provided in general log and slow query log for prepared statements. (Bug #8367 (http://bugs.mysql.com/8367), Bug #9334 (http://bugs.mysql.com/9334))
* Where a GROUP BY query uses a grouping column from the query's SELECT clause, MySQL now issues a warning. This is because the SQL standard states that any grouping column must unambiguously reference a column of the table resulting from the query's FROM clause, and allowing columns from the SELECT clause to be used as grouping columns is a MySQL extension to the standard.
    By way of example, consider the following table:
  CREATE TABLE users (
  userid INT NOT NULL PRIMARY KEY,
  username VARCHAR(25),
  usergroupid INT NOT NULL
  );
  MySQL allows you to use the alias in this query:
  SELECT usergroupid AS id, COUNT(userid) AS number_of_users
  FROM users
  GROUP BY id;
  However, the SQL standard requires that the column name be used, as shown here:
  SELECT usergroupid AS id, COUNT(userid) AS number_of_users
  FROM users
  GROUP BY usergroupid;
  Queries such as the first of the two shown above will continue to be supported in MySQL;
  however, beginning with MySQL 5.0.8, using a column alias in this fashion will generate a warning. Note that in the event of a collision between column names and/or aliases used in joins, MySQL attempts to resolve the conflict by giving preference to columns arising from tables named in the query's FROM clause. (Bug #11211 (http://bugs.mysql.com/11211))
* The granting or revocation of privileges on a stored routine is no longer performed when running the server with --skip-grant-tables even after the statement SET @@global.automatic_sp_privileges=1; has been executed. (Bug #9993
* Added support for B'10' syntax for bit literal. (Bug #10650 (http://bugs.mysql.com/10650))

Bugs fixed:

* Security fix: On Windows systems, a user with any of the following privileges
  + REFERENCES
  + CREATE TEMPORARY TABLES
  + GRANT OPTION
  + CREATE
  + SELECT
  on *.* could crash mysqld by issuing a USE LPT1; or USE PRN; command. In addition, any of the commands USE NUL;, USE CON;, USE COM1;, or USE AUX; would report success even though the database was not in fact changed.Note: Although this bug was thought to be fixed previously, it was later discovered to be present in the MySQL 5.0.7-beta release for Windows. (Bug #9148 (http://bugs.mysql.com/9148), CAN-2005-0799 (http://cve.mitre.org/cvename.cgi?name=CAN-2005-0799)
* mysqld_safe would sometimes fail to remove the pid file for the old mysql process after a crash. As a result, the server would fail to start due to a false A mysqld process already exists... error. (Bug #11122 (http://bugs.mysql.com/11122))
* CAST( ...AS DECIMAL) didn't work for strings.(Bug #11283 (http://bugs.mysql.com/11283))
* NULLIF() function could produce incorrect results if first argument is NULL. (Bug #11142 (http://bugs.mysql.com/11142))
* Setting @@SQL_MODE = NULL caused an erroneous error message. (Bug #10732 (http://bugs.mysql.com/10732))
* Converting a VARCHAR column having an index to a different type (such as TINYTEXT) gave rise to an incorrect error message. (Bug #10543 (http://bugs.mysql.com/10543)) Note that this bugfix induces a slight change in the behaviour of indexes: If an index is defined to be the same length as a field (or is left to default to that field's length), and the length of the field is later changed, then the index will adopt the new length of the field. Previously, the size of the index did not change for some field types (such as VARCHAR) when the field type was changed.
* sql_data_access column of routines table of INFORMATION_SCHEMA was empty. (Bug #11055 (http://bugs.mysql.com/11055))
* A CAST() value could not be included in a VIEW. (Bug #11387 (http://bugs.mysql.com/11387))
* Server crashed when using GROUP BY on the result of a DIV operation on a DATETIME value. (Bug #11385 (http://bugs.mysql.com/11385))
* Possible NULL values in BLOB columns could crash the server when a BLOB was used in a GROUP BY query. (Bug #11295 (http://bugs.mysql.com/11295))
* Fixed 64 bit compiler warning for packet length in replication. (Bug #11064 (http://bugs.mysql.com/11064))
* Multiple range accesses in a subquery cause server crash. (Bug #11487 (http://bugs.mysql.com/11487))
* An issue with index merging could cause suboptimal index merge plans to be chosen when searching by indexes created on DATE columns. The same issue caused the InnoDB storage engine to issue the warning using a partial-field key prefix in search.(Bug #8441 (http://bugs.mysql.com/8441))
* The mysqlhotcopy script was not parsing the output of SHOW SLAVE STATUS correctly when called with the --record_log_pos option. (Bug #7967 (http://bugs.mysql.com/7967))
* SELECT * FROM table returned incorrect results when called from a stored procedure, where table had a primary key.(Bug #10136 (http://bugs.mysql.com/10136))
* When used in defining a view, the TIME_FORMAT() function failed with calculated values, for example, when passed the value returned by SEC_TO_TIME(). (Bug #7521 (http://bugs.mysql.com/7521))
* SELECT DISTINCT ... GROUP BY constant returned multiple rows (it should return a single row). (Bug #8614 (http://bugs.mysql.com/8614))
* INSERT INTO SELECT FROM view produced incorrect result when using ORDER BY. (Bug #11298 (http://bugs.mysql.com/11298))
* Fixed hang/crash with Boolean full-text search where a query contained more query terms that one-third of the query length (it could be achieved with truncation operator: 'a*b*c*d*').(Bug #7858 (http://bugs.mysql.com/7858))
* Fixed column name generation in VIEW creation to ensure there are no duplicate column names. (Bug #7448 (http://bugs.mysql.com/7448))
* An ORDER BY clause sometimes had no effect on the ordering of a result when selecting specific columns (as opposed to using SELECT *) from a view. (Bug #7422 (http://bugs.mysql.com/7422))
* Some data definition statements (CREATE TABLE where the table was not a temporary table, TRUNCATE TABLE, DROP DATABASE, and CREATE DATABASE) were not being written to the binary log after a ROLLBACK. This also caused problems with replication. (Bug #6883 (http://bugs.mysql.com/6883))
* Calling a stored procedure that made use of an INSERT ... SELECT ... UNION SELECT ...query caused a server crash.(Bug #11060 (http://bugs.mysql.com/11060))
* Selecting from a view defined using SELECT SUM(DISTINCT ...) caused an error; attempting to execute a SELECT * FROM INFORMATION_SCHEMA.TABLES query after defining such a view crashed the server. (Bug #7015 (http://bugs.mysql.com/7015))
* The mysql client would output a prompt twice following input of very long strings, because it incorrectly assumed that a call to the _cgets() function would clear the input buffer.(Bug #10840 (http://bugs.mysql.com/10840))
* A three byte buffer overflow in the client functions caused improper exiting of the client when reading a command from the user. (Bug #10841 (http://bugs.mysql.com/10841))
* Fixed a problem where a stored procedure caused a server crash if the query cache was enabled. (Bug #9715 (http://bugs.mysql.com/9715))
* SHOW CREATE DATABASE INFORMATION_SCHEMA returned an “unknown database” error. (Bug #9434 (http://bugs.mysql.com/9434))
* Corrected a problem with IFNULL() returning an incorrect result on 64-bit systems. (Bug #11235 (http://bugs.mysql.com/11235))
* Fixed a problem resolving table names with lower_case_table_names=2 when the table name lettercase differed in the FROM and WHERE clauses. (Bug #9500 (http://bugs.mysql.com/9500))
* Fixed server crash due to some internal functions not taking into account that for multi-byte character sets, CHAR columns could exceed 255 bytes and VARCHAR columns could exceed 65,535 bytes. (Bug #11167 (http://bugs.mysql.com/11167))
* Fixed locking problems for multiple-statement DELETE statements performed within a stored routine, such as incorrectly locking a to-be-modified table with a read lock rather than a write lock. (Bug #11158 (http://bugs.mysql.com/11158))
* Fixed a portability problem testing for crypt() support that caused compilation problems when using OpenSSL/yaSSL on HP-UX and Mac OS X. (Bug #10675 (http://bugs.mysql.com/10675), Bug #11150 (http://bugs.mysql.com/11150))
* The hostname cache was not working. (Bug #10931 (http://bugs.mysql.com/10931))
* On Windows, mysqlshow did not interpret wildcard characters properly if they were given in the table name argument.(Bug #10947 (http://bugs.mysql.com/10947))
* Using PREPARE to prepare a statement that invoked a stored routine that deallocated the prepared statement caused a server crash. This is prevented by disabling dynamic SQL within stored routines. (Bug #10975 (http://bugs.mysql.com/10975))
* Using PREPARE to prepare a statement that invoked a stored routine that executed the prepared statement caused a Packets out of order error the second time the routine was invoked. This is prevented by disabling dynamic SQL within stored routines. (Bug #7115 (http://bugs.mysql.com/7115))
* Using prepared statements within a stored routine (PREPARE, EXECUTE, DEALLOCATE) could cause the client connection to be dropped after the routine returned. This is prevented by disabling dynamic SQL within stored routines. (Bug #10605 (http://bugs.mysql.com/10605))
* When using a cursor with a prepared statement, the first execution returned the correct result but was not cleaned up properly, causing subsequent executions to return incorrect results. (Bug #10729 (http://bugs.mysql.com/10729))
* MySQL Cluster: Connections between data nodes and management nodes were not being closed following shutdown of ndb_mgmd. (Bug #11132 (http://bugs.mysql.com/11132))
* MySQL Cluster: mysqld processes would not reconnect to cluster following restart of ndb_mgmd. (Bug #11221 (http://bugs.mysql.com/11221))
* MySQL Cluster: Fixed problem whereby data nodes would fail to restart on 64-bit Solaris (Bug #9025 (http://bugs.mysql.com/9025))
* MySQL Cluster: Calling ndb_select_count() crashed the cluster when running on Red Hat Enterprise 4/64-bit/Opteron.(Bug #10058 (http://bugs.mysql.com/10058))
* MySQL Cluster: Insert records were incorrectly applied by ndb_restore, thus making restoration from backup inconsistent if the binlog contained inserts. (Bug #11166 (http://bugs.mysql.com/11166))
* MySQL Cluster: Cluster would time out and crash after first query on 64-bit Solaris 9. (Bug #8918 (http://bugs.mysql.com/8918))
* MySQL Cluster: ndb_mgm client show command displayed incorrect output after master data node failure. (Bug #11050 (http://bugs.mysql.com/11050))
* MySQL Cluster: A delete performed as part of a transaction caused an erroneous result. (Bug #11133 (http://bugs.mysql.com/11133))
* MySQL Cluster: Not allowing sufficient parallelism in cluster configuration (e.g. NoOfTransactions too small) caused ndb_restore to fail without providing any error messages.(Bug #10294 (http://bugs.mysql.com/10294))
* MySQL Cluster: When using dynamically allocated ports on Linux, cluster would hang on initial startup. (Bug #10893 (http://bugs.mysql.com/10893))
* MySQL Cluster: Setting TransactionInactiveTimeout= 0 did not result in an infinite timeout. (Bug #11290 (http://bugs.mysql.com/11290))
* InnoDB: Enforce maximum CHAR_LENGTH() of UTF-8 data in ON UPDATE CASCADE. (Bug #10409 (http://bugs.mysql.com/10409))
* InnoDB: Pad UTF-8 variable-length CHAR columns with 0x20. Pad UCS2 CHAR columns with 0x0020. (Bug #10511 (http://bugs.mysql.com/10511))