| Assembler MIPS | Ansi C | Visual Basic | .NET | Java | HTML | ASP | PHP | JavaScript | | HOME |
Table of Contents
This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 5.1, which is currently MySQL 5.1.12-beta. Starting with MySQL 5.0, we began offering a new version of the Manual for each new series of MySQL releases (5.0, 5.1, and so on). For information about changes in previous release series of the MySQL database software, see the corresponding version of this Manual. For information about legacy versions of the MySQL software through the 4.1 series, see MySQL 3.23, 4.0, 4.1 Reference Manual.
We update this section as we add new features in the 5.1 series, so that everybody can follow the development process.
Note that we tend to update the manual at the same time we make changes to MySQL. If you find a recent version of MySQL listed here that you can't find on our download page (http://dev.mysql.com/downloads/), it means that the version has not yet been released.
The date mentioned with a release version is the date of the last BitKeeper ChangeSet on which the release was based, not the date when the packages were made available. The binaries are usually made available a few days after the date of the tagged ChangeSet, because building and testing all packages takes some time.
The manual included in the source and binary distributions may not be fully accurate when it comes to the release changelog entries, because the integration of the manual happens at build time. For the most up-to-date release changelog, please refer to the online version instead.
An overview of which features were added in MySQL 5.1 can be found here: Section 1.6.1, “What's New in MySQL 5.1”.
For a full list of changes, please refer to the changelog sections for each individual 5.1.x release.
This is a new Beta development release, fixing recently discovered bugs.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Functionality added or changed:
Incompatible change: The
namespace for scheduled events has changed, such that events
are no longer unique to individual users. This also means that
a user with the EVENT privilege on a given
database can now view, alter, or drop any events defined on
that database.
If you used scheduled events in an earlier MySQL 5.1 release, you should rename any of them having the same name and defined on the same database but belonging to different users — so that all events in a given database have unique names — before upgrading to 5.1.12 (or newer).
For additional information, see Section 22.4, “The Event Scheduler and MySQL Privileges”.
Incompatible change: The full-text parser plugin interface has changed in two ways:
The MYSQL_FTPARSER_PARAM structure has
a new flags member. This is zero if
there are no special flags, or
MYSQL_FTFLAGS_NEED_COPY, which means
that mysql_add_word() must save a copy
of the word (that is, it cannot use a pointer to the word
because the word is in a buffer that will be overwritten.)
This flag might be set or reset by MySQL before calling
the parser plugin, by the parser plugin itself, or by the
mysql_parse() function.
The mysql_parse() and
mysql_add_word() functions now take a
MYSQL_FTPARSER_PARAM as their first
argument, not a
MYSQL_FTPARSER_PARAM::mysql_ftparam as
before.
These changes are not backward compatible, so the API version
(MYSQL_FTPARSER_INTERFACE_VERSION) has
changed. For additional information, see
Section 28.2.5, “Writing Plugins”.
Incompatible change: In the
INFORMATION_SCHEMA.EVENTS table, the
EVENT_DEFINITION column now contains the
SQL executed by a scheduled event.
The EVENT_BODY column now contains the
language used for the statement or statements shown in
EVENT_DEFINITION. In MySQL 5.1, the value
shown in EVENT_BODY is always
SQL.
These changes were made to bring this table into line with the
INFORMATION_SCHEMA.ROUTINES table, and that
table's ROUTINE_BODY and
ROUTINE_DEFINITION columns. (Bug#16992)
Added the --set-charset option to
mysqlbinlog to allow the character set to
be specified for processing binary log files. (Bug#18351)
Added the --ndb-use-copying-alter-table
option to mysqld to provide a fallback in
case of problems with online ALTER TABLE
operations on NDBCluster tables.
Added the SHOW CONTRIBUTORS statement.
It is no longer possible to create partitioned tables using
the CSV storage engine.
NDB Cluster: A number of erroneous,
misleading, or missing error messages have been corrected.
(Bug#17297 & Bug#19543)
The ExtractValue() function now produces an
error when passed an XML fragment that is not well-formed.
(Bug#18201)
(Previously, the function allowed invalid XML fragments to be used.)
Bugs fixed:
Incompatible change: For
utf8 columns, the full-text parser
incorrectly considered several non-word punctuation and
whitespace characters as word characters, causing some
searches to return incorrect results. (Bug#19580)
The fix involves a change to the full-text parser, so any
tables that have FULLTEXT indexes on
utf8 columns must be repaired with
REPAIR TABLE:
REPAIR TABLE tbl_name QUICK;
There were several issues regarding how SHOW
STATUS affected some status variables and logging
which could impact monitoring the MySQL Server. The behavior
of this statement has been modified in two ways:
SHOW STATUS is no longer logged to
the slow query log.
SHOW STATUS no longer updates any
session status variables, except for
com_show_status.
However, SHOW STATUS continues to update
global status variables to allow
monitoring of what the server is actually doing. This is
because SHOW STATUS creates temporary
tables that may affect performance if it is called excessively
often.
It was possible using ALTER EVENT ... RENAME
... to move an event to a database on which the
user did not have the EVENT privilege. (Bug#18897)
NDB Cluster (Disk Data): The failure of a
CREATE TABLESPACE or CREATE
LOGFILE GROUP statement did not revert all changes
made prior to the point of failure. (Bug#16341)
NDB Cluster: Creating tables with
variable-size columns caused DataMemory to
be used but not freed when the tables were dropped. (Bug#20007)
NDB Cluster: Restoring a backup made using
ndb_restore failed when the backup had been
taken from a cluster whose data memory was full. (Bug#19852)
NDB Cluster: An excessive number of
ALTER TABLE operations could cause the
cluster to fail with NDB error code 773 (Out of
string memory, please modify StringMemory). (Bug#19275)
A number of dependency issues in the RPM
bench and test packages
caused installation of these packages to fail. (Bug#20078)
Queries using an indexed column as the argument for the
MIN() and MAX()
functions following an ALTER TABLE .. DISABLE
KEYS statement returned Got error 124
from storage engine until ALTER TABLE
... ENABLE KEYS was run on the table. (Bug#20357)
A redundant table map event could be generated in the binary log when there were no actual changes to a table being replicated. In addition, a slave failed to stop when attempting to replicate a table that did not exist on the slave. (Bug#18948)
Multiple calls to a stored procedure that altered a
partitioned MyISAM table would cause the
server to crash. (Bug#19309)
Adding an index to a partitioned table that had been created
using AUTO_INCREMENT =
caused the
valueAUTO_INCREMENT value to be reset. (Bug#19281)
A CREATE TABLE that produced a
The PARTITION function returns the wrong
type error also caused an Incorrect
information in file to be printed to
STDERR, and a junk file to be left in the
database directory. (Bug#16000)
NDB Cluster: TEXT
columns in Cluster tables having both an explicit primary key
and a unque key were not correctly updated by
REPLACE statements. (Bug#19906)
NDB Cluster: Running out of DataMemory
could sometimes crash ndbd and
mysqld processes. (Bug#19185)
NDB Cluster (Replication): A node failure
could send duplicate events, causing a
mysqld replicating tables containing
BLOBs to crash.
NDB Cluster (Disk Data):
INFORMATION_SCHEMA.FILES records for
UNDO files showed incorrect values in the
EXTENT_SIZE,
FREE_EXTENTS, and
TOTAL_EXTENTS columns. (Bug#20073)
NDB Cluster: An internal formatting error
caused some management client error messages to be unreadable.
(Bug#20016)
NDB Cluster: Running management client
commands while mgmd was in the process of
disconnecting could cause the management server to fail. (Bug#19932)
NDB Cluster (NDBAPI): Update operations on
blobs were not checked for illegal operations.
Note: Read locks with blob update operations are now upgraded from read committed to read shared.
NDB Cluster: The management client
ALL STOP command shut down
mgmd processes (as well as
ndbd processes). (Bug#18966)
NDB Cluster: Renaming of table columns was
not supported as fast a ALTER TABLE for NDB
tables. (Bug#20456)
NDB Cluster: Under some circumstances,
repeated DDL operations on one mysqld could
cause failure of a second mysqld attached
to the same cluster. (Bug#19770)
NDB Cluster (Replication): One or more of
the mysqld processes could fail when
subjecting a Cluster replication setup with multiple
mysqld processes on both the master and
slave clusters to high loads. (Bug#19768)
NDB Cluster: LOAD DATA
LOCAL failed to ignore duplicate keys in Cluster
tables. (Bug#19496)
NDB Cluster: Repeated
CREATE - INSERT -
DROP operations tables could in some
circumstances cause the MySQL table definition cache to become
corrupt, so that some mysqld processes
could access table information but others could not. (Bug#18595)
NDB Cluster (Disk Data): Running a large
nbumber of scans on Disk Data could cause subsequent scans to
perform poorly. (Bug#20334)
NDB Cluster (Disk Data): An issue with disk
allocation could sometimes cause a forced shutdown of the
cluster when running a mix of memory and Disk Data tables.
(Bug#18780)
NDB Cluster: The mgm
client command ALL CLUSTERLOG
STATISTICS=15; had no effect. (Bug#20336)
NDB Cluster: Under certain conditions, a
starting node could miss transactions, leading to
inconsistencies between the primary and backup replicas. (Bug#19929)
NDB Cluster: An uncommitted row could
sometimes be checkpointed and thus incorrectly included in a
backup. (Bug#19928)
NDB Cluster: A DELETE of
many rows immediately followed by an INSERT
on the same table could cause the ndbd
process on the backup replica to crash. (Bug#19293)
NDB Cluster: TRUNCATE
TABLE failed to reset the
AUTO_INCREMENT counter. (Bug#18864)
NDB Cluster: SELECT ... FOR
UPDATE failed to lock the selected rows. (Bug#18184)
NDB Cluster: New mysqld
processes were allowed to connect without a restart of the
cluster, causing the cluster to crash. (Bug#13266)
NDB Cluster: The failure of a data node
when preparing to commit a transaction (that is, while the
node's status was CS_PREPARE_TO_COMMIT)
could cause the failure of other cluster data nodes. (Bug#20185)
NDB Cluster: Renaming a table in such a way
as to move it to to a different database failed to move the
table's indexes. (Bug#19967)
NDB Cluster: SHOW ENGINE NDB
STATUS could sometimes return an incorrect value of
0 for the latest epoch, which could cause
problems with synchronising the binlog. (Bug#20142)
NDB Cluster: A CREATE
TABLE statement involving foreign key constraints
raised an error rather than being silently ignored (see
Section 13.1.7, “CREATE TABLE Syntax”). (Bug#18483)
This bug affected Cluster in MySQL 5.1 only.
NDB Cluster (Replication): Data definition
and data manipulation statements on different tables were not
serialised correctly in the binlog. For example, there was no
guarantee that a CREATE TABLE statement and
an update on a different table would occur in the same order
in the binlog as they did on the cluster being replicated.
(Bug#18947)
NDB Cluster: Resources for unique indexes
on Cluster table columns were incorrectly allocated, so that
only one-fourth as many unique indexes as indicated by the
value of UniqueHashIndexes could be
created. (Bug#19623)
Nested natural joins worked executed correctly when executed
as a non-prepared statement could fail with an
Unknown column ' error when executed as a prepared
statement, due to a name resolution problem. (Bug#15355)
col_name'
in 'field list'
The max_length metadata value for columns
created from CONCAT() could be incorrect
when the collation of an argument differed from the collation
of the CONCAT() itself. In some contexts
such as UNION, this could lead to
truncation of the column contents. (Bug#15962)
The MD5() and SHA() functions treat their arguments as case-sensitive strings. But when they are compared, their arguments were compared as case-insensitive strings, which leads to two function calls with different arguments (and thus different results) compared as being identical. This can lead to a wrong decision made in the range optimizer and thus to an incorrect result set. (Bug#15351)
For BOOLEAN mode full-text searches on
non-indexed columns, NULL rows generated by
a LEFT JOIN caused incorrect query results.
(Bug#14708)
If the general log table reached a large enough file size
(27GB), SELECT COUNT(*) on the table caused
a server crash. (Bug#17589)
Identifiers could not contain bytes with a value of 255, though that should be allowed as of the identifier-encoding changes made in MySQL 5.1.6. (Bug#12982)
BIT columns in a table could cause joins
that use the table to fail. (Bug#18895)
A UNION over more than 128
SELECT statements that use an aggregate
function failed. (Bug#18175)
InnoDB unlocked its data directory before
committing a transaction, potentially resulting in
non-recoverable tables if a server crash occurred before the
commit. (Bug#19727)
Multiple-table DELETE statements containing
a subquery that selected from one of the tables being modified
caused a server crash. (Bug#19225)
With settings of read_buffer_size >= 2G
and read_rnd_buffer_size >=2G,
LOAD DATA INFILE failed with no error
message or caused a server crash for files larger than 2GB.
(Bug#12982)
REPLACE statements caused activation of
UPDATE triggers, not
DELETE and INSERT
triggers. (Bug#13479)
The thread for INSERT DELAYED rows was
maintaining a separate AUTO_INCREMENT
counter, resulting in incorrect values being assigned if
DELAYED and non-DELAYED
inserts were mixed. (Bug#20195)
mysqldump wrote an extra pair of
DROP DATABASE and CREATE
DATABASE statements if run with the
--add-drop-database option and the database
contained views. (Bug#17201)
Shutting down a slave in a replication scenario where temporary tables are in use would cause the slave to produce a core dump. (Bug#19881)
When a statement is executed that does not generate any rows, an extra table map event and associated binrows event would be generated and written to the binary log. (Bug#19995)
File size specifications for InnoDB data files were case sensitive. (Bug#19609)
Compilation on Windows would fail if row based replication was
disabled using
--without-row-based-replication. (Bug#16837)
InnoDB did not increment the
handler_read_prev counter. (Bug#19542)
In the INFORMATION_SCHEMA.FILES table, the
INITIAL_SIZE,
MAXIMUM_SIZE, and
AUTOEXTEND_SIZE columns incorrectly were
being stored as VARCHAR rather than
BIGINT. (Bug#19544).
For ndb_mgmd, Valgrind revealed problems that were corrected: A memory leak (Bug#19318); a dependency on an uninitialized variable (Bug#20333).
An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug#18036)
SSL connections using yaSSL on OpenBSD could fail. (Bug#19191)
Following a failed attempt to add an index to an
ARCHIVE table, it was no longer possible to
drop the database in which the table had been created. (Bug#17310)
Using ALTER TABLE ... ENGINE =
, where
xx was not a storage engine
supported by the server, would cause mysqld
to crash. (Bug#20397)
Defining a table partitioned by LIST with a
single PARTITION ... VALUES IN (NULL)
clause could lead to server crashes, particularly with queries
having WHERE conditions comparing the
partitioning key with a constant. (Bug#19801 / Bug#20268)
Values greater than 2 gigabytes used in the VALUES LESS THAN clause of a table partitioned by RANGE were treated as negative numbers. (Bug#16002)
The fill_help_tables.sql file did not
load properly if the ANSI_QUOTES SQL mode
was enabled. (Bug#20542)
The fill_help_tables.sql file did not
contain a SET NAMES 'utf8' statement to
indicate its encoding. This caused problems for some settings
of the MySQL character set such as big5.
(Bug#20551)
The --default-storage-engine server option
did not work. (Bug#20168)
The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug#18810)
For a reference to a non-existent index in FORCE
INDEX, the error message referred to a column, not
an index. (Bug#17873)
The EGNINE clause was displayed in the
output of SHOW CREATE TABLE for partitioned
tables when the SQL mode included
no_table_options. (Bug#19695)
ALTER TABLE ... COALESCE PARTITION did not
delete the files associated with the partitions that were
removed. (Bug#19305)
ALTER TABLE ... REBUILD PARTITION could
cause the server to hang or crash. (Bug#19122)
Some yaSSL public function names conflicted with those from
OpenSSL, causing conflicts for applications that linked
against both OpenSSL and a version of
libmysqlclient that was built with yaSSL
support. The yaSSL public functions now are renamed to avoid
this conflict. (Bug#19575)
CHECK TABLE temporarily cleared the
AUTO_INCREMENT value. Because it runs with
a read lock, other readers could perform concurrent inserts,
and if so, they could get an incorrect
AUTO_INCREMENT value. CHECK
TABLE no longer modifies the
AUTO_INCREMENT value. (Bug#19604)
If there is a global read lock, CREATE
DATABASE, RENAME DATABASE, and
DROP DATABASE could deadlock. (Bug#19815)
EXPLAIN PARTITIONS would produce illegible
output in the partitions column if the
length of text to be displayed in that column was too long.
This could occur when very many partitions were defined for
the table, partitions were given very long names, or due to a
combination of the two. (Bug#19684)
Trying to execute a query having a WHERE
clause using on a
partitioned table whose partitioning or subpartitioning
function used the integer column
int_col =
"string_value" OR
int_col IS NULLint_col would crash the server.
(Bug#19055)
On Linux, libmysqlclient when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries. (Bug#20119)
In MySQL 5.1.11, the --with-openssl and
--with-yassl options were replaced by
--with-ssl. But no message was issued if
the old options were given. Now configure
produces a message indicating that the new option should be
used and exits. (Bug#20002)
Grant table modifications sometimes did not refresh the
in-memory tables if the hostname was '' or
not specified. (Bug#16297)
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug#15328)
Using ALTER TABLE on a subpartitioned table
caused the server to crash. (Bug#19067)
For a table having LINEAR HASH
subpartitions, the LINEAR keyword did not
appear in the SUBPARTITION_METHOD column of
the INFORMATION_SCHEMA.PARTITIONS table.
(Bug#20161)
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug#19391)
ALTER TABLE on a table created prior to
5.0.3 would cause table corruption if the ALTER
TABLE did one of the following:
Change the default value of a column.
Change the table comment.
Change the table password.
An ALTER TABLE operation that does not need
to copy data, when executed on a table created prior to MySQL
4.0.25, could result in a server crash for subsequent accesses
to the table. (Bug#19192)
The binary log lacked character set information for table name when dropping temporary tables. (Bug#14157)
A B-TREE index on a
MEMORY table erroneously reported duplicate
entry error for multiple NULL values. (Bug#12873)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug#18023)
OPTIMIZE TABLE and REPAIR
TABLE yielded incorrect messages or warnings when
used on partitioned tables. (Bug#17455)
Selecting data from a MEMORY table with a
VARCHAR column and a
HASH index over it returned only the first
row matched. (Bug#18233)
This is a new Beta development release, fixing recently discovered bugs.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Functionality added or changed:
Incompatible change: The
Event Scheduler can now be in one of three states (on, off, or
the new suspended state). In addition, due to the fact that
SET GLOBAL event_scheduler; now acts in a
synchronous rather than asynchronous manner, the Event
Scheduler thread can be no longer be activated or deactivated
at run time. (Bug#17619)
For more information regarding these changes, see Section 22.1, “Event Scheduler Overview”.
Previously, to build MySQL from source with SSL support
enabled, you would invoke configure with
either the --with-openssl or
--with-yassl option. Those options both have
been replaced by the --with-ssl option. By
default, --with-ssl causes the bundled yaSSL
library to be used. To select OpenSSL instead, give the option
as
--with-ssl=,
where pathpath is the directory where
the OpenSSL header files and libraries are located.
Added the --ssl-verify-server-cert option to
MySQL client programs. This option causes the server's Common
Name value in its certificate to be verified against the
hostname used when connecting to the server, and the
connection is rejected if there is a mismatch. Added
MYSQL_OPT_SSL_VERIFY_SERVER_CERT option for
the mysql_options() C API function to
enable this verification. This feature can be used to prevent
man-in-the-middle attacks. Verification is disabled by
default. (Bug#17208)
Added the ssl_ca,
ssl_capath, ssl_cert,
ssl_cipher, and ssl_key
system variables, which display the values given via the
corresponding command options. See
Section 5.9.7.3, “SSL Command Options”. (Bug#19606)
NDB Cluster: The limit of 2048 ordered
indexes per cluster has been lifted. There is now no upper
limit on the number of ordered indexes (including
AUTO_INCREMENT columns) that may be used.
(Bug#14509)
Added the log_queries_not_using_indexes
system variable. (Bug#19616)
Added the --angel-pid-file option to
mysqlmanager for specifying the file in
which the angel process records its process ID when
mysqlmanager runs in daemon mode. (Bug#14106)
To prevent inadvertant loss of data, ALTER
TABLE can no longer be used to change the storage
engine of a table to MERGE or
BLACKHOLE. (Bug#10952)
The ENABLE KEYS and DISABLE
KEYS clauses for the ALTER TABLE
statement are now supported for partitioned tables. (Bug#19502)
It is now possible to use
NEW.
values within triggers as var_nameINOUT parameters
to stored procedures. (Bug#14635)
The default for the
innodb_thread_concurrency system variable
was changed to 8. (Bug#15868)
Bugs fixed:
Security fix: An
SQL-injection security hole has been found in multi-byte
encoding processing. The bug was in the server, incorrectly
parsing the string escaped with the
mysql_real_escape_string() C API function.
(CVE-2006-2753,
Bug#8378)
This vulnerability was discovered and reported by Josh Berkus
<josh@postgresql.org> and Tom Lane
<tgl@sss.pgh.pa.us> as part of the inter-project
security collaboration of the OSDB consortium. For more
information about SQL injection, please see the following
text.
Discussion: An SQL-injection
security hole has been found in multi-byte encoding
processing. An SQL-injection security hole can include a
situation whereby when a user supplied data to be inserted
into a database, the user might inject SQL statements into the
data that the server will execute. With regards to this
vulnerability, when character set unaware-escaping is used
(for example, addslashes() in PHP), it is
possible to bypass the escaping in some multi-byte character
sets (for example, SJIS, BIG5 and GBK). As a result, a
function such as addslashes() is not able
to prevent SQL-injection attacks. It is impossible to fix this
on the server side. The best solution is for applications to
use character set-aware escaping offered by a function such
mysql_real_escape_string().
However, a bug was detected in how the MySQL server parses the
output of mysql_real_escape_string(). As a
result, even when the character set-aware function
mysql_real_escape_string() was used, SQL
injection was possible. This bug has been fixed.
Workarounds: If you are
unable to upgrade MySQL to a version that includes the fix for
the bug in mysql_real_escape_string()
parsing, but run MySQL 5.0.1 or higher, you can use the
NO_BACKSLASH_ESCAPES SQL mode as a
workaround. (This mode was introduced in MySQL 5.0.1.)
NO_BACKSLASH_ESCAPES enables an SQL
standard compatibility mode, where backslash is not considered
a special character. The result will be that queries will
fail.
To set this mode for the current connection, enter the following SQL statement:
SET sql_mode='NO_BACKSLASH_ESCAPES';
You can also set the mode globally for all clients:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
This SQL mode also can be enabled automatically when the
server starts by using the command-line option
--sql-mode=NO_BACKSLASH_ESCAPES or by setting
sql-mode=NO_BACKSLASH_ESCAPES in the server
option file (for example, my.cnf or
my.ini, depending on your system).
The patch for Bug#8303 broke the fix for Bug#8378 and was
undone. (In string literals with an escape character
(\) followed by a multi-byte character that
has a second byte of (\), the literal was
not interpreted correctly. The next byte now is escaped, not
the entire multi-byte character. This means it a strict
reverse of the mysql_real_escape_string()
function.)
The client libraries had not been compiled for position-indpendent code on Solaris-SPARC and AMD x86_64 platforms. (Bug#13159, Bug#14202, Bug#18091)
Altering a VARCHAR column in a
MyISAM table to make it longer could cause
corruption of the following column. (Bug#19386)
A CREATE TABLE statement that created a
table from a materialized view did not inherit default values
from the underlying table. (Bug#19089)
NDB Cluster: mysqld processes did not
always detect cluster shutdown, leading to issues with CLuster
replication and schema distribution. (Bug#19395)
NDB Cluster: SELECT
MIN( from a
Cluster table with user-defined partitioning crashed the
server. (Bug#18730)
unique_column)
Premature optimization of nested subqueries in the
FROM clause that refer to aggregate
functions could lead to incorrect results. (Bug#19077)
For dates with 4-digit year parts less than 200, an implicit
conversion to add a century was applied for date arithmetic
performed with DATE_ADD(),
DATE_SUB(), + INTERVAL,
and - INTERVAL. (For example,
DATE_ADD('0050-01-01 00:00:00', INTERVAL 0
SECOND) became '2050-01-01
00:00:00'.) Now these operations return
NULL rather than an incorrect
non-NULL value. (Bug#18997)
BLOB or TEXT arguments
to or values returned from stored functions were not copied
properly if too long and could become garbled. (Bug#18587)
Simultaneous scheduled events whose actions conflicted with one another could crash the server. (Bug#16428)
In was not possible to invoke a stored routine containing dynamic SQL from a scheduled event. (Bug#19264)
NDB Cluster: Running ALL
START in the NDB management
client or restarting multiple nodes simultaneously could under
some circumstances cause the cluster to crash. (Bug#19930)
The result from CONV() is a string, but was
not always treated the same way as a string when converted to
a real value for an arithmetic operation. (Bug#13975)
CREATE TABLE ... SELECT ... statements that
used a stored function explicitly or implicitly (through a
view) resulted in a Table not locked error.
(Bug#12472, Bug#15137)
Within a trigger, SET used the SQL mode of
the invoking statement, not the mode in effect at trigger
creation time. (Bug#6951)
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug#15869)
The embedded server crashed with row-based replication enabled. (Bug#18518)
Display better error message for ALTER
TABLE operations that will result in duplicate keys
due to AUTO_INCREMENT resequencing. (Bug#14573)
The Data_free column in the output of
SHOW TABLE STATUS always displayed 0 for
partitioned tables. (Bug#19501)
Adding an index to a table created using partitioning by
KEY and the MEMORY
storage engine caused the server to crash. (Bug#19140)
When creating a table using CREATE TABLE ...
PARTITION BY ... SELECT ..., the partitioning clause
was ignored. (Bug#19062)
ALTER TABLE ENGINE=... failed when used to
change a MySQL Cluster table having no explicit primary key to
use a different storage engine. (Bug#19010)
Note: As a consequence of
this fix, SHOW CREATE TABLE no longer
displays auto-partitioning information for
NDBCluster tables.
NDB Cluster (NDBAPI): On big-endian
platforms, NdbOperation::write_attr() did
not update 32-bit fields correctly. (Bug#19537)
NDB Cluster: Using “stale”
mysqld .FRM files
could cause a newly-restored cluster to fail. This situation
could arise when restarting a MySQL Cluster using the
--intial option while leaving connected
mysqld processes running. (Bug#16875)
NDB Cluster (Replication): Memory was not
freed after some ALTER TABLE operations,
which could cause mysqld processes to
crash. (Bug#19885)
NDB Cluster (NDBAPI): The
Ndb::dropEventOperation() method failed to
clean up all objects used, which could cause memory leaks to
occur. (Bug#17610)
NDB Cluster: Data node failures could cause
excessive CPU usage by ndb_mgmd. (Bug#13987)
NDB Cluster: TRUNCATE
failed on tables having BLOB or
TEXT columns with the error Lock
wait timeout exceeded. This affected both
in-memory and Disk Data tables. (Bug#19201)
Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug#17260)
EXPLAIN ... SELECT INTO caused the client
to hang. (Bug#15463)
Symlinking .mysql_history to
/dev/null to suppress statement history
saving by mysql did not work.
(mysql deleted the symlink and recreated
.mysql_history as a regular file, and
then wrote history to it.) (Bug#16803)
The basedir and tmpdir
system variables could not be accessed via
@@
syntax. (Bug#1039)
var_name
Corrected several problems with the treatment of the
--log-error option by
mysqld_safe. These problems were manifest
as differences from mysqld in error log
handling.
If a filename was given for --log-error,
mysqld_safe ignored it and did not pass
it to mysqld, which then wrote error
information to stderr and resulted in
incorrect log rotation when FLUSH LOGS
was used.
mysql_safe now adds
.err to the end of the filename if no
extension is present (the same as
mysqld).
mysqld_safe treated a relative pathname as relative to its own current working directory. Now it treats a relative pathname as relative to the data directory (the same as mysqld).
In addition, some argument quoting problems were corrected. (Bug#6061)
Returning the value of a system variable from a stored function caused a server crash. (Bug#18037)
Use of uninitialized user variables in a subquery in the
FROM clause resulted in bad entries in the
binary log. (Bug#19136)
IS_USED_LOCK() could return an incorrect
connection identifier. (Bug#16501)
Concurrent reading and writing of privilege structures could crash the server. (Bug#16372)
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.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
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 Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.
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.0. 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 bug in NTPL threads 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)
NDB Cluster: In rare situations with
resource shortages, a crash could result from insufficient
IndexScanOperations. (Bug#19198)
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 logfiles groups,
tablespaces, datafiles, 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)
This is a new Beta development release, fixing recently discovered bugs.
NOTE: This Beta release, as any other pre-production release, should not be installed on production-level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL has worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release. Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.
Functionality added or changed:
SHOW PLUGIN was renamed to SHOW
PLUGINS. SHOW PLUGIN now is
deprecated and generates a warning. (Bug#17112)
Binary MySQL distributions now include a mysqld-max server, in addition to the usual mysqld optimized server and the mysqld-debug debugging server.
mysqld_safe no longer checks for a
mysqld-max binary. Instead,
mysqld_safe nows checks only for the
standard mysqld server unless another
server binary is specified explicitly via
--mysqld or
--mysqld-version. If you previously relied on
the implicit invocation of mysqld-max, you
should use an appropriate option now. (Bug#17861)
For partitioned tables, the output of SHOW TABLE
STATUS now shows in the Engine
column the name of the storage engine used by all partitions
for the table; in the Create_options
column, the output now shows partitioned
for a partitioned table. This change also affects the values
shown in the corresponding columns of the
INFORMATION_SCHEMA.TABLES table. (Bug#17631)
NDB Cluster: A new
--nowait-nodes startup option for
ndbd makes it possible to
“skip” specific nodes without waiting for them to
start when starting the cluster. See
Section 17.6.5.2, “Command Options for ndbd”.
The NDBCluster storage engine now supports
CREATE TABLE statements of arbitrary
length. (Previously, CREATE TABLE
statements for MySQL Cluster tables could contain a maximum of
4096 characters only.) (Bug#17813)
Large file support was re-enabled for the MySQL server binary for the AIX 5.2 platform. (Bug#13571)
Bugs fixed:
NDB Cluster: BLOB
columns did not work correctly with user-partitioned
NDB tables. (Bug#16796)
mysql_config returned incorrect libraries
on x86_64 systems. (Bug#13158)
mysql_reconnect() sent a SET
NAMES statement to the server, even for pre-4.1
servers that do not understand the statement. (Bug#18830)
COUNT(*) on a MyISAM
table could return different results for the base table and a
view on the base table. (Bug#18237)
For mysql.server, if the
basedir option was specified after
datadir in an option file, the setting for
datadir was ignored and assumed to be
located under basedir. (Bug#16240)
For full-text searches in boolean mode, and when a full-text
parser plugin was used, a
MYSQL_FTPARSER_PARAM::ftparser_state could
have been corrupted by recursive calls to the plugin. (Bug#18836)
EXTRACT(QUARTER FROM
returned unexpected
results. (Bug#18100)
date)
TRUNCATE did not reset the
AUTO_INCREMENT counter for
MyISAM tables when issued inside a stored
procedure. (Bug#14945)
Note: This bug did not affect
InnoDB tables. Also,
TRUNCATE does not reset the
AUTO_INCREMENT counter for
NDBCluster tables regardless of when it is
called (see Bug#18864).
The server was always built as though
--with-extra-charsets=complex had been
specified. (Bug#12076)
Partition pruning did not work properly for some kinds of
partitioning and subpartitioning, with certain
WHERE clauses. (Partitions and
subpartitions that should have been marked as used were not so
marked.) The error could manifest as incorrect content in
EXPLAIN PARTITIONS output as well as
missing rows in the results of affected queries. (Bug#18558)
NDB Cluster: An unitialized internal
variable could lead to unexpected results. (Bug#18831)
For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug#16281)
Complex queries with nested joins could cause a server crash. (Bug#18279)
A query against a partitioned table using WHERE
could produce
incorrect results given the following conditions:
col IS NULL
The table had partitions and subpartitions
The partitioning function depended on a single column
col of one of the MySQL integer
types
The partitioning function was not monotonically increasing
The same issue could cause the server to crash when run in debug mode. (Bug#18659)
CAST for large double AS SIGNED
INT)double
values outside the signed integer range truncates the result
to be within range, but the result sometimes had the wrong
sign, and no warning was generated. (Bug#15098)
MEDIUMINT columns were not handled in the
same way as other column types by partition pruning.
Partition pruning would sometimes use inappropriate columns in preforming queries.
Both of these issues were rectified as part of the same bugfix. (Bug#18025)
Quoted values could not be used for partition option values. (Bug#13520)
Delimited identifiers could not be used in defining partitions. (Bug#13433)
Building the server using
--with-example-storage-engine failed to
enable the EXAMPLE storage engine in the
server. (Bug#18464)
Triggers created in one version of the server could not be dropped after upgrading to a newer version. (Bug#15921)
Queries using WHERE ... IS NULL returned
incorrect results from partitioned tables. (Bug#18070)
Partition pruning did not perform correctly with partitions on
NULL, and could potentially crash the
server. (Bug#18053)
If InnoDB encountered a
HA_ERR_LOCK_TABLE_FULL error and rolled
back a transaction, the transaction was still written to the
binary log. (Bug#18283)
Note: This was an internal release only, and no binaries were published.
Functionality added or changed:
In order not to break legacy applications, support for
TYPE =
has been
restored, but now generates a warning.
engine_name
Important: This option has
been deprecated since MySQL 4.0. Beginning with
MySQL 5.2, TYPE =
will no
longer be available and will produce a syntax
error. You should not use
engine_nameTYPE in any new applications, and you
should immediately begin conversion of existing applications
to use the ENGINE =
syntax
instead. (Bug#17501)
engine_name
The deprecated constructs in the following table now generate warnings. You should not employ them in new applications, as they are likely to be removed in a future version of MySQL. Use the equivalents shown in the table's second column instead. For the same reason, existing applications depending on the deprecated constructs should be converted to make use of the current equivalents as soon as possible. (Bug#17501)
| Deprecated / Obsolete: | Current / Preferred: |
@@table_type | @@storage_engine |
@@log_bin_trust_routine_creators | @@log_bin_trust_function_creators |
TIMESTAMP( | See Section 12.5, “Date and Time Functions”. |
TYPE= | ENGINE= |
BACKUP TABLE | mysqldump, mysqlhotcopy, or MySQL Administrator |
RESTORE TABLE, LOAD TABLE FROM
MASTER | mysqldump, mysql, or MySQL Administrator |
SHOW TABLE TYPES | SHOW [STORAGE] ENGINES |
SHOW INNODB STATUS | SHOW ENGINE INNODB STATUS |
SHOW MUTEX STATUS | SHOW ENGINE INNODB MUTEX |
SHOW BDB LOGS, SHOW LOGS | SHOW ENGINE BDB LOGS |
The deprecated items shown in the table are not guaranteed to be available in MySQL 5.2 or later.
Incompatible change: For
purposes of determining placement, RANGE
partitioning now treats NULL as less than
any other value. (Formerly, NULL was
treated as equal to zero.) See
Section 18.2.6, “How MySQL Partitioning Handles NULL Values”. (Bug#15447)
Incompatible Change: The
semantics of ALTER TABLE for partitioned
tables is changed, and now means that the storage engine used
for table t
ENGINE=X;t is changed to
X.
The previous statement formerly (prior to MySQL 5.1.8) meant
that all partitioning was removed from the table. In order to
remove the partitioning of a table, the syntax ALTER
TABLE is introduced. The t REMOVE
PARTITIONING;REMOVE
PARTITIONING option can be used in combination with
existing ALTER TABLE options such as those
employed for adding or dropping columns or indexes. (Bug#17754)
Added the --sysdate-is-now option to
mysqld to enable
SYSDATE() to be treated as an alias for
NOW(). See
Section 12.5, “Date and Time Functions”. (Bug#15101)
The NDBCluster storage engine now supports
INSERT IGNORE and
REPLACE statements. Previously, these
statements failed with an error. (Bug#17431)
Events no longer support times past the end of the Unix epoch. (Formerly, such dates were interpreted as being at the beginning of the Unix epoch.) (Bug#16396)
Event names are now case-insenstive. That is (for example),
you cannot have events with the names
Myevent and MyEvent
belonging to the same database and definer. (Bug#16415)
Builds for Windows, Linux, and Unix (except AIX) platforms now have SSL support enabled, in the server as well as in the client libraries. Because part of the SSL code is written in C++, this does introduce dependencies on the system's C++ runtime libraries in several cases, depending on compiler specifics. (Bug#18195)
Temporary tables may no longer be partitioned. (Bug#17497)
Added the --events option to
mysqldump to enable events to be included
in the dump output. (Bug#16853)
NDB Cluster (Disk Data): You can now have
only one logfile group at any one time. See
Section 13.1.8, “CREATE LOGFILE GROUP Syntax”. (Bug#16386)
The syntax for CREATE PROCEDURE and
CREATE FUNCTION statements now includes a
DEFINER clause. The
DEFINER value specifies the security
context to be used when checking access privileges at routine
invocation time if the routine has the SQL SECURITY
DEFINER characteristic. See
Section 20.2.1, “CREATE PROCEDURE and CREATE FUNCTION Syntax”, for more information.
When mysqldump is invoked with the
--routines option, it now dumps the
DEFINER value for stored routines.
The output from SHOW CREATE TABLE is more
consistent about using uppercase for keywords. Data types
still are in lowercase. (Bug#10460)
The ExtractValue() function with
contains() now uses the SQL collation in
making comparisons. Perviously, comparisons were always binary
(that is, case-sensitive). (Bug#16316)
The cluster_replication database has been
renamed to cluster. This will effect
replication between MySQL Clusters where one cluster is
running MySQL 5.1.8 or later, and the other is running MySQL
5.1.7 or earlier. See
Section 17.8, “MySQL Cluster Replication”, and especially
Section 17.8.4, “Replication Schema and Tables”.
The stability of CREATE and
DROP operations on NDB
tables containing BLOB columns has been
improved. (Bug#17761)
More specific error messages are now given when attempting to create an excessive number of partitions or subpartitions. (Previously, no distinction was made between an excessive number of partitions and an excessive number of subpartitions.) (Bug#17393)
The mysqltest utility now converts all
CR/LF combinations to LF
to allow test cases intended for Windows to work properly on
UNIX-like systems. (Bug#13809)
The mysql_ping function will now retry if
the reconnect flag is set and error
CR_SERVER_LOST is encountered during the
first attempt to ping the server. (Bug#14057)
mysqldump now surrounds the
DEFINER, SQL SECURITY
DEFINER and WITH CHECK OPTION
clauses of a CREATE VIEW statement with
"not in version" comments to prevent errors in earlier
versions of MySQL. (Bug#14871)
For an event having no STARTS time
specified when it was created, the
mysql.event table's
start column now displays the creation time
rather than NULL. (Bug#16537)
In addition, both the SHOW EVENTS
statement's Starts column and the
STARTS column of the
INFORMATION_SCHEMA.EVENTS table are now
empty rather than NULL when
STARTS was not used in the CREATE
EVENT statement.
MICROSECOND intervals are no longer allowed
for events. (Bug#16411)
Description of the EVENT privilege has been
changed to To create, alter, drop, and execute
events. (Bug#16412)
The binlog_format system variable now is
dynamic and can be changed at runtime, as described in
Section 6.3, “Row-Based Replication”.
The binlog_format system variable now can
be set to a third format, MIXED, as
described in Section 6.3, “Row-Based Replication”.
A slave server may switch the format
automatically now. This happens when the
server is running in either STATEMENT or
MIXED format and encounters a row in the
binary log that is written in ROW logging
format. In that case, the slave switches to row-based
replication temporarily for that event, and switches back to
the previous format afterwards.
Partition pruning was made more stable, particularly in cases
involving queries using tests for NULL
values in the WHERE clause against
subpartitioned tables which were partitioned by LIST(
. (Bug#17891)
some_function(col1,
... ,colN) )
Names of subpartitions must now be unique for an entire table, and not merely within the same partition. (Bug#15408)
The output of SHOW CREATE EVENT no longer
qualifies the event name with the name of the schem to which
the event belongs. (Bug#17714)
The client API will now attempt to reconnect on TCP/IP if the
reconnect flag is set, as is the case with
sockets. (Bug#2845)
The XPath last() function is now
implemented for use with ExtractValue().
(Bug#16318)
Bugs fixed:
Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug#17015)
During conversion from one character set to
ucs2, multi-byte characters with no
ucs2 equivalent were converted to multiple
characters, rather than to 0x003F QUESTION
MARK. (Bug#15375)
Slave servers would retry the execution of a SQL statement an
infinite number of times, ignoring the value
SLAVE_TRANSACTION_RETRIES when using the
NDB engine. (Bug#16228)
Replication of data stored in a partitioned table would cause slave servers to issue a assertion and terminate. (Bug#18436)
The mysql_close() C API function leaked
handles for shared-memory connections on Windows. (Bug#15846)
Checks for permissions on database operations could be
performed in a case-insensitive manner (a user with
permissions on database MYDATABASE could by
accident get permissions on database
myDataBase), if the privilege data were
still cached from a previous check. (Bug#17279)
The server would crash when SHOW STATUS was
called on a server linked with yaSSL. (Bug#18310)
SELECT ... WHERE when column
LIKE 'A%'column had
a key and used the latin2_czech_cs
collation. (Bug#17374)
Using ALTER TABLE to increase the length of
a BINARY(
column caused column values to be padded with spaces rather
than M)0x00 bytes. (Bug#16857)
Execution of a stored function or trigger which inserted data into a table while running concurrent selects on the same table could result in storing incorrect data in the query cache. (Bug#14767)
NDB Cluster: Attempting to restart a node
with dropped events still pending would fail. (Bug#18491)
NDB Cluster: In asynchronous replication
scenarios, binary log events could be lost on the remote
mysqld. (Bug # 18472)
NDB Cluster: Two mysqld
processes starting at the same time could cause a race
condition. (Bug#18472)
NDB Cluster: Two mysqld
processes did not synchronise DROP TABLE
binary log events correctly. (Bug#18395)
NDB Cluster: When multiple node restarts
were attempted without allowing each restart to complete, the
error message returned was Array index out of
bounds rather than Too many crashed
replicas. (Bug#18349)
A SELECT ... ORDER BY ... from a view
defined using a function could crash the server. An example of
such a view might be CREATE VIEW v1 AS SELECT
SQRT(c1) FROM t1. (Bug#18386)
REPAIR TABLE, OPTIMIZE
TABLE, and ALTER TABLE operations
on transactional tables (or on tables of any type on Windows)
could corrupt triggers associated with those tables. (Bug#18153)
MyISAM: Performing a bulk insert on a table
referenced by a trigger would crash the table. (Bug#17764)
Using ORDER BY
within a stored
procedure (where intvarintvar is an
integer variable or expression) would crash the server. (Bug#16474)
Note: The use of an integer
i in an ORDER BY
clause for sorting the
result by the
iith
column is deprecated (and non-standard). It should
not be used in new applications. See
Section 13.2.7, “SELECT Syntax”.
A SELECT using a function against a nested
view would crash the server. (Bug#15683)
ALTER TABLE ... ADD COLUMN ... AFTER ...
failed when used on partitioned tables. (Bug#16806)
NDB Cluster: A timeout in the handling of
an ABORT condition with more that 32
operations could yield a node failure. (Bug#18414)
NDB Cluster: A node restart immediately
following a CREATE TABLE would fail.
Important: This fix supports
2-node Clusters only. (Bug#18385)
NDB Cluster: In event of a node failure
during a rollback, a “false” lock could be
established on the backup for that node, which lock could not
be removed without restarting the node. (Bug#18352)
NDB Cluster: The cluster created a crashed
replica of a table having an ordered index — or when
logging was not enabled, of a table having a table or unique
index — leading to a crash of the cluster following 8
successibe restarts. (Bug#18298)
NDB Cluster: When replacing a failed master
node, the replacement node could cause the cluster to crash
from a buffer overflow if it had an excessively large amount
of data to write to the cluster log. (Bug#18118)
NDB Cluster: Restarting nodes were allowed
to start and join the cluster too early. (Bug#16772)
NDB Cluster: Issuing a DROP
LOGFILE GROUP statement would cause
ndbd processes to crash if MySQL had been
compiled with gcc4. (Bug#18295)
Using triggers with partitioned InnoDB
tables led to incorrect results. (Bug#17744)
Calling CREATE TABLE or ALTER
TABLE twice on a partitioned table in a stored
procedure or a prepared statement resulted in errors and
sometimes server crashes. (Bug#17290)
A problem with NULLs and interval mapping
sometimes caused incorrect results or crashes when trying to
use less-than searches on partitioned tables. (Bug#17173)
CREATE TABLE ... PARTITION ... AS SELECT
... would cause the server to crash. (Bug#15336)
Creating a partition which depends on an expression containing a column using the UTF8 character set would cause the server to crash. (Bug#14367)
Invoking more than once a prepared statement that creates a partitioned table would crash the server. (Bug#14350)
NDB Cluster: A SELECT ... ORDER
BY query on an explicitly partitioned Cluster table
with no explicit indexes would crash the server. (Bug#17899)
The ExtractValue() function did not
return an error when passed an invalid XPath string. (Bug#18172)
Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug#17261)
Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug#18004)
Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug#11835)
A security enhancement in Visual Studio 8 could cause a MySQL
debug server compiled with it to hang when running
SELECT queries against partitioned tables.
(Bug#17722)
NDB Cluster:
auto_increment values were not propagated
correctly in statement-based replication. (Bug#18208)
Rpeated invocations of a stored procedure containing a
SHOW CREATE EVENT statement would result in
the error Packets out of order. (Bug#17403)
Repeated invocations of a stored procedure containing a
CREATE EVENT or ALTER
EVENT statement would crash the server. (Bug#16408)
Renaming and adding a new column to a partitioned table in the
same ALTER TABLE statement caused the
server to crash. (Bug#17772)
ALTER TABLE ... REBUILD PARTITION with no
partition name specified would crash the server. (Bug#17940)
Trying to add a partition to a table having subpartitions could crash the server. (Bug#17140)
Attempting to use a conflicting VALUES
clause in ALTER TABLE ... ADD PARTITION
caused the server to crash. An example of such a conflicting
clause would be that uses VALUES LESS THAN
( (which
indicates a range) with a table that is partitioned by
constant)LIST. (Bug#17127)
ALTER TABLE ... COALESCE PARTITION failed
with an Out of Memory error. (Bug#16810)
Names of subpartitions were not displayed in the output of
SHOW CREATE TABLE. (Bug#16370)
Setting up subpartitions on at least one but not all the partitions of a partitioned table caused the server to crash. (Bug#15407)
InnoDB used table locks (not row locks)
within stored functions. (Bug#18077)
Using the position() function in the XPath
argument to ExtractValue() crashed the
server. (Bug#18171)
A query with a WHERE
condition
failed on a table partitioned by date_column >
date_valueRANGE.
(Bug#17894)
Cursors in stored routines could cause a server crash. (Bug#16887)
Replication slaves could not replicate triggers from older
servers that included no DEFINER clause in
the trigger definition. Now the trigger executes with the
privileges of the invoker (which on the slave is the slave SQL
thread). (Bug#16266)
Character set conversion of string constants for
UNION of constant and table column was not
done when it was safe to do so. (Bug#15949)
NULL values were written to the
mysql.slow_log table incorrectly. (Bug#17600)
A query with a WHERE
condition
failed on a table partitioned by date_column >
date_valueRANGE.
(Bug#17894)
A failed ALTER TABLE ... ADD PRIMARY KEY on
a partitioned table would result in bad table metadata and
could possibly crash the server. (Bug#17097)
No error was reported when subpartitions were defined for a non-subpartitioned table. (Bug#15961)
Searches on indexed columns of partitioned tables failed to find all matching rows following updates of the indexed columns. (Bug#14526)
The DEFINER value for stored routines was
not replicated. (Bug#15963)
Use of TRUNCATE TABLE for a
TEMPORARY table on a master server was
propagated to slaves properly, but slaves did not decrement
the Slave_open_temp_tables counter
properly. (Bug#17137)
SELECT COUNT(*) for a
MyISAM table could return different results
depending on whether an index was used. (Bug#14980)
Updating a view that filters certain rows to set a filtered
out row to be included in the table caused infinite loop. For
example, if the view has a WHERE clause of salary >
100 then issuing an UPDATE statement of SET
salary = 200 WHERE id = 10, caused an infinite loop.
(Bug#17726)
Creating a table with the same name as the mapped name of
another table caused a server crash. For example, if MySQL
maps the table name txu#P#p1 to
txu@0023P@0023p1 on disk, creating another
table named txu@0023P@0023p1 crashed the
server. (Bug#17142)
NDB Cluster: Adding an index together with
replication could cause mysqld to crash.
(Bug#18106)
NDB Cluster: Insufficient stringbuffer
memory when attempting to create a trigger caused the server
to crash. (Bug#18101)
NDB Cluster: Variable-length columns used
as primary keys were not handled correctly. (Bug#18075)
NDB Cluster: Row-based replication could
fail with tables using VARCHAR columns for
primary keys and having BLOB columns. (Bug#18067)
NDB Cluster: CREATE UNIQUE
INDEX on a column containing non-unique data could
cause one or more ndbd nodes to hang or
crash. (Bug#18040)
NDB Cluster (Disk Data): CREATE
UNIQUE INDEX failed with Error 4243:
Index not found. (Bug#18039)
NDB Cluster: Node recovery of tables with
VARCHAR columns using character sets was
inconsistent, which could cause a number of issues, including
the data nodes failing to restart and ALTER
TABLE statements to hang. (Bug#18026)
NDB Cluster: In some cases, a single
ndbd node would fail following a system
restart. (Bug#17854)
NDB Cluster (Replication): The binary log
on the secondary master was not being set up correctly
following a table rename. (Bug#17838)
NDB Cluster: With a single replica,
transactions waiting in the log synchronisation queue were not
being restarted, causing them to be aborted. (Bug#17536)
NDB Cluster (Disk Data): It was not
possible to create more than 9 tablespaces. (Bug#16913)
NDB Cluster: Inserting and deleting
BLOB column values while a backup was in
process could cause the loss of an ndbd
node. (Bug#14028)
NDB Cluster:
UNDO_BUFFER_SIZE was limited to 17 MB. (Bug#16657, Bug#17890)
Using ALTER TABLE ... REBUILD PARTITION
without specifying the name of the partition caused the server
to crash, rather than reporting a syntax error. (Bug#17947)
When attempting to insert a 0 into a
LIST-partitioned table that had no
value-list containing 0, no error was
reported. (Bug#15253)
If the server was started with the
--skip-grant-tables option, it was impossible
to create a trigger or a view without explicitly specifying a
DEFINER clause. (Bug#16777)
The server would execute stored routines that had a non-existent definer. (Bug#13198)
NDB Cluster: A simultaneous
RENAME of several tables was logged
multiple times. (Bug#17827)
NDB Cluster: Trying to perform a
DELETE from a Cluster table following a
LOCK TABLES would cause the
ndbd processes to hang. (Bug#17812)
ALTER TABLE ... REORGANIZE PARTITION failed
with Error on rename of
filename ... on
Windows. (Bug#17720)
NDB Cluster: ALTER TABLE ... ADD
INDEX failed with ERROR 756: Index on
disk column is not supported when run against a
Disk Data table having a primary key. (Bug#17888)
NDB Cluster: DELETE
operations on NDB tables could cause memory
leaks. (Bug#16874)
NDB Cluster: Some query cache statistics
were not always correctly reported for Cluster tables. (Bug#16795)
The EXAMPLE storage engine did not work on
Windows. (Bug#17721)
For FEDERATED tables, a
SELECT statement with an ORDER
BY clause did not return rows in the proper order.
(Bug#17377)
Setting the myisam_repair_threads system
variable to a value larger than 1 could cause corruption of
large MyISAM tables. (Bug#11527)
The length of a VARCHAR() column that used
the utf8 character set would increase each
time the table was re-created in a stored procedure or
prepared statement, eventually causing the CREATE
TABLE statement to fail. (Bug#13134)
The MySQL server could crash with out of memory errors when
performing aggregate functions on a DECIMAL
column. (Bug#17602)
INSERT statements executed by scheduled
events were not written to the general log. (Bug#16413)
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug#16175)
Naming a partition using the characters
Ç or
ç (“c-cedilla”;
Unicode 00C7 or 00E7)
made unreadable the table containing the partition. (Bug#14527)
The self() XPath function was not handled
correcty by ExtractValue(). (Bug#16315)
The ExtractValue() function would not
accept expressions which matched element names containing an
underscore character. (Bug#16320)
NDB Cluster: Trying to update very large
partitioned tables using the NDB storage
engine sometimes caused the server to crash. (Bug#16385, Bug#17806)
Slow queries executed by scheduled events were not being written to the slow query log. (Bug#16426)
On Linux, creation of table partitions failed within a stored procedure. (Bug#14363)
mysql_fix_privilege_tables didn't create
the mysql.plugin table. (Bug#17568)
Improper checking of binary log statements could result in a server crash. (Bug#17457)
The ExtractValue() function allowed the use
of the ! character in identifiers by
ignoring the illegal character. This is now correctly reported
as a syntax error. (Bug#16313)
NDB Cluster: Trying to insert a value into
a nonexistent LIST partition of an
NDB table would cause the server to crash.
(Bug#17763)
NDB Cluster: ALTER TABLE
on a partitioned NDB table could cause the
server to crash. (Bug#17499)
NDB Cluster: A repeated
SELECT on a partitioned table that used the
NDB storage engine could cause the server
to crash. (Bug#17390)
NDB Cluster: Using ALTER TABLE ...
ADD PARTITION on a table partitioned by
LIST would cause the client to hang. (Bug#17701)
Triggers created without BEGIN and
END clauses could not be properly restored
from a mysqldump file. (Bug#16878)
The RENAME TABLE statement did not move
triggers to the new table. (Bug#13525)
Clients compiled from source with the
--without-readline did not save command
history from session to session. (Bug#16557)
Stored routines that contained only a single statement were
not written properly to the dumpfile when using
mysqldump. (Bug#14857)
Issuing GRANT EXECUTE on a procedure would
display any warnings related to the creation of the procedure.
(Bug#7787)
Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug#17169)
In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug#16593)
Functionality added or changed:
Incompatible change:
TYPE =
is no longer
accepted as a synonym for the engine_nameENGINE =
table option.
(engine_nameTYPE has been deprecated since MySQL 4.0.)
Several changes were made to make upgrades easier:
Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.
Added the FOR UPGRADE option for the
CHECK TABLE statement. This option
checks whether tables are incompatible with the current
version of MySQL Server.
Added the --check-upgrade to
mysqlcheck that invokes CHECK
TABLE with the FOR UPGRADE
option. Added the --fix-db-names and
--fix-table-names options to
mysqlcheck.
Incompatible change: The
mysql_stmt_attr_get() C API function now
returns a boolean rather than an unsigned int for
STMT_ATTR_UPDATE_MAX_LENGTH. (Bug#16144)
Added the --wait-timeout option to
mysqlmanager to allow configuration of the
timeout for dropping an inactive connection, and increased the
default timeout from 30 seconds to 28,800 seconds (8 hours).
(Bug#12674, Bug#15980)
All subpartitions within a given partitioned table are now guaranteed to have unque names. (Bug#15408)
Added the RENAME DATABASE statement.
The SQL mode in effect at the time an event is created or altered is recorded and used during event execution. (Bug#16407)
Added the PROCESSLIST table to
INFORMATION_SCHEMA.
Attempting to read pre-5.1.6 partitioned tables with a MySQL 5.1.7 (or later) server now generates a suitable warning message. (Bug#16695)
For additional information about this issue, see Section D.1.7, “Changes in release 5.1.6 (01 February 2006)”.
NDB Cluster: Attempting to SELECT
... FROM INFORMATION_SCHEMA.FILES now raises a
warning in the event that the cluster has crashed. (Bug#17087)
Removed the have_isam and
have_raid system variables.
Status messages added to ndb_restore to allow users to know that data files for Disk Data are being created. (Bug#16873)
Added the IN NATURAL LANGUAGE MODE and
IN NATURAL LANGUAGE MODE WITH QUERY
EXPANSION modifiers for full-text searches. See
Section 12.7, “Full-Text Search Functions”.
Creator privileges are now checked for all events before execution. (Bug#17289)
CREATE EVENT, DROP
EVENT, and ALTER EVENT statements
are not allowed in triggers. (Bug#16410)
New charset command added to
mysql command-line client. By typing
charset or
name\C (such as
name\C UTF8), the client character set can be
changed without reconnecting. (Bug#16217)
In row-based replication, when executing a Rows_log_event, the
associated table was locked, the rows applied and the lock
released. This did not work since there are storage engines
that count locks and perform an autocommit when the number of
locks reach zero. Now we ensure that all table maps come
before all ROWS events in a statement.
Bugs fixed:
NDB Cluster: ndbd
restart could sometimes fail due to incorrect memory access.
(Bug#17417)
Execution times for scheduled events were not calculated correctly: the last execution time was used as a base rather than the actual start time. (Bug#17494)
Using an XPath expression containing = with
ExtractValue() caused the server to crash.
(Bug#16242)
NDB Cluster: An unhandled resources issue
could cause node failure with a DELETE FROM
TABLE affecting thousands of rows. (Bug#16492)
NDB Cluster: Cluster tables not having an
explicit primary key could not be replicated. (Bug#14541)
For a transaction that used MyISAM and
InnoDB tables, interruption of the
transaction due to a dropped connection on a master server
caused slaves to lose synchrony. (Bug#16559)
SELECT with GROUP BY on
a view could cause a server crash. (Bug#16382)
SET TRANSACTION ISOLATION LEVEL acted like
SET SESSION TRANSACTION ISOLATION LEVEL.
That is, it set the isolation level for longer than the next
transaction. (Bug#7955)
SHOW CREATE TABLE produced extraneous
spaces after the PRIMARY KEY keywords. (Bug#13883)
If the query optimizer transformed a GROUP
BY clause in a subquery, it did not also transform
the HAVING clause if there was one,
producing incorrect results. (Bug#16603)
SUBSTRING_INDEX() could yield inconsistent
results when applied with the same arguments to consecutive
rows in a query. (Bug#14676)
myisam_ftdump did not work for
FULLTEXT indexes associated with a parser
plugin. (Bug#17116)
BIT fields were not properly handled when
using row-based replication. (Bug#13418)
Column counts were encoded incorrectly in the binary log for row-based logging format. (Bug#17678)
Data truncations on non-UNIQUE indexes
could crash InnoDB when using multi-byte
character sets. (Bug#17530)
An ALTER DATABASE statement on a
replication master crashed the slaves. (Bug#17521)
Partitioning with certain SUBPARTITION BY
HASH clauses caused an error when querying for a
partitioned column using an IS NULL
comparison. (Bug#17430, Bug#17432)
The mysql_fix_privilege_tables.sql script
did not properly initialize the Event_priv
column to 'Y' for those accounts that
should have the EVENT privilege. (Bug#16400)
NDB Cluster: Inserting the output of
REPEAT(' into a
some_string',
some_int)BLOB column resulted in the error
Invalid blob attributes or invalid blob parts
table. (Bug#17505)
NDB Cluster: Row-based replication was not
being set up correctly if a backup was already in progress.
For example, connecting a mysqld instance
to a cluster which was being backed up would result in the
message NDB: skipping setup table
test.t1 being written to the error log. (Bug#17459)
NDB Cluster: CREATE TEMPORARY
TABLE of a Cluster table would fail with an
Unsupported error or crash the server.
(Bug#17210, Bug#16552)
NDB Cluster: UNIQUE keys
in Cluster tables were limited to 225 bytes in length. (Bug#15918)
NDB Cluster: REPLACE
failed when attempting to update a primary key value in a
Cluster table. (Bug#14007)
NDB Cluster: Creating
NDB tables containing
BLOB columns but no primary key caused
unpredictable behavior. (Bug#17559)
Creating an event and using a whitespace character other than
space following the DO keyword caused a
server crash. (Bug#17453)
Previously, a stored function invocation was written to the
binary log as DO
if the
invocation changes data and occurs within a non-logged
statement, or if the function invokes a stored procedure that
produces an error. These invocations now are logged as
func_name()SELECT
instead for
better control over error code checking (slave servers could
stop due to detecting a different error than occurred on the
master). (Bug#14769)
func_name()
CHECKSUM TABLE returned different values on
MyISAM table depending on whether the QUICK
or EXTENDED options were used. (Bug#8841)
Querying the INFORMATION_SCHEMA.PARTITIONS
table on a non-max server caused a server crash. This also
happened following the creation of a table with a very large
number (hundreds) of partitions. (Bug#16591, Bug#17141)
Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug#17169)
MySQL server dropped client connection for certain
SELECT statements against views defined
that used MERGE algorithm. (Bug#16260)
A statement containing GROUP BY and
HAVING clauses could return incorrect
results when the HAVING clause contained
logic that returned FALSE for every row.
(Bug#14927)
Using GROUP BY on column used in
WHERE clause could cause empty set to be
returned. (Bug#16203)
DROP DATABASE did not drop events for the
database. (Bug#16406)
Race conditions between event creation, dropping, and execution could result in a server crash or hang. (Bug#17373)
SET sql_mode =
, where
NN > 31, did not work properly.
(Bug#13897)
Repeated invocation of my_init() and
my_end() caused corruption of character set
data and connection failure. (Bug#6536)
When used with the ExtractValue() function,
an XPath expression having no leading
“/” character would crash the
server. (Bug#16234)
A SELECT from the last partition of a
subpartitioned table having a UNIQUE KEY
could crash the MySQL Server. (Bug#16907)
A SELECT on a subpartitioned table having a
multiple-column PRIMARY or UNIQUE
KEY, and whose partitioning function used only the
first column of the key, could cause mysqld
to crash. (Bug#16901)
Using REPLACE INTO on a partitioned table
having a primary key would crash the server in the event of a
duplicate key error. (Bug#16782)
DROP TABLE would sometimes fail on a table
having subpartitions that used the default storage engine.
(Bug#16775)
NDB Cluster: Sharing of table names
containing special characters between multiple SQL nodes was
not handled correctly when binary logging was enabled (a
timeout error resulted). (Bug#17415)
NDB Cluster: Table definitions were not
shared between multiple SQL nodes in a cluster without binary
logging being enabled. (Bug#17414)
NDB Cluster: Cluster log file paths were
truncated to 128 characters. They may now be as long as
MAX_PATH (the maximum path length permitted
by the operating system). (Bug#17411)
SHOW CREATE EVENT displayed no output. (Bug#16423)
Statements that contained Unicode characters were not logged to the log tables correctly. (Bug#16905)
On Windows platforms, some attempts to create partitioned
tables from the command line would cause the
mysql client to hang. (Bug#17082)
NDB Cluster: SHOW CREATE
TABLE would fail when run against a table created in
a different session. (Bug#17340)
NDB Cluster: Following multiple forced
shutdowns and restarts of data nodes, DROP
DATABASE could fail. (Bug#17325)
NDB Cluster: An UPDATE
with an inner join failed to match any records if both tables
in the join did not have a primary key. (Bug#17257)
NDB Cluster: A DELETE
with a join in the WHERE clause failed to
retrieve any records if both tables in the join did not have a
primary key. (Bug#17249)
The NDB Cluster storage engine did not
allow views to be updated. (Bug#17206)
NDB Cluster: Row-based replication of a
cluster failed to take --binlog_ignore_db
settings into account. (Bug#17188)
Trying to create a partitioned table with more than 32 attributes failed. (Bug#17179)
NDB Cluster: When attempting to import data
into an NDB table using LOAD DATA
INFILE, the server would hang in the event of a
duplicate key error. (Bug#17154)
NDB Cluster: In some cases, LOAD
DATA INFILE did not load all data into
NDB tables. (Bug#17081)
NDB Cluster: Performing large numbers of
data manipulation statements on cluster tables using Disk Data
could lead to a server crash. ()
NDB Cluster: In some cases, a cluster using
Disk Data tables could not be restarted following a normal
shutdown. (Bug#16872)
NDB Cluster: The REDO
log would become corrupted (and thus unreadable) in some
circumstances, due to a failure in the query handler. (Bug#17295)
NDB Cluster: CREATE TABLE
failed when
new_tbl LIKE
old_tbl;old_tbl used the
NDB storage engine. (Bug#17005)
NDB Cluster: No error message was generated
for setting NoOfFragmentLogFiles too low.
(Bug#13966)
NDB Cluster: No error message was generated
for setting MaxNoOfAttributes too low. (Bug#13965)
The SELECT privilege was required for
triggers that performed no selects. (Bug#15196)
The UPDATE privilege was required for
triggers that performed no updates. (Bug#15166)
CAST(... AS TIME) operations returned
different results when using versus not using
prepared-statement protocol. (Bug#15805)
Killing a long-running query containing a subquery could cause a server crash. (Bug#14851)
InnoDB could display an incorrect error
message for a cascading update. (Bug#9680)
A RETURN statement within a trigger caused
a server crash. RETURN now is disallowed
within triggers. To exit immediately, use
LEAVE. (Bug#16829)
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 Section 5.6.1, “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: 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 aSELECT 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 Chapter 22, 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 Section 17.8, “MySQL Cluster Replication”.
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 9.2.3, “Mapping of Identifiers to Filenames”.
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.
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.12.1, “Server Log Tables”.
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.
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.
Section 15.8, “The ARCHIVE Storage Engine”.
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 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 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)
Functionality added or changed:
Added the INFORMATION_SCHEMA ENGINES table.
Added the INFORMATION_SCHEMA PLUGINS table
and the SHOW PLUGIN statement.
Added the binlog_format system variable
that controls whether to use row-based or statement-based
binary logging. Added the --binlog-format and
--binlog-row-event-max-size server options
for binary logging control. See
Section 6.3, “Row-Based Replication”.
Plugins now can have status variables that are displayed in
the output from SHOW STATUS. See
Section 28.2.5, “Writing Plugins”.
Added the XML functions ExtractValue() and
UpdateXML().
ExtractValue() returns the content of a
fragment of XML matching a given XPath expression.
UpdateXML() replaces the element selected
from a fragment of XML by an XPath expression supplied by the
user with a second XML fragment (also user-supplied), and
returns the modified XML. See Section 12.9, “XML Functions”.
Added the --base64-output option to
mysqlbinlog to print all binary log entries
using base64 encoding. This is for debugging only. Logs
produced using this option should not be applied on production
systems.
Added the --port-open-timeout option to
mysqld to control how many seconds the
server should wait for the TCP/IP port to become free if it
cannot be opened. (Bug#15591)
Two new Hungarian collations are included:
utf8_hungarian_ci and
ucs2_hungarian_ci. These support the
correct sort order for Hungarian vowels. However, they do not
support the correct order for sorting Hungarian consonant
contractions; this issue will be fixed in a future release.
Bugs fixed:
InnoDB: An UPDATE
statement with no index column in the WHERE
condition locked all the rows in the table. (Bug#3300)
INSERT DELAYED caused
mysqld to crash. (Bug#16095)
The output of mysqldump --triggers did not
contain the DEFINER clause in dumped
trigger definitions. (Bug#15110)
The output of SHOW TRIGGERS contained
extraneous whitespace. (Bug#15103)
An INSERT ... SELECT statement between
tables in a MERGE set can return errors
when statement involves insert into child table from merge
table or vice-versa. (Bug#5390)
A COMMIT statement followed by a
ALTER TABLE statement on a BDB table caused
server crash. (Bug#14212)
InnoDB: Comparison of indexed
VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin
columns using LIKE could fail. (Bug#14583)
Creating a trigger caused a server crash if the table or trigger database was not known because no default database had been selected. (Bug#14863)
Issuing a DROP USER command could cause
some users to encounter a
error. (Bug#15775)
hostname is not allowed to
connect to this MySQL server
The --plugin_dir option was not working. Also
fix error with specifying parser name for fulltext. (Bug#16068)
Attempting to insert into a table partitioned by
LIST a value less than any specified in one
of the table's partition definitions resulted in a server
crash. In such cases, mysqld now returns
ERROR 1500 (HY000): Table has no partition for
value v , where
v is the out-of-range value. (Bug#15819)
Functionality added or changed:
Added the mysqlslap program, which is designed to emulate client load for a MySQL server and report the timing of each stage. It works as if multiple clients are accessing the server.
Added the --server-id option to
mysqlbinlog to enable only those events
created by the server having the given server ID to be
extracted. (Bug#15485)
It is now possible to build the server such that
MyISAM tables can support up to 128 keys
rather than the standard 64. This can be done by configuring
the build using the option
--with-max-indexes=,
where NN≤128 is the maximum
number of indexes to permit per table. (Bug#10932)
The bundled BDB library was upgraded to
version 4.4.16.
Added the cp1250_polish_ci collation for
the cp1250 character set.
Added the myisam_use_mmap system variable.
Added the --bdb-data-direct and
--bdb-log-direct server options.
Bugs fixed:
SHOW ENGINES output showed the
FEDERATED engine as
DISABLED even for builds with
FEDERATED support. (Bug#15559)
Server could not be built on default Debian systems with BDB enabled. (Bug#15734)
BDB: A DELETE,
INSERT, or UPDATE of a
BDB table could cause the server to crash
where the query contained a subquery using an index read. (Bug#15536)
A left join on a column that having a NULL
value could cause the server to crash. (Bug#15268)
It was not possible to reorganize a partition reusing a discarded partition name.
Now, for example, you can create a table such as this one:
CREATE TABLE t1 (a INT)
PARTITION BY RANGE (a) (
PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN (20),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
and then repartition it as shown here:
ALTER TABLE t1 REORGANIZE PARTITION p2 INTO (
PARTITION p2 VALUES LESS THAN (30)
);
Previously, attempting to do so would produce the error All partitions must have unique names in the table . (Bug#15521)
NDB Cluster: The --ndb
option for perror did not function. (Bug#15486)
The BLACKHOLE storage engine did not handle
transactions properly: Rolled-back transactions were written
to the binary log. Now they ae not. (Bug#15406)
NDB Cluster: Using ORDER BY
when
selecting from a table having the primary key on a
primary_key_columnVARCHAR column caused a forced shutdown of
the cluster. (Bug#14828, Bug#15240, Bug#15682, Bug#15517)
ANALYZE TABLE did not properly update table
statistics for a MyISAM table with a
FULLTEXT index containing stopwords, so a
subsequent ANALYZE TABLE would not
recognize the table as having already been analyzed. (Bug#14902)
The maximum value of MAX_ROWS was handled
incorrectly on 64-bit systems. (Bug#14155)
Multiple-table update operations were counting updates and not updated rows. As a result, if a row had several updates it was counted several times for the “rows matched” value but updated only once. (Bug#15028)
SELECT queries that began with an opening
parenthesis were not being placed in the query cache. (Bug#14652)
Space truncation was being ignored when inserting into
BINARY or VARBINARY
columns. Now space truncation results in a warning, or an
error in strict mode. (Bug#14299)
Selecting from a view processed with the temptable algorithm caused a server crash if the query cache was enabled. (Bug#15119)
Creating a view that referenced a stored function that selected from a view caused a crash upon selection from the view. (Bug#15096)
Creating a view within a stored procedure could result in an out of memory error or a server crash. (Bug#14885)
SHOW CREATE DATABASE was sometimes refused
when the client had privileges for the database. (Bug#9785)
mysql ignored the
MYSQL_TCP_PORT environment variable. (Bug#5792)
ROW_COUNT() returned an incorrect result
after EXECUTE of a prepared statement. (Bug#14956)
Invalid casts to DATE values now result in
a message of Incorrect datetime value,
rather than Truncated incorrect datetime
value. (Bug#8294)
Attempts to assign NULL to a NOT
NULL column in strict mode now result in a message
of Column ', rather than col_name'
cannot be nullColumn set to
default value; NULL supplied to NOT NULL column
'. (Bug#11491)
col_name' at row
n
For binary string data types, mysqldump
--hex-blob produced an illegal output value of
0x rather than ''. (Bug#13318)
Some comparisons for the IN() operator were
inconsistent with equivalent comparisons for the
= operator. (Bug#12612)
Functionality added or changed:
This is the first public alpha release of the current MySQL 5.1 development branch, providing an insight to upcoming features. Although some of these are still under heavy development, this release includes the following new features and changes (in comparison to the current MySQL 5.0 production release):
Partitioning: allows distributing portions of individual tables across a filesystem, according to rules which can be set when the table is created. In effect, different portions of a table are stored as separate tables in different locations, but from the user point of view, the partitioned table is still a single table. See Chapter 18, Partitioning, for further information on this functionality. (Author: Mikael Ronström)
Plugin API: MySQL 5.1 adds support for a very flexible plugin API that enables loading and unloading of various components at runtime, without restarting the server. Although the work on this is not finished yet, plugin full-text parsers are a first step in this direction. This allows users to implement their own input filter on the indexed text, enabling full-text search capability on arbitrary data such as PDF files or other document formats. A pre-parser full-text plugin performs the actual parsing and extraction of the text and hands it over to the built-in MySQL full-text search. (Author: Sergey Vojtovich)
The plugin API requires the mysql.plugin
table. When upgrading from an older version of MySQL, you
should run the mysql_fix_privilege_tables
command to create this table. See
Section 5.6.1, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”.
Incompatible change: Plugins
are installed in the directory named by the
plugin_dir system variable. This variable
also controls the location from which the server loads
user-defined functions (UDFs), which is a change from earlier
versions of MySQL. That is, all UDF library files now must be
installed in the plugin directory. When upgrading from an
older version of MySQL, you must migrate your UDF files to the
plugin directory.
The Instance Manager (IM) now has some additional functionality:
SHOW provides a listing of all log files
used by the instance. (Author: Petr Chardin)
instance_name
LOG FILES
SHOW retrieves a
part of the specified log file. (Author: Petr Chardin)
instance_name
LOG {ERROR | SLOW | GENERAL}
size
SET
sets an option to the specified value and writes it to
the config file See Section 5.5, “mysqlmanager — The MySQL Instance Manager”,
for more details on these new commands. (Author: Petr
Chardin)
instance_name.
option_name=option_value
The performance of boolean full-text searches (using the “+” Operator) has been improved. See Section 12.7, “Full-Text Search Functions”, for more details about full-text searching. (Author: Sergey Vojtovich)
VARCHAR fields used in MySQL Cluster tables
are now variable-sized; that is, they now only allocate as
much space as required to store the data. Previously, a
VARCHAR(
column allocated n+2 bytes (aligned to 4 bytes), regardless if
the actual inserted value required that much space. (In other
words, a n)VARCHAR column always required the
same, fixed, amount of storage as a CHAR
column of the same size.)
Renamed the table_cache system variable to
table_open_cache. Any scripts that refer to
table_cache should be updated to use the
new name.
Added the table_definition_cache system
variable. If you use a large number of tables, you can create
a large table definition cache to speed up opening of tables.
The table definition cache takes less space and does not use
file descriptors, unlike the normal table cache.
Added the SHOW AUTHORS statement.
Bugs fixed:
Set functions could not be aggregated in outer subqueries. (Bug#12762)
Functionality added or changed:
Added MAXLOCKS,
MINLOCKS, MAXWRITE, and
MINWRITE as allowable values of the
--bdb-lock-detect option. (Bug#14876)
Added the bdb_cache_parts and
bdb_region_size system variables, and
allowed bdb_cache_size to be larger than
4GB on systems that support it. (Bug#14895)
Added Transactions, XA,
and Savepoints columns to SHOW
ENGINES output.
Added --replace to
mysqldump. This option uses
REPLACE INTO, rather than INSERT
INTO, when writing the dumpfile.
Bugs fixed:
Foreign keys were not properly enforced in
TEMPORARY tables. Foreign keys now are
disallowed in TEMPORARY tables. (Bug#12084)
Functionality added or changed:
Bugs fixed:
Performing a CREATE TABLE statement with a
PARTITION BY clause in a prepared statement
could crash a server running in debug mode. (Bug#12097)
NDB: Specifying the wrong nodegroup in a
CREATE TABLE using partitioning would lead
to the table name being locked after the CREATE
TABLE statement failed (that is, the table name
could not be re-used). (Bug#12114)
Using ORDER BY in a query with a
partitioned table on a 64-bit operating system could crash the
server. (Bug#12116)
When two threads competed for the same table, a deadlock could
occur if one thread also had a lock on another table through
LOCK TABLES and the thread was attempting
to remove the table in some manner while the other thread
tried to place locks on both tables. (Bug#10600)
Functionality added or changed:
N/A
Bugs fixed:
The SQLDriverConnect() ODBC method did not
work with recent MyODBC releases. (Bug#12393)
Functionality added or changed:
N/A
Bugs fixed:
Functionality added or changed: No changes.
Bugs fixed:
mysql_list_dbcolumns() and
insert_fields() were retrieving all rows
from a table. Fixed the queries generated by these functions
to return no rows. (Bug#8198)
SQLGetTypoInfo() returned
tinyblob for
SQL_VARBINARY and nothing for
SQL_BINARY. Fixed to return
varbinary for
SQL_VARBINARY, binary
for SQL_BINARY, and
longblob for
SQL_LONGVARBINARY. (Bug#8138)