Note: This was an internal release only, and no binaries were published.
      MySQL 5.1.10 includes the patches for recently reported security
      vulnerabilites in the MySQL client-server protocol. We would like
      to thank Stefano Di Paola <stefano.dipaola@wisec.it>
      for finding and reporting these to us.
    
この項目は前回のMySQL公式リリース以降に適用されたすべての変更とバグ修正を説明します。更に頻繁でありご使用のバージョンと機能に合わせた更新情報を希望される場合には、MySQLエンタープライズ(商用版MySQL)への登録をお考えください。詳細は、http://www.mysql.com/products/enterpriseをご覧下さい。
Functionality added or changed:
          Security enhancement: Added
          the global max_prepared_stmt_count system
          variable to limit the total number of prepared statements in
          the server. This limits the potential for denial-of-service
          attacks based on running the server out of memory by preparing
          huge numbers of statements. The current number of prepared
          statements is available through the
          prepared_stmt_count system variable. (Bug#16365)
        
The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See 項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」.
Binary distributions that include SSL support now are built using yaSSL when possible.
          The
          MySQL-shared-compat-5.1.
          shared compatibility RPMs no longer contain libraries for
          MySQL 5.0. This avoids a conflict because the 5.0 and 5.1
          libraries share the same soname number. It contains libraries
          for 3.23, 4.0, 4.1, and 5.1. (Bug#19288)
        X-.i386.rpm
          The ONLY_FULL_GROUP_BY SQL mode now also
          applies to the HAVING clause. That is,
          columns not named in the GROUP BY clause
          cannot be used in the HAVING clause if not
          used in an aggregate function. (Bug#18739)
        
          SQL syntax for prepared statements now supports
          ANALYZE TABLE, OPTIMIZE
          TABLE, and REPAIR TABLE. (Bug#19308)
        
          XPath expressions passed to the
          ExtractValue() and
          UpdateXML() functions can now include the
          colon character (「 : 」). This
          enables use of these functions with XML which employs
          namespaces. (Bug#18170)
        
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug#17737)
For the mysql client, typing Control-C causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. Previously, Control-C caused mysql to exit in all cases. (Bug#1989)
          Creating a table in an InnoDB database with a column name that
          matched the name of an internal InnoDB column (including
          DB_ROW_ID, DB_TRX_ID,
          DB_ROLL_PTR and
          DB_MIX_ID) would cause a crash. MySQL now
          returns error 1005 (cannot create table) with
          errno set to -1. (Bug#18934)
        
          On Windows, some names such as nul,
          prn, and aux could not
          be used as filenames because they are reserved as device
          names. These are now allowable names in MySQL. They are
          encoded by appending @@@ to the name when
          the server creates the corresponding file or directory. This
          occurs on all platforms for portability of the corresponding
          database object between platforms. (Bug#17870)
        
          Added the REFERENTIAL_CONSTRAINTS table to
          INFORMATION_SCHEMA. It provides information
          about foreign keys.
        
          Added --debug option to Instance Manager.
        
          Added the have_dynamic_loading system
          variable that indicates whether the server supports dynamic
          loading of plugins.
        
          Added the sql_big_selects system variable
          to the output of SHOW VARIABLES.
        
          You must now have the DROP privilege to
          drop table partitions. (Bug#17139)
        
          NDB Cluster: It is now possible to perform
          a partial start of a cluster. That is, it is now possible to
          bring up the cluster without running ndbd --initial on
          all configured data nodes first. (Bug#18606)
        
          NDB Cluster: It is now possible to restore
          a Cluster backup between big-endian and little-endian
          machines. (Bug#19255)
        
          NDB Cluster: It is now possible to install
          MySQL with Cluster support to a non-default location and
          change the search path for font description files using either
          the --basedir or
          --character-sets-dir options. (Previously in
          MySQL 5.1, ndbd searched only the default
          path for character sets.)
        
          In result set metadata, the
          MYSQL_FIELD.length value for
          BIT columns now is reported in number of
          bits. For example, the value for a BIT(9)
          column is 9. (Formerly, the value was related to number of
          bytes.) (Bug#13601)
        
          Added the KEY_BLOCK_SIZE table option and
          index option. This can be used in CREATE
          TABLE, ALTER TABLE, and
          CREATE INDEX statements to provide a hint
          to the storage engine about the size to use for index key
          blocks. The engine is allowed to change the value if
          necessary.
        
Bugs fixed:
          Security fix: A malicious
          client, using specially crafted invalid login or
          COM_TABLE_DUMP packets was able to read
          uninitialized memory, which potentially, though unlikely in
          MySQL, could have led to an information disclosure.
          (CVE-2006-1516, CVE-2006-1517) Thanks to Stefano Di Paola
          <stefano.dipaola@wisec.it> for finding and
          reporting this bug.
        
          Security fix: A malicious
          client, using specially crafted invalid
          COM_TABLE_DUMP packets was able to trigger
          an exploitable buffer overflow on the server. (CVE-2006-1518)
          Thanks to Stefano Di Paola
          <stefano.dipaola@wisec.it> for finding and
          reporting this bug.
        
          NDB Cluster (Replication): Using the
          --binlog-do-db option caused problems with
          CREATE TABLE on the cluster acting as the
          replication master. (Bug#19492)
        
          NDB Cluster: Some queries having a
          WHERE clause of the form c1=val1
          OR c2 LIKE 'val2' were not evaluated correctly. (Bug
          # 17421)
        
          NDB Cluster: Repeated use of the
          SHOW and ALL STATUS
          commands in the ndb_mgm client could cause
          the mgmd process to crash. (Bug#18591)
        
          NDB Cluster: An issue with
          ndb_mgmd prevented more than 27
          mysqld processes from connecting to a
          single cluster at one time. (Bug#17150)
        
          Running myisampack followed by
          myisamchk with the
          --unpack option would corrupt the
          auto_increment key. (Bug#12633)
        
          A view definition that referred to an alias in the
          HAVING clause could be saved in the
          .frm file with the alias replaced by the
          expression that it referred to, causing failure of subsequent
          SELECT * FROM
           statements.
          (Bug#19573)
        view_name
          A compatibility issue with NPTL (Native POSIX Thread Library)
          on Linux could result in a deadlock with FLUSH TABLES
          WITH READ LOCK under some conditions. (Bug#20048)
        
          MyISAM table deadlock was possible if one
          thread issued a LOCK TABLES request for
          write locks and then an administrative statement such as
          OPTIMIZE TABLE, if between the two
          statements another client meanwhile issued a multiple-table
          SELECT for some of the locked tables. (Bug#16986)
        
The patch for Bug#17164 introduced the problem that some outer joins were incorrectly converted to inner joins. (Bug#19816)
          A NUL byte within a comment in a statement
          string caused the rest of the string not to be written to the
          query log, allowing logging to be bypassed. (CVE-2006-0903)
          (Bug#17667)
        
          NDB Cluster: mysqld
          could crash when attempting an update if the cluster had
          failed previously. (Bug#18798)
        
          mysql-test-run.pl started
          NDB even for test cases that didn't need
          it. (Bug#19083)
        
          Selecting from a view that used GROUP BY on
          a non-constant temporal interval (such as
          DATE(
          could cause a server crash. (Bug#19490)
        col) + INTERVAL
          TIME_TO_SEC(col) SECOND
          An outer join of two views that was written using {
          OJ ... } syntax could cause a server crash. (Bug#19396)
        
          mysql displayed NULL for
          strings that are empty or contain only spaces. (Bug#19564)
        
A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug#17379, Bug#18940)
          SELECT DISTINCT queries sometimes returned
          only the last row. (Bug#18068)
        
          Eliminated some memory corruption problems that resultsd in
          double free or corruption errors and a
          server crash. (Bug#19154)
        
          Use of CONVERT_TZ() in a stored function or
          trigger (or in a stored procedure called from a stored
          function or trigger) caused an error. (Bug#11081)
        
Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug#14292)
          MySQL-shared-compat-5.1.9-0.i386.rpm
          incorrectly depended on glibc 2.3 and could
          not be installed on a glibc 2.2 system.
          (Bug#16539)
        
          Updates to a MEMORY table caused the size
          of BTREE indexes for the table to increase.
          (Bug#18160)
        
          REPAIR TABLE did not restore the length for
          packed keys in tables created under MySQL 4.x. (Bug#17810)
        
The parser leaked memory when its stack needed to be extended. (Bug#18930)
          When myisamchk needed to rebuild a table,
          AUTO_INCREMENT information was lost. (Bug#10405)
        
          Use of --default-storage-engine=innodb
          resulted in an error with the server reporting that
          InnoDB was an unknown table type. (Bug#16691)
        
          Executing a CREATE EVENT statement could
          cause 100% CPU usage. (Bug#19170)
        
          After calling FLUSH STATUS, the
          max_used_connections variable did not
          increment for existing connections and connections which use
          the thread cache. (Bug#15933)
        
MySQL would not compile on Linux distributions that use the tinfo library. (Bug#18912)
An issue with file handling in the partitioning code could cause mysqld to crash when started and then stopped within a very short period of time. (Bug#19313)
          NDB Cluster (Replication): When taking part
          in Cluster replication of tables containing
          BLOB columns, mysqld
          falsely reported a large memory leak in the replication
          buffers when there was none. (Bug#19247)
        
          NDB Cluster: Stopping multiple nodes could
          cause node failure handling not to be completed. (Bug#19039)
        
          NDB Cluster: A simultaneous DROP
          TABLE and table update operation utilising a table
          scan could trigger a node failure. (Bug#18597)
        
          NDB Cluster: ndbd could
          sometimes fail to start with the error Node failure
          handling not completed following a graceful
          restart. (Bug#18550)
        
          NDB Cluster: Backups could fail for large
          clusters with many tables, where the number of tables
          approached MaxNoOfTables. (Bug#17607)
        
          NDB Cluster: A 5.1.6 or newer server did
          not read local checkpoints recorded by any other 5.1 version,
          thus preventing a system restart following an upgrade. (Bug#19333)
        
          NDB Cluster: Trying to restore the
          apply_status table from a 5.0 cluster
          backup failed on a 5.1 server. (Bug#18935)
        
          NDB Cluster (Disk Data): CREATE
          LOGFILE GROUP accepted values other than
          NDB or NDBCLUSTER in the
          ENGINE clause. (Bug#18604)
        
          NDB Cluster (Disk Data): Omitting the
          required ENGINE clause from a
          CREATE LOGFILE GROUP or CREATE
          TABLESPACE statement caused the server to crash. An
          appropriate error message is now returned instead. (Bug#18603)
        
          NDB Cluster: mysqldump
          included in its output data from the internal
          cluster database. (Bug#17840)
        
          Event-creation statements enclosed in multi-line comments
          using /*! syntax were not parsed correctly. (Bug#18078)
        version_number
          ... */
          Within a trigger, CONNECTION_ID() did not
          return the connection ID of the thread that caused the trigger
          to be activated. (Bug#16461)
        
          mysqltest incorrectly interpreted some
          ER_ error
          names given in the xxxerror command. (Bug#18495)
        
          For single-SELECT union constructs of the
          form (SELECT ... ORDER BY
          order_list1 [LIMIT
          n]) ORDER BY
          order_list2, the ORDER
          BY lists were concatenated and the
          LIMIT clause was ignored. (Bug#18767)
        
          Logging to the mysql.general_log and
          mysql.slow_log tables did not work for
          Windows builds because the CSV storage
          engine was unavailable. The CSV engine now
          is enabled in Windows builds. (Bug#17368)
        
          LOAD DATA FROM MASTER would fail when
          trying to load the INFORMATION_SCHEMA
          database from the master, because the
          INFORMATION_SCHEMA system database would
          already exist on the slave. (Bug#18607)
        
          The binary log would create an incorrect
          DROP query when creating temporary tables
          during replication. (Bug#17263)
        
          CREATE VIEW statements would not be
          replicated to the slave if the
          --replicate-wild-ignore-table rule was
          enabled. (Bug#18715)
        
          In mysqltest, --sleep=0
          had no effect. Now it correctly causes
          sleep commands in test case files to sleep
          for 0 seconds. (Bug#18312)
        
          Attempting to set the default value of an
          ENUM or SET column to
          NULL caused a server crash. (Bug#19145)
        
          Index corruption could occur in cases when
          key_cache_block_size was not a multiple of
          myisam_block_size (for example, with
          key_cache_block_size=1536 and
          myisam_block_size=1024). (Bug#19079)
        
          The sql_big_selects system variable was not
          displayed by SHOW VARIABLES. (Bug#17849)
        
          The sql_notes and
          sql_warnings system variables were not
          always displayed correctly by SHOW
          VARIABLES (for example, they were displayed as
          ON after being set to
          OFF). (Bug#16195)
        
          LAST_INSERT_ID() in a stored function or
          trigger returned zero. . (Bug#15728)
        
          Use of CONVERT_TZ() in a view definition
          could result in spurious syntax or access errors. (Bug#15153)
        
          The system_time_zone and
          version_* system variables could not be
          accessed via SELECT
          @@ syntax. (Bug#12792, Bug#15684)
        var_name
          Conversion of a number to a CHAR UNICODE
          string returned an invalid result. (Bug#18691)
        
          Some fast ALTER TABLE operations (requiring
          no temporary table) did not work for all tables. (Bug#19011)
        
          DELETE and UPDATE
          statements that used large NOT IN
          ( clauses
          could use large amounts of memory. (Bug#15872)
        value_list)
          Prevent recursive views caused by using RENAME
          TABLE on a view after creating it. (Bug#14308)
        
          A LOCK TABLES statement that failed could
          cause MyISAM not to update table statistics
          properly, causing a subsequent CHECK TABLE
          to report table corruption. (Bug#18544)
        
          A failed ALTER TABLE operation could fail
          to clean up a temporary .frm file. (Bug#18129)
        
          For a reference to a non-existent stored function in a stored
          routine that had a CONTINUE handler, the
          server continued as though a useful result had been returned,
          possibly resulting in a server crash. (Bug#18787)
        
          InnoDB did not use a consistent read for
          CREATE ... SELECT when
          innodb_locks_unsafe_for_binlog was set.
          (Bug#18350)
        
          InnoDB could read a delete mark from its
          system tables incorrectly. (Bug#19217)
        
          myisamchk and
          myisam_ftdump should allow either table
          names or .MYI filenames as arguments, but
          allowed only table names. (Bug#19220)
        
          DROP DATABASE did not drop stored routines
          associated with the database if the database name was longer
          than 21 characters. (Bug#18344)
        
          Avoid trying to include
          <asm/atomic.h> when it doesn't work
          in C++ code. (Bug#13621)
        
          Executing SELECT on a large table that had
          been compressed within myisampack could
          cause a crash. (Bug#17917)
        
          NDB Cluster (NDBAPI): Passing a nonexistent
          index name to
          NdbIndexScanOperation::setBound() caused a
          segmentation fault. (Bug#19088)
        
          ALTER TABLE ... REBUILD PARTITION returned
          an inaccurate error message. (Bug#16819)
        
          InnoDB: A DELETE
          followed by an INSERT and then by an
          UPDATE on a partitioned
          InnoDB table caused subsequent queries to
          return incorrect results. (Bug#17992)
        
          NDB Cluster: A table insert or update of
          more than 128 bytes of data in a 4-replica Cluster could cause
          a node to crash. (Bug#18622)
        
          NDB Cluster (Disk Data): Concurrent table
          schema operations and operations on log files groups,
          tablespaces, data files, or undofiles could lead to Cluster
          node failures. (Bug#18575)
        
          NDB Cluster: An issue with replication
          caused a mysqld connected to a replicated
          cluster to crash when entering single user mode. (Bug#18535)
        
          Successive ALTER TABLE ... DROP PARTITION
          statements on the same subpartitioned table could eventually
          cause the server to crash. (Bug#18962)
        
          NDB Cluster: When attempting to create an
          index on a BIT or BLOB
          column, Error 743: Unsupported character set in
          table or index was returned instead of
          Error 906: Unsupported attribute type in
          index.
        
          NDB Cluster: The Cluster binlog
          mysqld accepted updates even though the
          binary log was not set up, which could lead to updates missing
          from the binary log. (Bug#18932)
        
          NDB Cluster: Concurrent
          INSERT and ROLLBACK
          statements from different connections could cause node
          failures. (Bug#19245)
        
          NDB Cluster (Disk Data): Running an
          INSERT and a DELETE on a
          Disk Data table in the same transaction could cause a
          deadlock. (Bug#19244)
        
          NDB Cluster (Disk Data): Issuing a
          CREATE LOGFILE GROUP statement during the
          drop of an NDB table would cause database
          corruption. (Bug#19141)
        
          NDB Cluster: ndb_restore
          failed to restore a backup made from a 5.0 cluster to a 5.1
          cluster. (Bug#18210)
        
          NDB Cluster: Adding an index to an unsigned
          integer column did not work correctly. (Bug#18133)
        
          NDB Cluster: A SELECT
          from an NDB table with ORDER BY
           and a
          indexed_columnLIMIT clause would fail following
          ALTER TABLE. (Bug#18094)
        
          NDB Cluster: Performing multiple
          ALTER TABLE operations on the same NDB
          table from different mysqld processes in
          the same cluster led to schema versioning errors when trying
          to access the table again following the restart of one of the
          mysqld processes. (Bug#16445)
        
          NDB Cluster: Starting
          mysqld without --log-bin
          caused DDL statements on NDB tables to time
          out. (Bug#19214)
        
          NDB Cluster: Fragment IDs were not being
          logged correctly, causing ndb_restore_log
          to fail. (Bug#18594)
        
          Casting a string to DECIMAL worked, but
          casting a trimmed string (using LTRIM() or
          RTRIM()) resulted in loss of decimal
          digits. (Bug#17043)
        
          NDB Cluster (Replication): Delete and
          update of rows in a table without a primary key failed on the
          slave. (Bug#17400)
        
          NDB Cluster: On slow networks or CPUs, the
          management client SHOW command could
          sometimes erroneously show all data nodes as being master
          nodes belonging to nodegroup 0. (Bug#15530)
        
          The XPath string-length() function was not
          implemented for use with ExtractValue().
          (Bug#16319)
        
Fix the way that Instance Manager finds the version number of instances, so that it works properly when the executable name isn't the same as what the Instance Manager launched (such as when wrapping a libtool-wrapped executable from the source tree). (Bug#19059)
          The server attempted to flush uninitialized log tables during
          SIGHUP processing, causing a crash. (Bug#18848)
        
          If the second or third argument to BETWEEN
          was a constant expression such as '2005-09-01 -
          INTERVAL 6 MONTH and the other two arguments were
          columns, BETWEEN was evaluated incorrectly.
          (Bug#18618)
        
          If the first argument to BETWEEN was a
          DATE or TIME column of a
          view and the other arguments were constants,
          BETWEEN did not perform conversion of the
          constants to the appropriate temporary type, resulting in
          incorrect evaluation. (Bug#16069)
        
          ExtractValue function did not return
          character data within <![CDATA[]]> as
          expected. (Bug#18285)
        
          Server and clients ignored the --sysconfdir
          option that was passed to configure. (Bug#15069)
        
          It was possible to create a
          RANGE-partitioned table with a partition
          defined using the clause VALUES LESS THAN
          (NULL), even though such a partition could never
          contain any values whatsoever. (Bug#18752)
        
          Running an ALTER TABLE on a partitioned
          table simultaneously experiencing a high number of concurrent
          DML statements could crash the server. (Bug#18572)
        
It was possible to use trailing spaces in the names of partitions and subpartitions. Attempting to do so now raises the error Incorrect partition name. (Bug#17973)
          LIKE searches failed on a
          CHAR column used as the partitioning column
          of a table partitioned by KEY. (Bug#17946)
        
          If the WHERE condition of a query contained
          an OR-ed FALSE term, the
          set of tables whose rows cannot serve for null-complements in
          outer joins was determined incorrectly. This resulted in
          blocking possible conversions of outer joins into joins by the
          optimizer for such queries. (Bug#17164)
        
          The ExtractValue() function failed with a
          syntax error when the XPath expression used special characters
          such as Ñ (「N-tilde」).
          (Bug#16233)
        
          Inserts failed with duplicate key errors on a table
          partitioned using an AUTO_INCREMENT column
          for the partitioning key. (Bug#18552, Bug#18753)
        
Delimited identifiers for partitions were not being treated the same as delimited identifiers for other database objects (such as tables and columns) with regard to allowed characters. (Bug#18750)
          A query on a table partitioned or subpartitioned by
          HASH did not display all results when using
          a WHERE condition involving a column used
          in the hashing expression. (Bug#18423, Bug#18329)
        
          If the server were built without partition support, it was
          possible to run partitioning-related statements with no errors
          or warnings, even though these statements would have no
          effect. Now such statements are disallowed unless the server
          has been compiled using the
          --with-partition option. (Bug#15561)
        
          NDB Cluster: In a 2-node cluster with a
          node failure, restarting the node with a low value for
          StartPartialTimeout could cause the cluster
          to come up partitioned (「split-brain」 issue).
          (Bug#16447)
        
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#18612)
          NDB Cluster: On systems with multiple
          network interfaces, data nodes would get 「stuck」
          in startup phase 2 if the interface connecting them to the
          management server was working on node startup while the
          interface interconnecting the data nodes experienced a
          temporary outage. (Bug#15695)
        
          NDB Cluster: Unused open handlers for
          tables in which the metadata had changed were not properly
          closed. This could result in stale results from Cluster tables
          following an ALTER TABLE. (Bug#13228)
        
          NDB Cluster: Uninitialized internal
          variables could lead to unexpected results. (Bug#11033, Bug#11034)
        
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug#16504)
          A recent change caused the mysql client not
          to display NULL values correctly and to
          display numeric columns left-justified rather than
          right-justified. The problems have been corrected. (Bug#18265)
        
          InnoDB failure to release an adaptive hash
          index latch could cause a server crash if the query cache was
          enabled. (Bug#15758)
        
          InnoDB: ALTER TABLE to
          add or drop a foreign key for an InnoDB
          table had no effect. (Bug#18477)
        
          NDB Cluster: Attempting to create an index
          using multiple columns on an explicitly partitioned table in a
          replicated Cluster database could cause the master
          mysqld process to crash. (Bug#18284)
        
          NDB Cluster: Queries using ORDER
          BY  failed against a
          pkNLIST-partitioned Cluster table having a
          multi-column primary key, where pkN
          represents one of the columns making up the primary key. (Bug#18598)
        
          Updating a field value when also requesting a lock with
          GET_LOCK() would cause slave servers in a
          replication environment to terminate. (Bug#17284)
        
