Functionality added or changed:
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 ... QUICK statements
for tables containing FULLTEXT indexes.
(Bug#14194)
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
Section 4.4.4, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”. 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 Section 5.2.1, “Selecting General Query and Slow Query Log Output Destinations”.
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.
Important Change: MySQL Cluster: Replication: Replication between MySQL Clusters is now supported. It is now also possible to replicate between a MySQL Cluster and a non-cluster database. See Section 20.11, “MySQL Cluster Replication”, for more information.
MySQL Cluster:
Added the ndb_extra_logging system variable.
MySQL Cluster:
The NDB storage engine now supports the
CREATE INDEX and DROP
INDEX statements.
Packaging: 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.
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. The have_partition_engine variable
was renamed to have_partitioning.
(Bug#14355, Bug#16718)
ANALYZE TABLE is now supported for
partitioned tables.
(Bug#13441)
Added the --use-threads option for
mysqlslap.
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.
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.)
Added the FILES table to
INFORMATION_SCHEMA.
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.
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 Section 8.2.3, “Mapping of Identifiers to Filenames”.
Added the event_scheduler system variable.
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 Chapter 25, Event Scheduler.
Distributions include both a mysqld optimized server and mysqld-debug debugging server. There is no separate debug distribution.
Server binaries no longer are stripped, except for RPM distributions.
The ARCHIVE storage engine now supports the
AUTO_INCREMENT column attribute and the
AUTO_INCREMENT table option.
Section 13.10, “The ARCHIVE Storage Engine”.
Server plugins can register their own status variables to be
displayed by the SHOW STATUS statement.
Added the PARTITIONS table to
INFORMATION_SCHEMA.
Added the EVENTS table to
INFORMATION_SCHEMA.
Bugs fixed:
MySQL Cluster:
NDB leaked disk space when performing
repeated INSERT or DELETE
statements.
(Bug#16771)
MySQL Cluster:
ndb_delete_all ran out of memory when
processing tables containing BLOB columns.
(Bug#16693)
MySQL Cluster: Trying to import too many dumped tables requiring resources beyond those allocated in the cluster configuration file caused the server to crash instead of reporting an insufficient resources error. (Bug#16455)
MySQL Cluster:
A BIT column whose offset and length totaled
32 caused the cluster to crash.
(Bug#16125)
MySQL Cluster:
The ndb_autodiscover test failed sporadically
due to a node not being permitted to connect to the cluster.
(Bug#15619)
MySQL Cluster:
NDB returned an incorrect Can't
find file error for OS error 24; this has been
changed to Too many open files.
(Bug#15020)
MySQL Cluster:
CREATE TABLESPACE statements were incorrectly
parsed on 64-bit platforms. (INITIAL SIZE
worked, but
sizeINITIAL SIZE = failed.)
(Bug#13556)size
MySQL Cluster:
Using mysqldump to obtain a dump of a
partitioned table employing the NDB storage
engine produced a non-functional table creation statement.
(Bug#13155)
Disk Data: Tablespaces created using parameters with relatively low values (10 MB or less) produced filesizes much smaller than expected. (Bug#16742)
Disk Data:
NDB returned the wrong error when the
tablespace on disk was full.
(Bug#16738)
Disk Data:
The error message generated by a failed ADD
UNDOFILE did not provide any reasons for the failure.
(Bug#16267)
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)
Cluster API: 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 incomplete error handling for the failed node. (Bug#15908)
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)
An indexing error sometimes caused values to be assigned to the
wrong RANGE partition.
(Bug#16684)
An INSERT statement in a stored procedure
corrupted the binary log.
(Bug#16621)
Trying to add more than one partition in a single ALTER
TABLE ... ADD PARTITION statement caused the server to
crash.
(Bug#16534)
Parallel builds occasionally failed on Solaris. (Bug#16282)
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)
Creating a partitioned table using a storage engine other than the session default storage engine caused the server to crash. (Bug#15966)
The error message for specifying values for which no partition exists returned wrong values on certain platforms. (Bug#15910)
Specifying a value for --tmpdir without a
trailing slash had unpredictable results.
(Bug#15904)
STR_TO_DATE(1,NULL) caused a
server crash.
(Bug#15828, CVE-2006-3081)
ALTER TABLE ... ADD PARTITIONS on a table
with one partition crashed the server.
(Bug#15820)
The mysql_real_connect() C API function
incorrectly reset the MYSQL_OPT_RECONNECT
option to its default value.
(Bug#15719)
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)
Certain permission management statements could create a
NULL hostname for a user, resulting in a
server crash.
(Bug#15598)
Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug#15588)
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)
An ALTER TABLE ... PARTITION BY ... statement
did not have any effect.
(Bug#15523)
Using RANGE partitioning with a
CASE expression as the
partitioning function would cause records to be placed in the
wrong partition.
(Bug#15393)
Certain subqueries where the inner query was the result of a aggregate function would return different results with MySQL 5.1 than with MySQL 4.1.
Subselects could also return wrong results when the query cache and grouping were involved. (Bug#15347)
Attempting to insert data into a partitioned table that used the
BLACKHOLE storage engine caused
mysqld to crash.
(Bug#14524)
A FULLTEXT query in a prepared statement
could result in unexpected behavior.
(Bug#14496)
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)
The DATA DIRECTORY and INDEX
DIRECTORY clauses of a CREATE TABLE
statement involving partitions did not work.
(Bug#14354)
SHOW CREATE TABLE did not display the
PARTITIONS clause for tables partitioned by
HASH or KEY.
(Bug#14327)
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 Section 21.5, “Restrictions and Limitations on Partitioning”). (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)
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)
Temporary table aliasing did not work inside stored functions. (Bug#12198)
Using the TRUNCATE() function with a
negative number for the second argument on a
BIGINT column returned incorrect results.
(Bug#8461)
Certain Japanese table names were not properly saved during a
CREATE TABLE statement.
(Bug#3906)

User Comments
Add your own comment.