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


最も普及しているオープンソースデータベースの新ベータバージョンであるMySQL 5.1.14ベータ版がリリースされました。

これはベータ版であり、他の多くの試作商品リリースと同様、商品レベルのシステムまたは、重要なデータを含むシステムに対してインストールしないように注意してください。商品レベルのシステムについては、以下のMySQL Enterpriseの商品説明のページをご覧ください。

MySQL 5.1.14ベータ版は、とミラーサイトのダウンロード・ページから、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。






Functionality added or changed:
 * Incompatible change: Previously, you could create a
   user-defined function (UDF) or stored function with the same
   name as a built-in function, but could not invoke the UDF. Now
   an error occurs if you try to create such a UDF. The server
   also now generates a warning if you create a stored function
   with the same name as a built-in function. It is not
   considered an error to create a stored function with the same
   name as a built-in function because you can invoke the
   function using db_name.func_name() syntax. However, the server
   now generates a warning in this case.
   See Section 9.2.4, "Function Name Resolution," for the rules
   describing how the server interprets references to different
   kinds of functions.
 * NDB Cluster (Replication): ndb_restore now creates the
   apply_status and schema tables if they do not already exist on
   the slave cluster. (Bug#14612:
 * NDB Cluster: Backup messages are now printed to the Cluster
   log. (Bug#24544:
 * NDB Cluster: The error message Management server closed
   connection, when recorded in the MySQL error log, now includes
   a timestamp indicating when the error took place.
 * NDB Cluster (Disk Data): The output of mysqldump now includes
   by default all tablespace and logfile group definitions used
   by any tables or databases that are dumped.
   Note: The working of the --all-tablespaces or -Y option for
   mysqldump remains unaffected by this change.
 * Direct and indirect usage of stored routines, user-defined
   functions, and table references is now prohibited in CREATE
   EVENT and ALTER EVENT statements.
   See Section 20.2.1, "CREATE EVENT Syntax," and Section 20.2.2,
   "ALTER EVENT Syntax," for more specific information.
 * DROP TRIGGER now supports an IF EXISTS clause.

Bugs fixed:
 * NDB Cluster (Replication): If errors occurred during purging
   of the binary logs, extraneous rows could remain left in the
   binlog_index table. (Bug#15021:
 * NDB Cluster (Disk Data): ndb_restore could sometimes fail when
   attempting to restore Disk Data tables due to data node
   failure caused by accessing unitialized memory.
 * NDB Cluster (Disk Data): Excessive fragmentation of Disk Data
   files (including log files and data files) could occur during
   the course of normal use.
 * NDB Cluster (Disk Data): It was possible to execute a
   statement for creating a Disk Data table that referred to a
   nonexistent tablespace, in which case the table was an
   in-memory NDB table. Such a statement instead now fails with
   an appropriate error message.
 * NDB Cluster (Disk Data): Under some circumstances, a DELETE
   from a Disk Data table could cause mysqld to crash.
 * NDB Cluster (Cluster APIs): Using BIT values with any of the
   comparison methods of the NdbScanFilter class caused the
   cluster's data nodes to fail.
 * NDB Cluster: A value equal to or greater than the allowed
   maximum for LongMessageBuffer caused all data nodes to crash.
 * NDB Cluster: The failure of a data node failure during a
   schema operation could lead to additional node failures.
 * NDB Cluster: A committed read could be attempted before a data
   node had time to connect, causing a timeout error.
 * NDB Cluster: The simultaneous shutdown of mysqld and ndbd
   processes caused unnecessary locking.
 * NDB Cluster: The failure of the master node in a node group
   during the allocation of node IDs could cause ndb_mgmd to
   hang. (Bug#24543:
 * NDB Cluster: In certain rare cases, a data node could crash
   due to a typographical error in the MySQL Cluster source code.
 * NDB Cluster: Creating a new tables containing a BLOB column
   when the server was short of memory could cause the server to
   crash. (Bug#24470:
 * NDB Cluster: Any statement following the execution of CREATE
   TABLE ... LIKE ndb_table (where ndb_table was a table using
   the NDB storage engine), would cause the mysql client to hang.
 * NDB Cluster: When the management client command ALL RESTART -i
   was executed while one data node was not running, all data
   nodes in the cluster were shut down.
 * NDB Cluster: A query using an index scan followed by a delete
   operation, and then a rollback could cause one or more data
   nodes to crash. (Bug#24039:
 * NDB Cluster (Cluster APIs): Some MGM API function calls could
   yield incorrect return values in certain cases where the
   cluster was operating under a very high load, or experienced
   timeouts in inter-node communications.
 * NDB Cluster: It was possible for the sum of the MaxNoOfTables,
   MaxNoOfOrderedIndexes, and MaxNoOfUniqueHashIndexes
   configuration parameters, plus the number of system tables to
   exceed the maximum value for a Uint32 number. In such a case,
   the cluster's data nodes failed to start, and no reason for
   this could easily be determined from the error messages
   provided. (Bug#22548:
 * NDB Cluster: Given a table mytbl in a database mydb on a MySQL
   Server acting as an SQL node in a MySQL Cluster, then,
   following multiple ALTER TABLE mytbl ENGINE=engine statements
   --- first, to change the storage engine used for a table to
   NDB, and then again to change the table to use a non-NDB
   storage engine --- a DROP DATABASE mydb statement executed on
   any SQL node in the cluster would cause mydb to be dropped on
   all SQL nodes in the cluster, even if mydb contained non-NDB
   tables. (Bug#21495:
 * NDB Cluster: An incorrect error message was displayed in the
   event that the value of the MaxNoOfOrderedIndexes parameter
   was set too low. (Bug#20065:
 * NDB Cluster: An incorrect error message was displayed in the
   event that the value of the DataMemory parameter was
   insufficient for the amount of data to be stored by the
   cluster. (Bug#19808:
 * NDB Cluster: A unique constraint violation was not ignored by
   an UPDATE IGNORE statement when the constraint violation
   occurred on a non-primary key.
 * Through the C API, the member strings in MYSQL_FIELD for a
   query that contains expressions may return incorrect results.
 * mysql_affected_rows() could return values different from
   mysql_stmt_affected_rows() for the same sequence of
   statements. (Bug#23383:
 * IN() and CHAR() can return NULL, but did not signal that to
   the query processor, causing incorrect results for IS NULL
   operations. (Bug#17047:
 * Instance Manager option-parsing code caused memory-allocation
   errors. (Bug#22242:
 * A trigger that invoked a stored function could cause a server
   crash when activated by different client connections.
 * CONCURRENT did not work correctly for LOAD DATA INFILE.
 * A stored procedure, executed from a connection using a binary
   character set, and which wrote multi-byte data, would write
   incorrectly escaped entries to the binary log. This caused
   syntax errors, and caused replication to fail.
 * The server source code had multiple exportable definitions of
   the field_in_record_is_null() function. These are now all
   declared static. (Bug#24190:
 * When reading from the standard input on Windows, mysqlbinlog
   opened the input in text mode rather than binary mode and
   consequently misinterpreted some characters such as Control-Z.
 * Inserting a default or invalid value into a spatial column
   could fail with Unknown error rather than a more appropriate
   error. (Bug#21790:
 * The server could send incorrect column count information to
   the client for queries that produce a larger number of columns
   than can fit in a two-byte number.
 * Evaluation of subqueries that require the filesort algorithm
   were allocating and freeing the sort_buffer_size buffer many
   times, resulting in slow performance. Now the buffer is
   allocated once and reused.
 * SQL statements close to the size of max_allowed_packet could
   produce binary log events larger than max_allowed_packet that
   could not be read by slave servers.
 * View columns were always handled as having implicit
   derivation, leading to illegal mix of collation errors for
   some views in UNION operations. Now view column column
   derivation comes from the original expression given in the
   view definition. (Bug#21505:
 * If elements in a non-top-level IN subquery were accessed by an
   index and the subquery result set included a NULL value, the
   quantified predicate that contained the subquery was evaluated
   to NULL when it should return a non-NULL value.
 * Calculation of COUNT(DISTINCT), AVG(DISTINCT), or
   SUM(DISTINCT) when they are referenced more than once in a
   single query with GROUP BY could cause a server crash.
 * For a cast of a DATETIME value containing microseconds to
   DECIMAL, the microseconds part was truncated without
   generating a warning. Now the microseconds part is preserved.
 * Metadata for columns calculated from scalar subqueries was
   limited to integer, double, or string, even if the actual type
   of the column was different.
 * The result for CAST() when casting a value to UNSIGNED was
   limited to the maximum signed BIGINT value, not the maximum
   unsigned value. (Bug#8663:
 * Some unnecessary Valgrind warnings were removed from the
   server. (Bug#24488:,
 * Using EXPLAIN caused a server crash for queries that selected
   from INFORMATION_SCHEMA in a subquery in the FROM clause.
 * Invalidating the query cache caused a server crash for INSERT
   INTO ... SELECT statements that selected from a view.
 * With row-based binary logging, replicated multiple-statement
   transaction deadlocks did not return the correct error code,
   causing the slave SQL thread to stop rather than roll back and
   re-execute. (Bug#23831:
 * With row-based binary logging, for CREATE TABLE IF NOT EXISTS
   LIKE temporary_table statements, the IF NOT EXISTS clause was
   not logged. (Bug#22762:
 * With row-based binary logging, CREATE TABLE IF NOT EXISTS
   SELECT statements were not logged properly.
 * On slave servers, transactions that exceeded the lock wait
   timeout failed to roll back properly.
 * Changes to character set variables prior to an action on a
   replication-ignored table were forgotten by slave servers.
 * With lower_case_table_names set to 1, SHOW CREATE TABLE
   printed incorrect output for table names containing Turkish I
 * When applying the group_concat_max_len limit, GROUP_CONCAT()
   could truncate multi-byte characters in the middle.
 * For view renaming, the table name to filename encoding was not
   performed. (Bug#21370:
 * For some problems relating to character set conversion or
   incorrect string values for INSERT or UPDATE, the server was
   reporting truncation or length errors instead.
 * The XPath operators < and >, as implemented in the
   ExtractValue() function, operated in reverse.

Changes in release 5.1.13 (Not released)

Functionality added or changed:
 * Binary distributions of MySQL 5.1.12 were built without
   support for partitioning. This has been corrected except for
   NetWare. (Bug#23949:
 * A change in the interfaces for the INFORMATION_SCHEMA.FILES
   table has made the table accessible to storage engines other
   than NDB. (Bug#23013:
 * mysqldump --single-transaction now uses START TRANSACTION
   /*!40100 WITH CONSISTENT SNAPSHOT */ rather than BEGIN to
   start a transaction, so that a consistent snapshot will be
   used on those servers that support it.
 * mysql_upgrade now passes all the parameters specified on the
   command line to both mysqlcheck and mysql using the
   upgrade_defaults file.
 * For the CALL statement, stored procedures that take no
   arguments now can be invoked without parentheses. That is,
   CALL p() and CALL p are equivalent.

Bugs fixed:
 * MySQL 5.0.26 introduced an ABI incompatibility, which this
   release reverts. Programs compiled against 5.0.26 are not
   compatible with any other version and must be recompiled.
 * If a table contains an AUTO_INCREMENT column, inserting into
   an insertable view on the table that does not include the
   AUTO_INCREMENT column should not change the value of
   LAST_INSERT_ID(), because the side effects of inserting
   default values into columns not part of the view should not be
   visible. MySQL was incorrectly setting LAST_INSERT_ID() to
   zero. (Bug#22584:
 * M % 0 returns NULL, but (M % 0) IS NULL evaluated to false.
 * Within a stored routine, a view definition cannot refer to
   routine parameters or local variables. However, an error did
   not occur until the routine was called. Now it occurs during
   parsing of the routine creation statement.
   Note: A side effect of this fix is that if you have already
   created such routines, and error will occur if you execute
   these routines because they are erroneous.
 * A client library crash was caused by executing a statement
   such as SELECT * FROM t1 PROCEDURE ANALYSE() using a server
   side cursor on a table t1 that does not have the same number
   of columns as the output from PROCEDURE ANALYSE().
 * mysql did not check for errors when fetching data during
   result set printing. (Bug#22913:
 * Adding a day, month, or year interval to a DATE value produced
   a DATE, but adding a week interval produced a DATETIME value.
   Now all produce a DATE value.
 * The column default value in the output from SHOW COLUMNS or
   characters. (Bug#23037:
 * For not-yet-authenticated connections, the Time column in SHOW
   PROCESSLIST was a random value rather than NULL.
 * The Host column in SHOW PROCESSLIST output was blank when the
   server was started with the --skip-grant-tables option.
 * The Handler_rollback status variable sometimes was incremented
   when no rollback had taken place.
 * Within a prepared statement, SELECT (COUNT(*) = 1) (or similar
   use of other aggregate functions) did not return the correct
   result for statement re-execution.
 * Lack of validation for input and output TIME values resulted
   in several problems: SEC_TO_TIME() within subqueries
   incorrectly clipped large values; SEC_TO_TIME() treated BIGINT
   UNSIGNED values as signed; only truncation warnings were
   produced when both truncation and out-of-range TIME values
   occurred. (Bug#11655:,
 * Range searches on columns with an index prefix could miss
   records. (Bug#20732:
 * With SQL_MODE=TRADITIONAL, MySQL incorrectly aborted on
   warnings within stored routines and triggers.
 * In mysql, invoking connect or \r with very long db_name or
   host_name parameters caused buffer overflow.
 * mysqldump --xml produced invalid XML for BLOB data.
 * For a debug server, a reference to an undefined user variable
   in a prepared statment executed with EXECUTE caused an
   assertion failure. (Bug#19356:
 * Within a trigger for a base table, selecting from a view on
   that base table failed.
 * DELETE IGNORE could hang for foreign key parent deletes.
 * Transient errors in replication from master to slave may
   trigger multiple Got fatal error 1236: 'binlog truncated in
   the middle of event' errors on the slave.
 * The value of the warning_count system variable was not being
   calculated correctly (also affecting SHOW COUNT(*) WARNINGS).
 * InnoDB showed substandard performance with multiple queries
   running concurrently. (Bug#15815:
 * There was a race condition in the InnoDB
   fil_flush_file_spaces() function.
 * FROM_UNIXTIME() did not accept arguments up to POWER(2,31)-1,
   which it had previously.
 * Some yaSSL-related memory leaks detected by Valgrind were
   fixed. (Bug#23981:
 * If COMPRESS() returned NULL, subsequent invocations of
   COMPRESS() within a result set or within a trigger also
   returned NULL. (Bug#23254:
 * mysql would lose its connection to the server if its standard
   output was not writable.
 * mysql-test-run did not work correctly for RPM-based
   installations. (Bug#17194:
 * The return value from my_seek() was ignored.
 * Use of PREPARE with a CREATE PROCEDURE statement that
   contained a syntax error caused a server crash.
 * Use of a DES-encrypted SSL certificate file caused a server
   crash. (Bug#21868:
 * Column names were not quoted properly for replicated views.
 * InnoDB used table locks (not row locks) within stored
   functions. (Bug#18077:
 * InnoDB crashed when trying to display an error message about a
   foreign key constraint violation when the two tables are in
   different schemas. (Bug#23368:
 * Statements such as DROP PROCEDURE and DROP VIEW were written
   to the binary log too late due to a race condition.
 * At shutdown, Instance Manager told guarded server instances to
   stop, but did not wait until they actually stopped.
 * It was not possible to do an atomic rename of the log tables
   without the possibility of losing rows. Now you can do this:
 USE mysql;
 CREATE TABLE IF NOT EXISTS general_log2 LIKE general_log;
 RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
 * NDB Cluster (Disk Data): In the event of an aborted multiple
   update, the space in the Disk Data log buffer to be freed as a
   result was actually freed twice, which could eventually lead
   to a crash. (Bug#23430:
 * NDB Cluster: An NDB source file included a memset() call with
   reversed arguments. (Bug#23169:
 * NDB Cluster: Under some conditions, the data distribution
   could become unbalanced in a MySQL Cluster with 2 or more node
   groups following the creation of a new table.
   As part of the fix for this bug, two new NDB API methods were
   added to the NdbDictionary::Object::Table class. See the MySQL
   Cluster API documentation for details.
 * Incorrect warnings occurred for use of CREATE TABLE ... LIKE
   or REPAIR TABLE with the log tables.
 * MySQL failed to build on the Alpha platform.
 * The optimizer failed to use equality propagation for BETWEEN
   and IN predicates with string arguments.
 * The optimizer used the ref join type rather than eq_ref for a
   simple join on strings.
 * The WITH CHECK OPTION for a view failed to prevent storing
   invalid column values for UPDATE statements.
 * A literal string in a GROUP BY clause could be interpreted as
   a column name. (Bug#14019:
 * Some queries that used MAX() and GROUP BY could incorrectly
   return an empty result.
 * WITH ROLLUP could group unequal values.
 * Use of a subquery that invoked a function in the column list
   of the outer query resulted in a memory leak.
 * LIKE searches failed for indexed utf8 character columns.
 * FLUSH INSTANCES in Instance Manager triggered an assertion
   failure. (Bug#19368:
 * ALTER TABLE was not able to rename a view.
 * The optimizer sometimes mishandled R-tree indexes for GEOMETRY
   data types, resulting in a server crash.
 * An unhandled NULL pointer caused a server crash.
 * Use of SQL_BIG_RESULT did not influence the sort plan for
   query execution. (Bug#22781:
 * The server did not allocate sufficient memory for some queries
   for which a DISTINCT to GROUP BY conversion is possible and an
   ORDER BY clause is present, resulting in a server crash.
 * The range analysis optimizer did not take into account
   predicates for which an index could be used after reading
   const tables. In some cases this resulted in non-optimal
   execution plans. (Bug#19579:
 * Entries in the slow query log could have an incorrect
   Rows_examined value. (Bug#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:
 * OPTIMIZE TABLE with myisam_repair_threads > 1 could result in
   MyISAM table corruption.
 * NDB Cluster: Restoring a cluster failed if there were any
   tables with 128 or more columns.
 * NDB Cluster: Cluster backups would fail when there were more
   than 2048 schema objects in the cluster.
 * NDB Cluster: The management client command ALL DUMP 1000 would
   cause the cluster to crash if data nodes were connected to the
   cluster but not yret fully started.
   table could lead to deadlocks and memory leaks.
 * 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.
 * NDB Cluster: Multiple node restarts in rapid succession could
   cause a system restart to fail
   (Bug#22892:, or induce a race
   condition (Bug#23210:
 * NDB Cluster: Attempting to create a unique constraint with
   USING HASH on an NDB table caused mysqld to crash.
 * 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.
 * NDB Cluster (NDB API): When multiple processes or threads in
   parallel performed the same ordered scan with exclusive lock
   and updating the retrieved records, the scan could skip some
   records, which were not updated as the result.
 * NDB Cluster: Aborting a cluster backup too soon after starting
   it caused a forced shutdown of the data nodes.