Functionality added or changed:
Incompatible Change:
Words with apostrophes are now matched in a FULLTEXT search
against nonapostrophe 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 by running
mysql_upgrade. This will assign 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 the SUPER
privilege.) If you fail to update the grant tables, triggers may
fail when activated.
(Bug#9412)
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 noncluster database. See Section 17.6, “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 nonpartitioned 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 file names. This relaxes the restrictions on the characters that can appear in identifiers. See Section 8.2.3, “Mapping of Identifiers to File Names”.
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 Section 19.4, “Using the 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.12, “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
size
INITIAL SIZE =
failed.)
(Bug#13556)size
MySQL Cluster:
Using mysqldump to obtain a dump of a
partitioned table employing the NDB
storage engine produced a nonfunctional 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 full-text 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
host name 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 18.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 TABLE
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 file names.
(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.