MySQL Community Server 5.1.38がリリースされました。


最も普及しているオープンソースデータベース管理システムの新バージョンであるMySQL Community Server 5.1.38がリリースされました。MySQL 5.1.38は、プロダクションシステムでの使用をお勧めします。

MySQL 5.1の新機能の概要については、以下を参照してください。

新たなサーバにMySQL 5.1.38をインストール、または以前のMySQLリリースからMySQL 5.1.38にアップグレードする際の情報については、以下を参照してください。

MySQL 5.1.38は、から、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。



MySQL 5.1に関するオープンな問題の情報については、以下のエラッタリストを参照してください。




C.1.1. Changes in MySQL 5.1.38

   As of MySQL 5.1.38, the InnoDB Plugin is included in MySQL
   releases, in addition to the built-in version of InnoDB that
   has been included in previous releases. This version of the
   InnoDB Plugin is 1.0.4 and is considered of Beta quality.

   The InnoDB Plugin offers new features, improved performance
   and scalability, enhanced reliability and new capabilities
   for flexibility and ease of use. Among the features of the
   InnoDB Plugin are "Fast index creation," table and index
   compression, file format management, new INFORMATION_SCHEMA
   tables, capacity tuning, multiple background I/O threads, and
   group commit.

   For information about these features, see the InnoDB Plugin
   Manual at
   For general information about using InnoDB in MySQL,
   see Section 13.6, "The InnoDB Storage Engine."

   The InnoDB Plugin is included in source and binary
   distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64,
   ia64), and generic Linux RPM packages.

   To use the InnoDB Plugin, you must disable the built-in
   version of InnoDB that is also included and instruct the
   server to use InnoDB Plugin instead. To accomplish this, use
   the following lines in your my.cnf file:


   For the plugin-load option, innodb is the name to associate
   with the plugin and is the name of the
   shared object library that contains the plugin code. The
   extension of .so applies for Unix (and similar) systems. For
   HP-UX on HPPA (11.11) or Windows, the extension should be .sl
   or .dll, respectively, rather than .so.

   If the server has problems finding the plugin when it starts
   up, specify the pathname to the plugin directory. For
   example, if plugins are located in the lib/mysql/plugin
   directory under the MySQL installation directory and you have
   installed MySQL at /usr/local/mysql, use these lines in your
   my.cnf file:


   The previous examples show how to activate the storage engine
   part of InnoDB Plugin, but the plugin also implements several
   InnoDB-related INFORMATION_SCHEMA tables. (For information
   about these tables, see
   To enable these tables, include additional name=library
   pairs to the plugin-load option:


   The plugin-load option here is formatted on multiple lines
   for display purposes but should be written in my.cnf using a
   single line without spaces in the option value. On Windows,
   substitute .dll for each instance of the .so extension.

   After the server starts up, verify that InnoDB Plugin has
   been loaded by using the SHOW PLUGINS statement. For example,
   if you have loaded the storage engine and the
   INFORMATION_SCHEMA tables, the output should include lines
   similar to these:

     mysql> SHOW PLUGINS;
     | Name                | Status | Type               | Library             ...
     | InnoDB              | ACTIVE | STORAGE ENGINE     | ...

   If you build MySQL from a source distribution, InnoDB Plugin
   is one of the storage engines that is built by default. Build
   MySQL the way you normally do; for example, by using the
   instructions at Section 2.10, "MySQL Installation Using a
   Source Distribution." After the build completes, you should
   find the plugin shared object file under the
   storage/innodb_plugin directory, and make install should
   install it in the plugin directory. Configure MySQL to use
   InnoDB Plugin as described earlier for binary distributions.

   Functionality added or changed:

     * Replication: With statement-based logging (SBL),
       repeatedly calling statements that are unsafe for SBL
       caused a warning message to be written to the error log
       for each statement, and there was no way to disable this
       behavior. Now the server logs messages about statements
       that are unsafe for statement-based logging only if the
       log_warnings variable is greater than 0.

     * The undocumented TRANSACTIONAL and PAGE_CHECKSUM keywords
       were removed from the grammar.

     * Previously, SELECT ... INTO OUTFILE dumped column values
       without character set conversion, which could produce
       data files that cannot be imported without error if
       different columns used different character sets. A
       consequence of this is that mysqldump ignored the
       --default-character-set option if the --tab option was
       given (which causes SELECT ... INTO OUTFILE to be used to
       dump data.)
       INTO OUTFILE now can be followed by a CHARACTER SET
       clause indicating the character set to which dumped
       values should be converted. Also, mysqldump adds a
       CHARACTER SET clause to the SELECT ... INTO OUTFILE
       statement used to dump data, so that
       --default-character-set is no longer ignored if --tab is
       Other changes are that SELECT ... INTO OUTFILE enforces
       that ENCLOSED BY and ESCAPED BY arguments must be a
       single character, and SELECT ... INTO OUTFILE and LOAD
       DATA INFILE produce warnings if non-ASCII field or line
       separators are specified.

     * The MySQL euckr character set now can store extended
       codes [81...FE][41..5A,61..7A,81..FE], which makes euckr
       compatible with the Microsoft cp949 character set.

   Bugs fixed:

     * Partitioning: Attempting to create a table using an
       invalid or inconsistent subpartition definition caused
       the server to crash. An example of such a statement is
       shown here:

         CREATE TABLE t2 (s1 INT, s2 INT)
             PARTITION p1 VALUES IN (1),


     * Partitioning: When using a debug build of MySQL, if a
       query against a partitioned table having an index on one
       or more DOUBLE columns used that index, the server failed
       with an assertion.

     * Partitioning: A failed RENAME TABLE operation on a table
       with user-defined partitioning left the table in an
       unusable state, due to only some of the table files
       having been renamed.

     * Replication: When a statement that changes a
       non-transactional table failed, the transactional cache
       was flushed, causing a mismatch between the execution and
       logging histories. Now we avoid flushing the
       transactional cache unless a COMMIT or ROLLBACK is
       issued. (Bug#46129:

     * Replication: The internal function
       get_master_version_and_clock() (defined in sql/
       ignored errors and passed directly when queries failed,
       or when queries succeeded but the result retrieved was
       empty. Now this function tries to reconnect the master if
       a query fails due to transient network problems, and to
       fail otherwise. The I/O thread now prints a warning if
       the some system variables do not exist on master (in the
       event the master is a very old version of MySQQL,
       compared to the slave.)

     * Replication: When using the MIXED logging format, after
       creating a temporary table and performing an update that
       switched the logging format to ROW, the format switch
       persisted following the update. This prevented any
       subsequent DDL statements on temporary tables from being
       written to the binary log until the temporary table was
       dropped. (Bug#43046:
       See alsoBug#40013:
       This regression was introduced by

     * Replication: If the --log-bin-trust-function-creators
       option is not enabled, CREATE FUNCTION requires one of
       the modifiers DETERMINISTIC, NO SQL, or READS SQL DATA.
       When using statement-based mode, the execution of a
       stored function should follow the same rules; however,
       only functions defined with DETERMINSTIC could actually
       be executed. In addition, the wrong error was generated
       (ER_BINLOG_ROW_RBR_TO_SBR instead of
       Now execution of stored functions is compatible with
       creation in this regard; when a stored function without
       one of the modifiers above is executed in STATEMENT mode,
       the correct error is raised, and functions defined using
       NO SQL, READS SQL DATA, or both (that is, without using
       DETERMINSTIC) can be excuted.

     * The test suite was missing from RPM packages.

     * Incorrect index optimization could lead to incorrect
       results or server crashes.

     * The server printed warnings at startup about adjusting
       the value of the max_join_size system variable. (These
       were harmless, but might be seen by users as
       significant.) (Bug#46385:

     * After an error such as a table-full condition, INSERT
       IGNORE could cause an assertion failure for debug builds.

     * An optimization that moved an item from a subquery to an
       outer query could cause a server crash.

     * Several Valgrind warnings were corrected.

     * CREATE TABLE ... SELECT could cause a server crash if no
       default database was selected.

     * For problems reading SSL files during SSL initialization,
       the server wrote error messages to stderr rather than to
       the error log. (Bug#45770:

     * The vendor name change from MySQL AB to Sun Microsystems,
       Inc. in RPM packages was not handled gracefully when
       upgrading MySQL using an RPM package.

     * A Windows Installation using the GUI installer would fail

         MySQL Server 5.1 Setup Wizard ended prematurely

         The wizard was interrupted before MySQL Server 5.1. could be
         completely installed.

         Your system has not been modified. To complete installation at
         another time, please run setup again.

         Click Finish to exit the wizard

       This was due to an step in the MSI installer that could
       fail to execute correctly on some environments.

     * Invalid memory reads could occur using the compressed
       client/server protocol.

     * The mysql_real_connect() C API function only attempted to
       connect to the first IP address returned for a hostname.
       This could be a problem if a hostname mapped to multiple
       IP address and the server was not bound to the first one
       returned. Now mysql_real_connect() attempts to connect to
       all IPv4/6 addresses that a domain name maps to.

     * Invalid input could cause invalid memory reads by the
       parser. (Bug#45010:

     * Some files in an AIX tar file distribution unpacked with
       incorrect permissions.

     * For debug builds, executing a stored procedure as a
       prepared statement could sometimes cause an assertion
       failure. (Bug#44521:

     * Using mysql_stmt_execute() to call a stored procedure
       could cause a server crash.

     * Creating a new instance after previously removing an
       instance would fail to complete the installation properly
       because the security settings could not be applied
       correctly. (Bug#44428:

     * mysqlslap ignored the --csv option if it was given
       without an argument.

     * Enabling the event scheduler from within the file
       specified by --init-file caused a server crash.

     * The server did not always check the return value of calls
       to the hash_init() function.

     * The table cache lock (LOCK_open) is now an adaptive
       mutex, which should improve performance in workloads
       where this lock is heavily contended.

     * mysqladmin --count=X --sleep=Y incorrectly delayed Y
       seconds after the last iteration before exiting.

     * A test for stack growth failed on some platforms, leading
       to server crashes.

     * mysqladmin did not have enough space allocated for
       tracking all variables when using --vertical or
       --relative with extended-status.

     * Partitioning a log table caused a server crash.

     * When using quick access methods to search for rows in
       UPDATE and DELETE statements, there was no check whether
       a fatal error had already been sent to the client while
       evaluating the quick condition. Consequently, a false OK
       (following the error) was sent to the client, causing the
       error to be incorrectly transformed into a warning.

     * SHOW PROCESSLIST could access freed memory of a stored
       procedure run in a concurrent session.

     * During installation on Windows, the MySQL Instance
       Configuration Wizard window could be opened at a size too
       small to be usable.

     * make_binary_distribution did not always generate correct
       distribution names.

     * The server crashed when executing a prepared statement
       containing a duplicated MATCH() function call in the
       select list and ORDER BY clause; for example, SELECT
       MATCH(a) AGAINST('test') FROM t1 ORDER BY MATCH(a)
       AGAINST('test'). (Bug#37740:

     * The output of mysqldump --tab for views included a DROP
       TABLE statement without the IF EXISTS qualifier.

     * mysql_upgrade silently ignored the --basedir and
       --datadir options, which it accepts for backward
       compatibility. Now it prints a warning.

     * mysqlimport was not always compiled correctly to enable
       thread support, which is required for the --use-threads
       option. (Bug#32991:

     * mysqlcheck failed to fix table names when the
       --fix-table-names and --all-in-1 options were both
       specified. (Bug#31821:

     * If the MySQL server was killed without the PID file being
       removed, attempts to stop the server with mysql.server
       stop waited 900 seconds before giving up.

     * When performing an installation on Windows using the GUI
       installer, the installer would fail to wait long enough
       during installation for the MySQL service to be
       installed, which would cause the installation to fail and
       may cause security settings, such as the root password to
       not be applied correctly.

     * mysql included extra spaces at the end of some result set
       lines. (Bug#29622:

     * The mysql client inconsistently handled NUL bytes in
       column data in various output formats.

     * mysqlimport did not correctly quote and escape table
       identifiers and file names.

     * When installing the Windows service, using quotes around
       command-line configuration parameters could cause the
       quotes to incorrectly placed around the entire
       command-line option, and not just the value.

     * If the mysql client was built with the readline library
       and the .inputrc file mapped Space to the magic-space
       function, it became impossible to enter spaces.

     * If InnoDB reached its limit on the number of concurrent
       transactions (1023), it wrote a descriptive message to
       the error log but returned a misleading error message to
       the client, or an assertion failure occurred.