Functionality added or changed:
Packaging changes: MySQL 5.1.6 introduces some changes to distribution packaging:
Distributions include both a mysqld optimized server and mysqld-debug debugging server. There is no separate debug distribution.
There is no longer a mysqld-max server. (Note: This changed in MySQL 5.1.9: The mysqld-max server also is included in binary distributions.)
Server binaries no longer are stripped, except for RPM distributions.
Binary distributions for Unix and Unix-like systems no longer include safe_mysqld as a link to mysqld_safe. safe_mysqld has been deprecated since MySQL 4.0 and now is removed.
          Incompatible change: This
          release introduces the TRIGGER privilege.
          Previously, the SUPER privilege was needed
          to create or drop triggers. Now those operations require the
          TRIGGER privilege. This is a security
          improvement because you no longer need to grant users the
          SUPER privilege to enable them to create
          triggers. However, the requirement that the account named in a
          trigger's DEFINER clause must have the
          SUPER privilege has changed to a
          requirement for the TRIGGER privilege.
          After upgrading, be sure to update your grant tables as
          described in 項4.5.2. 「mysql_fix_privilege_tables — MySQL システム テーブルのアップグレード」.
          This process assigns the TRIGGER privilege
          to all accounts that had the SUPER
          privilege. (After updating, you might also consider whether
          any of those accounts no longer need
          SUPER.) If you fail to update the grant
          tables, triggers may fail when activated. (Bug#9142)
        
          Incompatible change: Before
          MySQL 5.1.6, the server writes general query log and slow
          query log entries to log files. As of MySQL 5.1.6, the
          server's logging capabilities for these logs are more
          flexible. Log entries can be written to log files (as before)
          or to the general_log and
          slow_log tables in the
          mysql database. If logging is enabled,
          either or both destinations can be selected. The
          --log-output option controls the destination
          or destinations of log output. See
          項4.11.1. 「一般クエリとスロー クエリのログ出力先の選択」.
        
          If logging is enabled, the default destination now is to log
          to tables, which differs from earlier versions. If you had the
          server configured for logging to log files formerly, use
          --log-output=FILE to preserve this behavior
          after an upgrade to MySQL 5.1.6 or higher.
        
          Incompatible change: Due to a
          change in the naming scheme for partitioning and
          subpartitioning files, it is not possible for the server to
          read partitioned tables created in previous MySQL versions. A
          suggested workaround is (1) to create a non-partitioned table
          with the same table schema using a standard CREATE
          TABLE statement (that is, with no partitioning
          clauses) and then (2) to issue a SELECT
          INTO to copy the data into the non-partitioned table
          before the upgrade; following the upgrade, you can partition
          the new table using ALTER TABLE ... PARTITION BY
          .... Alternatively, you can dump the table using
          mysqldump prior to upgrading and reload it
          afterwards with LOAD DATA. In either case,
          you should drop the pre-5.1.6 partitioned tables before
          upgrading to 5.1.6 or later. (Bug#13437)
        
          Important: If any partitioned
          tables that were created prior to MySQL 5.1.6 are present
          following an upgrade to MySQL 5.1.6 or later, it is also not
          possible to read from the
          INFORMATION_SCHEMA.PARTITIONS table, nor
          will you be able to drop those tables or the database or
          databases in which they are located. In this event, you must:
          (1) shut down mysqld; (2) manually delete
          the table, partition, and (if any) subpartition files; and
          then (3) restart the MySQL Server. (Bug#16695)
        
          Incompatible change: Words
          with apostrophes are now matched in a FULLTEXT search against
          non-apostrophe words (for example, a search for
          Jerry will match against the term
          Jerry's). Users upgrading to this version
          must issue REPAIR TABLE statements for
          tables containing FULLTEXT indexes. (Bug#14194)
        
MySQL 5.1.6 introduces the Event Scheduler which allows one to schedule statements for execution at predetermined times. Events can be transient (one-time-only) or recurrent at regular intervals, and may execute queries and statements permitted in stored routines, including compound statements.
Events can be altered after creation, and dropped when no longer needed.
          Information about scheduled events can be obtained using the
          statements SHOW EVENTS and SHOW
          CREATE EVENT, or by querying the
          INFORMATION_SCHEMA.EVENTS table. All of
          these are available beginning in MySQL 5.1.6.
        
          Users must have the EVENT privilege (also
          added in 5.1.6) to create events.
        
For more information, see 章 19. Event Scheduler.
Replication between MySQL Clusters is now supported. It is now also possible to replicate between a MySQL Cluster and a non-cluster database. See 項14.10. 「MySQL Cluster レプリケーション」.
Special characters in database and table identifiers now are encoded when creating the corresponding directory names and filenames. This relaxes the restrictions on the characters that can appear in identifiers. See 項8.2.3. 「ファイル名への識別子のマッピング」.
Queries against partitioned tables can now take advantage of partition pruning. In some cases, this can result in query execution that is an order of magnitude faster than the same query against a non-partitioned version of the same table.
          The mysqldump utility now supports an
          option for dumping tablespaces. Use -Y or
          --all-tablespaces to enable this
          functionality. (Bug#16753)
        
          Partition support is not an 「engine」, but it was
          included in the output of SHOW ENGINES. Now
          it is not. (Bug#14355) The
          have_partition_engine variable was renamed
          to have_partitioning. (Bug#16718)
        
          ANALYZE TABLE is now supported for
          partitioned tables. (Bug#13441)
        
          Added the event_scheduler system variable.
        
          Added the ndb_extra_logging system
          variable.
        
          Added the FILES table to
          INFORMATION_SCHEMA.
        
          Added the EVENTS table to
          INFORMATION_SCHEMA.
        
          Added the PARTITIONS table to
          INFORMATION_SCHEMA.
        
          The ARCHIVE storage engine now supports the
          AUTO_INCREMENT column attribute and the
          AUTO_INCREMENT table option.
          項13.10. 「ARCHIVE ストレージエンジン」.
        
          Added support for the CREATE INDEX and
          DROP INDEX statements to the NDB
          Cluster storage engine.
        
          Server plugins can register their own status variables to be
          displayed by the SHOW STATUS statement.
        
Bugs fixed:
          An indexing error sometimes caused values to be assigned to
          the wrong RANGE partition. (Bug#16684)
        
          NDB Cluster:
          ndb_delete_all would run out of memory on
          tables containing BLOB columns. (Bug#16693)
        
          Using the TRUNCATE() function with a
          negative number for the second argument on a
          BIGINT column returned incorrect results.
          (Bug#8461)
        
When the fulltext search parser plugin returned more words than half of the length (in bytes) of the query string, the server would crash. (Bug#16722)
Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug#15588)
          A FULLTEXT query in a prepared statement
          could result in unexpected behavior. (Bug#14496)
        
          STR_TO_DATE(1,NULL) caused a server crash.
          (CVE-2006-3081, Bug#15828)
        
          An INSERT statement in a stored procedure
          corrupted the binary log. (Bug#16621)
        
          The mysql_real_connect() C API function
          incorrectly reset the MYSQL_OPT_RECONNECT
          option to its default value. (Bug#15719)
        
          Specifying a value for --tmpdir without a
          trailing slash had unpredictable results. (Bug#15904)
        
          Attempting to insert data into a partitioned table that used
          the BLACKHOLE storage engine caused
          mysqld to crash. (Bug#14524)
        
          Using RANGE partitioning with a
          CASE statement as the partitioning function
          would cause records to be placed in the wrong partition. (Bug#15393)
        
          ALTER TABLE ... ADD PARTITIONS on a table
          with one partition crashed the server. (Bug#15820)
        
          NDB Cluster returned incorrect Can't find
          file error for OS error 24, changed to Too
          many open files. (Bug#15020)
        
          Multi-byte path names for LOAD DATA and
          SELECT ... INTO OUTFILE caused errors.
          Added the character_set_filesystem system
          variable, which controls the interpretation of string literals
          that refer to filenames. (Bug#12448)
        
Certain subqueries where the inner query is the result of a aggregate function would return different results on MySQL 5.0 than on MySQL 4.1. (Bug#15347)
The error message for specifying values for which no partition exists returned wrong values on certain platforms. (Bug#15910)
          Certain Japanese table names were not properly saved during a
          CREATE TABLE statement. (Bug#3906)
        
NDB Cluster leaked disk space when performing INSERTS/DELETES in a loop. (Bug#16771)
NDB Cluster returned wrong error when tablespace on disk was full. (Bug#16738)
          The DATA DIRECTORY and INDEX
          DIRECTORY clauses of a CREATE
          TABLE statement involving partitions did not work.
          (Bug#14354)
        
Subselect could return wrong results when records cache and grouping was involved. (Bug#15347)
In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug#15633)
The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug#15538)
          NDB Cluster: Trying to import too many
          dumped tables requiring resources beyond those allocated in
          the cluster configuration would cause the server to crash
          instead of reporting an insufficient resources error. (Bug#16455)
        
          NDB Cluster (Disk Data): Tablespaces
          created using parameters with relatively low values (< 10
          MB) produced filesizes much smaller than expected. (Bug#16742)
        
          NDB Cluster: CREATE
          TABLESPACE statements were incorrectly parsed on
          64-bit platforms. (INITIAL SIZE
           worked, but
          sizeINITIAL SIZE =
           failed.) (Bug#13556)
        size
          Trying to add more than one partition in a single
          ALTER TABLE ... ADD PARTITION statement
          caused the server to crash. (Bug#16534)
        
Creating a partitioned table using a storage engine other than the session default storage engine caused the server to crash. (Bug#15966)
          An ALTER TABLE ... PARTITION BY ...
          statement did not have any effect. (Bug#15523)
        
          NDBCluster (Disk Data): The error message
          generated by a failed ADD UNDOFILE did not
          provide any reasons for the failure. (Bug#16267)
        
          NDBCluster (Disk Data): DROP
          LOGFILE GROUP corrupted the cluster file system and
          caused ndbd to fail when running more than
          one node on the same system. (Bug#16193)
        
          NDBCluster: A bitfield whose offset and
          length totaled 32 would crash the cluster. (Bug#16125)
        
          NDBCluster: Upon the completion of a scan
          where a key request remained outstanding on the primary
          replica and a starting node died, the scan did not terminate.
          This caused incompleted error handling of the failed node.
          (Bug#15908)
        
          NDBCluster: The
          ndb_autodiscover test failed sporadically
          due to a node not being permitted to connect to the cluster.
          (Bug#15619)
        
          Using mysqldump to obtain a dump of a
          partitioned table employing the NDB storage
          engine produced a non-functional table creation statement.
          (Bug#13155)
        
          SHOW CREATE TABLE did not display the
          PARTITIONS clause for tables partitioned by
          HASH or KEY. (Bug#14327)
        
          Inserting a negative value into an integer column used as the
          partitioning key for a table partitioned by
          HASH could cause the server to crash. (Bug#15968)
        
          With a table partitioned by LIST, inserting
          a value which was smaller than any value shown in the
          partitioning value-lists could cause the server to crash. (Bug#14365)
        
          ALTER TABLE ... DROP PARTITION would
          truncate all DATE column values in the
          table's remaining partitions to NULL. (Bug#13644)
        
          ALTER TABLE ... ADD PARTITION could crash
          the server or cause an Out of memory
          error in some circumstances. (Bug#13447)
        
The server would allow foreign keys to be declared in the definition of a partitioned table despite the fact that partitioned tables do not support foreign keys (see 項15.5. 「パーティショニングの制約と制限」). (Bug#13446)
          A SELECT from a key-partitioned table with
          a multi-column key could cause the server to crash. (Bug#13445)
        
          Issuing a TRUNCATE statement twice in
          succession on the same partitioned table would cause the
          server to crash. (Bug#13442)
        
          Using a REPLACE statement on a partitioned
          table caused the server to crash. (Bug#13440)
        
          Using an identifier rather than a literal integer value in the
          LESS THAN clause of a range-partitioned
          table could cause the server to crash and corruption of
          tables. (Bug#13439)
        
          Using ENGINE=... within a
          PARTITION clause could cause the server to
          crash. (Bug#13438)
        
          CREATE TABLE ... LIKE did not work if the
          table whose schema was to be copied was a partitoned table.
          (Bug#13435)
        
          SHOW CREATE TABLE did not display the
          PARTITIONS clause for tables partitioned by
          HASH or KEY. (Bug#14327)
        
          Certain permission management statements could create a
          NULL hostname for a user, resulting in a
          server crash. (Bug#15598)
        
Temporary table aliasing did not work inside stored functions. (Bug#12198)
Parallel builds occasionally failed on Solaris. (Bug#16282)
