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


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

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

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





Functionality added or changed:
    * Incompatible change: The following conditions apply to
      enabling the read_only system variable:
         + If you attempt to enable read_only while you have any
           explicit locks (acquired with LOCK TABLES or have a
           pending transaction, an error will occur.
         + If other clients hold explicit table locks or have
           pending transactions, the attempt to enable read_only
           blocks until the locks are released and the transactions
           end. While the attempt to enable read_only is pending,
           requests by other clients for table locks or to begin
           transactions also block until read_only has been set.
         + read_only can be enabled while you hold a global read
           lock (acquired with FLUSH TABLES WITH READ LOCK) because
           that does not involve table locks.
      Previously, the attempt to enable read_only would return
      immediately even if explicit locks or transactions were
      pending, so some data changes could occur for statements
      executing in the server at the same time.
    * Incompatible change: Previously, the DATE_FORMAT() function
      returned a binary string. Now it returns a string with a
      character set and collation given by character_set_connection
      and collation_connection so that it can return month and
      weekday names containing non-ASCII characters.
    * The --skip-thread-priority option now is enabled by default
      for binary Mac OS X distributions. Use of thread priorities
      degrades performance on Mac OS X.
    * Added the --disable-grant-options option to configure. If
      configure is run with this option, the --bootstrap,
      --skip-grant-tables, and --init-file options for mysqld are
      disabled and cannot be used. For Windows, the configure.js
      script recognizes the DISABLE_GRANT_OPTIONS flag, which has
      the same effect.
    * Partitioning of tables using the FEDERATED storage engine is
      no longer permitted. Attempting to create such a table or to
      modify an existing table so that is uses both partitioning and
      FEDERATED now fails with an error.
    * In MySQL 5.1, InnoDB rolls back only the last statement on a
      transaction timeout. A new option,
      --innodb_rollback_on_timeout, causes InnoDB to abort and roll
      back the entire transaction if a transaction timeout occurs
      (the same behavior as in MySQL 4.1).
    * The Com_create_user status variable was added (for counting
      CREATE USER statements).
    * The --memlock option relies on system calls that are
      unreliable on some operating systems. If a crash occurs, the
      server now checks whether --memlock was specified and if so
      issues some information about possible workarounds.
    * The default value of the max_connections variable has been
      increased to 151 in order that Websites running on Apache and
      using MySQL will not have more processes trying to access
      MySQL than the default number of connections available.
      (The maximum number of Apache processes is determined by the
      Apache MaxClient, which defaults to 256, but is usually set to
      150 in the httpd.conf commonly distributed with Apache. For
      more information about MaxClient, see
    * The bundled yaSSL library was upgraded to version 1.5.0.
    * Calling a non-deterministic stored routine when using
      statement-based replication now throws an error. Formerly,
      defining such a stored routine would cause an error to be
      thrown. (Bug#16456:
    * The (undocumented) UNIQUE_USERS() and and GROUP_UNIQUE_USERS()
      functions were removed.
    * NDB Cluster: The LockPagesInMainMemory configuration parameter
      has changed its type and possible values. For more
      information, see [1872]LockPagesInMainMemory.
      Important: The values true and false are no longer accepted
      for this parameter. If you were using this parameter and had
      it set to false in a previous release, you must change it to
      0. If you had this parameter set to true, you should instead
      use 1 to obtain the same behavior as previously, or 2 to take
      advantage of new functionality introduced with this release
      described in the section cited above.
    * Remote servers for use with the FEDERATED storage engine now
      can be managed with the new CREATE/ALTER/DROP SERVER syntax.

Bugs fixed:
    * Attempts to access a MyISAM table with a corrupt column
      definition caused a server crash.
    * mysqltest_embedded crashed at startup.
    * Accessing a fixed record format table with a crashed key
      definition results in server/myisamchk segmentation fault.
    * When opening a corrupted .frm file during a query, the server
      crashes. (Bug#24358:
    * If there was insufficient memory to store or update a blob
      record in a MyISAM table then the table will marked as
      crashed. (Bug#23196:
    * When updating a table that used a JOIN of the table itself
      (for example, when building trees) and the table was modified
      on one side of the expression, the table would either be
      reported as crashed or the wrong rows in the table would be
      updated. (Bug#21310:
    * When SET PASSWORD was written to the binary log double quotes
      were included in the statement. If the slave was running in
      with the sql_mode set to ANSI_QUOTES the event would fail and
      halt the replication process.
    * Using CREATE TABLE ... SELECT and rolling back the transaction
      would leave an empty table on the master, but the instructions
      would not be recorded in the binary log and therefore
      replicated to the slave. This would result in a difference
      between the master and slave databases. An implicit commit has
      been added to ensure consistency.
    * 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.
    * No warning was issued for use of the DATA DIRECTORY or INDEX
      DIRECTORY table options on a platform that does not support
      them. (Bug#17498:
    * When a prepared statement failed during the prepare operation,
      the error code was not cleared when it was reused, even if the
      subsequent use was successful.
    * mysql_upgrade failed when called with a basedir pathname
      containing spaces. (Bug#22801:
    * Hebrew-to-Unicode conversion failed for some characters.
      Definitions for the following Hebrew characters (as specified
      by the ISO/IEC 8859-8:1999) were added: LEFT-TO-RIGHT MARK
    * If there was insufficient memory available to mysqld, this
      could sometimes cause the server to hang during startup.
    * Using row-based replication to replicate to a table having at
      least one extra BIT column with a default value on the slave
      as compared to the master could cause the slave to fail.
    * Optimizations that are legal only for subqueries without
      tables and WHERE conditions were applied for any subquery
      without tables. (Bug#24670:
    * A query using WHERE unsigned_column NOT IN ('negative_value')
      could cause the server to crash.
    * A FETCH statement using a cursor on a table which was not in
      the table cache could sometimes cause the server to crash.
    * CREATE TABLE ... SELECT statements were not rolled back
      correctly. As part of the fix, such a statement now causes an
      implicit commit before and after it is executed. However, it
      does not cause a commit when used to create a temporary table.
    * SSL connections could hang at connection shutdown.
    * The STDDEV() function returned a positive value for data sets
      consisting of a single value.
    * mysqltest incorrectly tried to retrieve result sets for some
      queries where no result set was available.
    * mysqltest crashed with a stack overflow.
    * The server was built even when configure was run with the
      --without-server option.
    * mysqld_error.h was not installed when only the client
      libraries were built. (Bug#21265:
    * mysql_install_db did not create the mysql.plugin table if
      strict SQL mode was enabled.
    * The row count for MyISAM tables was not updated properly,
      causing SHOW TABLE STATUS to report incorrect values.
    * Using a view in combination with a USING clause caused column
      aliases to be ignored.
    * Using ALTER TABLE to convert a CSV table containing NULL
      values to MyISAM resulted in warnings.
    * A view was not handled correctly if the SELECT part contained
      `\Z'. (Bug#24293:
    * Inserting a row into a table without specifying a value for a
      BINARY(N) NOT NULL column caused the column to be set to
      spaces, not zeroes. (Bug#14171:
    * An assertion failed incorrectly for prepared statements that
      contained a single-row non-correlated subquery that was used
      as an argument of the IS NULL predicate.
    * A table created with the ROW_FORMAT = FIXED table option loses
      the option if an index is added or dropped with CREATE INDEX
      or DROP INDEX. (Bug#23404:
    * Dropping a user-defined function sometimes did not remove the
      UDF entry from the mysql.proc table.
    * The BUILD/check-cpu script did not recognize Celeron
      processors. (Bug#20061:
    * Some problems uncovered by Valgrind were fixed.
    * mysql_fix_privilege_tables did not handle a password
      containing embedded space or apostrophe characters.
    * Foreign key identifiers for InnoDB tables could not contain
      certain characters. (Bug#24299:
    * On Windows, the SLEEP() function could sleep too long,
      especially after a change to the system clock.
    * In the INFORMATION_SCHEMA.KEY_COLUMN_USAGE table, the value
      displayed for the REFERENCED_TABLE_NAME column was the table
      name as encoded for disk storage, not the actual table name.
    * Changing the value of MI_KEY_BLOCK_LENGTH in myisam.h and
      recompiling MySQL resulted in a myisamchk that saw existing
      MyISAM tables as corrupt.
    * A stored routine containing semicolon in its body could not be
      reloaded from a dump of a binary log.
    * For SET, SELECT, and DO statements that invoked a stored
      function from a database other than the default database, the
      function invocation could fail to be replicated.
    * For ENUM columns defined such that enumeration values
      contained commas, the commas were mapped to 0xff.
      Upgrade note: The fix for this problem affects tables
      containing ENUM columns that actually do have 0xff in
      enumeration values. Such tables should be dumped using
      mysqldump with the current server before upgrading to MySQL
      5.1.15 or higher and reloading the tables.
    * SET lc_time_names = value allowed only exact literal values,
      not expression values.
    * Changes to the lc_time_names system variable were not
      replicated. (Bug#22645:
      and UPDATE statements executed using a full table scan were
      not releasing locks on rows that did not satisfy the WHERE
      condition. (Bug#20390:
    * A stored procedure, executed from a connection using a binary
      character set, and which wrote multibyte data, would write
      incorrectly escaped entries to the binary log. This caused
      syntax errors, and caused replication to fail.
    * mysqldump --order-by-primary failed if the primary key name
      was an identifier that required quoting.
      statements in stored routines or as prepared statements caused
      incorrect results. (Bug#22060:
    * The internal functions for table preparation, creation, and
      alteration were not re-execution friendly, causing problems in
      code that: repeatedly altered a table; repeatedly created and
      dropped a table; opened and closed a cursor on a table,
      altered the table, and then reopened the cursor.
    * A workaround was implemented to avoid a race condition in the
      NPTL pthread_exit() implementation.
    * The Instance Manager DROP INSTANCE command did not work.
    * The Instance Manager STOP INSTANCE command took too much time
      and caused Instance Manager to be unresponsive.
    * The Instance Manager STOP INSTANCE command could not be
      applied to instances in the Crashed, Failed, or Abandoned
      state. (Bug#22306:
    * Instance Manager could crash during shutdown.
    * A deadlock could occur, with the server hanging on Closing
      tables, with a sufficient number of concurrent INSERT DELAYED,
      FLUSH TABLES, and ALTER TABLE operations.
    * A user-defined variable could be assigned an incorrect value
      if a temporary table was employed in obtaining the result of
      the query used to determine its value.
    * The optimizer removes expressions from GROUP BY and DISTINCT
      clauses if they happen to participate in expression = constant
      predicates of the WHERE clause, the idea being that, if the
      expression is equal to a constant, then it cannot take on
      multiple values. However, for predicates where the expression
      and the constant item are of different result types (for
      example, when a string column is compared to 0), this is not
      valid, and can lead to invalid results in such cases. The
      optimizer now performs an additional check of the result types
      of the expression and the constant; if their types differ,
      then the expression is not removed from the GROUP BY list.
    * Referencing an ambiguous column alias in an expression in the
      ORDER BY clause of a query caused the server to crash.
    * Some CASE statements inside stored routines could lead to
      excessive resource usage or a crash of the server.
    * Some joins in which one of the joined tables was a view could
      return erroneous results or crash the server.
    * OPTIMIZE TABLE tried to sort R-tree indexes such as spatial
      indexes, although this is not possible (see Section,
      "OPTIMIZE TABLE Syntax").
    * User-defined variables could consume excess memory, leading to
      a crash caused by the exhaustion of resources available to the
      MEMORY storage engine, due to the fact that this engine is
      used by MySQL for variable storage and intermediate results of
      GROUP BY queries. Where SET had been used, such a condition
      could instead give rise to the misleading error message You
      may only use constant expressions with SET, rather than Out of
      memory (Needed NNNNNN bytes).
    * InnoDB: During a restart of the MySQL Server that followed the
      creation of a temporary table using the InnoDB storage engine,
      MySQL failed to clean up in such a way that InnoDB still
      attempted to find the files associated with such tables.
    * Under some circumstances, a REORGANIZE PARTITION statement
      could crash mysqld. (Bug#24502:
    * A multi-table DELETE QUICK could sometimes cause one of the
      affected tables to become corrupted.
    * A compressed MyISAM table that became corrupted could crash
      myisamchk and possibly the MySQL Server.
    * Using INSTALL PLUGIN followed by a restart of the server
      caused an error due to memory not being properly initialized.
    * A crash of the MySQL Server could occur when unpacking a BLOB
      column from a row in a corrupted MyISAM table. This could
      happen when trying to repair a table using either REPAIR TABLE
      or myisamchk; it could also happen when trying to access such
      a "broken" row using statements like SELECT if the table was
      not marked as crashed.
    * The FEDERATED storage engine did not support the euckr
      character set. (Bug#21556:
    * The FEDERATED storage engine did not support the utf8
      character set. (Bug#17044:
    * mysql_upgrade failed if the --password (or -p) option was
      given. (Bug#24896:
    * For a nonexistent table, DROP TEMPORARY TABLE failed with an
      incorrect error message if read_only was enabled.
    * The code for generating USE statements for binary logging of
      CREATE PROCEDURE statements resulted in confusing output from
      mysqlbinlog for DROP PROCEDURE statements.
    * The REPEAT() function could return NULL when passed a column
      for the count argument.
    * Accuracy was improved for comparisons between DECIMAL columns
      and numbers represented as strings.
    * InnoDB crashed while performing XA recovery of prepared
      transactions. (Bug#21468:
    * ROW_COUNT() did not work properly as an argument to a stored
      procedure. (Bug#23760:
    * It was possible to use DATETIME values whose year, month, and
      day parts were all zeroes but whose hour, minute, and second
      parts contained nonzero values, an example of such an illegal
      DATETIME being '0000-00-00 11:23:45'.
    * It was possible to set the backslash character (" \ ") as the
      delimiter character using DELIMITER, but not actually possible
      to use it as the delimiter.
      another ALTER TABLE option other than RENAME TO did nothing.
      In addition, if ALTER TABLE was used on a table having
      disabled keys, the keys of the resulting table were enabled.
    * An ALTER TABLE statement that used a RENAME clause in
      combination with a MODIFY or CHANGE that did not actually
      change the table (for example, when it changed a column's type
      from INT to INT). The behavior caused by this bug differed
      according to whether or not the storage engine used by the
      table was transactional or non-transactional. For
      transactional tables (such as those using the InnoDB storage
      engine), the statement simply failed; for non-transactional
      tables (such as those using the MyISAM storage engine), the
      ALTER TABLE statement succeeding renaming the table, but
      subsequent SELECT statements against the renamed table would
      fail. (Bug#22369:
    * Queries of the form SELECT ... WHERE string = ANY(...) failed
      when the server used a single-byte character set and the
      client used a multi-byte character set.
    * A partitioned table that used the DATA DIRECTORY option, where
      the data directory was the same as the directory in which the
      table definition file resided, became corrupted following
      ALTER TABLE ENGINE=ARCHIVE. This was actually due to an issue
      with the ARCHIVE storage engine, and not with partitioned
      tables in general. (Bug#22634:
    * NDB Cluster (Cluster APIs): Deletion of an
      Ndb_cluster_connection object took a very long time.
    * NDB Cluster (Replication): Certain errors in replication
      setups could lead to subsequent node failures.
    * NDB Cluster (Replication): Connecting a mysqld to a cluster
      where not all nodes were running, starting the remaining
      cluster nodes, and then disconnecting from the cluster caused
      the mysqld process to crash.
    * NDB Cluster (Replication): Connecting an API node to the
      cluster during a node restart while performing database
      operations could cause the restarting node to fail.
    * NDB Cluster (Disk Data): Following 3 or more missed local
      checkpoints by a cluster node, a restart of the node caused
      incorrect undo information to be used for Disk Data tables.
    * NDB Cluster (Disk Data): Issuing a TRUNCATE statement on a
      Disk Data table caused the table to become an in-memory table.
    * NDB Cluster (Disk Data): Changing a column specification on a
      Disk Data table caused the table to become an in-memory table.
    * NDB Cluster: It was not possible to create an NDB table with a
      key on two VARCHAR columns where both columns had a storage
      length in excess of 256.
    * NDB Cluster: Hosts in clusters with a large number of nodes
      could experience excessive CPU usage while obtaining
      configuration data. (Bug#25711:
    * NDB Cluster: In some circumstances, shutting down the cluster
      could cause connected mysqld processes to crash.
    * NDB Cluster: Non-32-bit, non-aligned columns were not handled
      correctly in explicitly partitioned NDB tables.
    * NDB Cluster: Some aggregate queries such as SELECT COUNT(*)
      performed a table scan on NDB tables rather than checking
      table statistics, causing such queries to perform much more
      slowly in MySQL Cluster 5.1 than in 5.0.
    * NDB Cluster: Memory allocations for TEXT columns were
      calculated incorrectly, resulting in space being wasted and
      other issues. (Bug#25562:
    * NDB Cluster: The failure of a master node during a node
      restart could lead to a resource leak, causing later node
      failures. (Bug#25554:
    * NDB Cluster: The failure of a node during a local checkpoint
      could lead to other node failures.
    * NDB Cluster: A node shutdown occurred if the master failed
      during a commit. (Bug#25364:
    * NDB Cluster: Creating a non-unique index with the USING HASH
      clause silently created an ordered index instead of issuing a
      warning. (Bug#24820:
    * NDB Cluster: The management server did not handle logging of
      node shutdown events correctly in certain cases.
    * NDB Cluster: A potential memory leak in the NDB storage
      engine's handling of file operations was uncovered.
    * NDB Cluster: When stopping and restarting multiple data nodes,
      the last node to be restarted would sometimes hang in Phase
      100. (Bug#19645:
    * NDB Cluster (NDB API): Invoking the NdbTransaction::execute()
      method using execution type Commit and abort option
      AO_IgnoreError could lead to a crash of the transaction
      coordinator (DBTC). (Bug#25090:
    * NDB Cluster (NDB API): A unique index lookup on a non-existent
      tuple could lead to a data node timeout (error 4012).
    * NDB Cluster (NDB API): Due to an error in the computation of
      table fragment arrays, some transactions might not be executed
      from the correct starting point.
    * NDB Cluster (Replication): Following a restart of the master
      cluster, the latest GCI was set to 0 upon reconnection to the
      slave. (Bug#21806:
    * NDB Cluster (Disk Data): A MEDIUMTEXT column of a Disk Data
      table was stored in memory rather than on disk, even if the
      column was not indexed.
    * NDB Cluster (Disk Data): Performing a node restart with a
      newly dropped Disk Data table could lead to failure of the
      node during the restart.
    * NDB Cluster (Disk Data): When restoring from backup a cluster
      containing any Disk Data tables with hidden primary keys, a
      node failure resulted which could lead to a crash of the
      cluster. (Bug#24166:
    * NDB Cluster (Disk Data): Repeated CREATE, DROP, or TRUNCATE in
      various combinations with system restarts between these
      operations could lead to the eventual failure of a system
      restart. (Bug#21948:
    * NDB Cluster (Disk Data): Extents that should have been
      available for re-use following a DROP TABLE operation were not
      actually made available again until after the cluster
      performed a local checkpoint.
    * NDB Cluster: Under certain rare circumstances, local
      checkpoints were not performed properly, leading to an
      inability to restart one or more data nodes.
    * NDB Cluster (NDB API): When using the
      NdbTransaction::execute() method, a very long timeout (greater
      than 5 minutes) could result if the last data node being
      polled was disconnected from the cluster.
    * NDB Cluster: When a data node was shut down using the
      management client STOP command, a connection event
      (NDB_LE_Connected) was logged instead of a disconnection event
    * NDB Cluster: SELECT statements with a BLOB or TEXT column in
      the selected column list and a WHERE condition including a
      primary key lookup on a VARCHAR primary key produced empty
      result sets. (Bug#19956:
    * NDB Cluster: ndb_config failed when trying to use 2 management
      servers and node IDs. (Bug#23887:
    * STR_TO_DATE() returned NULL if the format string contained a
      space following a non-format character.
    * yaSSL crashed on pre-Pentium Intel CPUs.
    * Selecting into variables sometimes returned incorrect wrong
      results. (Bug#20836:
    * Inserting DEFAULT into a column with no default value could
      result in garbage in the column. Now the same result occurs as
      when inserting NULL into a NOT NULL column.
    * mysql_fix_privilege_tables.sql altered the
      table_privs.table_priv column to contain too few privileges,
      causing loss of the CREATE VIEW and SHOW VIEW privileges.
    * A server crash occurred when using LOAD DATA to load a table
      containing a NOT NULL spatial column, when the statement did
      not load the spatial column. Now a NULL supplied to NOT NULL
      column error occurs. (Bug#22372:
    * Unsigned BIGINT values treated as signed values by the MOD()
      function. (Bug#19955:
    * Compiling PHP 5.1 with the MySQL static libraries failed on
      some versions of Linux.
    * The DELIMITER statement did not work correctly when used in an
      SQL file run using the SOURCE statement.
    * VARBINARY column values inserted on a MySQL 4.1 server had
      trailing zeroes following upgrade to MySQL 5.0 or later.
    * Subqueries of the form NULL IN (SELECT ...) returned invalid
      results. (Bug#8804:,
    * The --extern option for did not function
      correctly. (Bug#24354:
    * ALTER TABLE statements that performed both RENAME TO and
      {ENABLE|DISABLE} KEYS operations caused a server crash.
    * The MySQL 5.1.12 binaries for Windows were missing the
      FEDERATED, EXAMPLE, and BLACKHOLE storage engines.
    * myisampack wrote to unallocated memory, causing a crash.
    * Some small double precision numbers (such as 1.00000001e-300)
      that should have been accepted were truncated to zero.
    * The mysql.server script used the source command, which is less
      portable than the . command; it now uses . instead.
    * DATE_ADD() requires complete dates with no "zero" parts, but
      sometimes did not return NULL when given such a date.
    * Using FLUSH TABLES in one connection while another connection
      is using HANDLER statements caused a server crash.
    * FLUSH LOGS or mysqladmin flush-logs caused a server crash if
      the binary log was not open.
    * On HP-UX, mysqltest (non-thread-safe) crashed due to being
      linked against a thread-safe libmysys library.