This was an internal release only, and no binaries were published.
Functionality Added or Changed
Incompatible Change; Cluster Replication:
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 MySQL Cluster Replication, and
especially MySQL Cluster Replication Schema and Tables.
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. 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)
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
How MySQL Partitioning Handles NULL.
(Bug #15447)
MySQL Cluster:
The NDBCLUSTER storage engine now
supports INSERT
IGNORE and REPLACE
statements. Previously, these statements failed with an error.
(Bug #17431)
MySQL Cluster:
The stability of CREATE and
DROP operations on
NDB tables containing
BLOB columns has been improved.
(Bug #17761)
Replication:
A slave server may now switch the replication format
automatically. 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 afterward.
Replication:
The binlog_format system
variable now is dynamic and can be changed at runtime, as
described in Replication Formats.
Replication:
Triggers from older servers that included no
DEFINER clause in the trigger definition now
execute with the privileges of the invoker (which on the slave
is the slave SQL thread). Previously, replication slaves could
not replicate such triggers.
(Bug #16266)
Replication:
The binlog_format system
variable now can be set to a third format,
MIXED, as described in
Replication Formats.
Disk Data:
You can now have only one log file group at any one time. See
CREATE LOGFILE GROUP Syntax.
(Bug #16386)
Temporary tables may no longer be partitioned. (Bug #17497)
MICROSECOND intervals are no longer permitted
for events.
(Bug #16411)
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)
Added the --events option to
mysqldump to enable events to be included in
the dump output.
(Bug #16853)
The output from SHOW CREATE TABLE
is more consistent about using uppercase for keywords. Data
types still are in lowercase.
(Bug #10460)
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)
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)
Added the --sysdate-is-now option
to mysqld to enable
SYSDATE() to be treated as an
alias for NOW(). See
Date and Time Functions.
(Bug #15101)
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
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.
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)
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)
The following deprecated constructs now generate warnings, and they are removed as of MySQL 5.5. Where alternatives are shown, applications should be updated to use them. Existing applications that depend on the deprecated constructs should be converted to make use of the current equivalents as soon as possible. You should not employ them in new applications.
The log_bin_trust_routine_creators system
variable (use
log_bin_trust_function_creators).
The table_type system
variable (use
storage_engine).
The TYPE table option to specify the
storage engine for CREATE
TABLE or ALTER
TABLE (use ENGINE).
The SHOW TABLE TYPES SQL statement (use
SHOW ENGINES).
The SHOW INNODB STATUS and
SHOW MUTEX STATUS SQL statements (use
SHOW ENGINE
INNODB STATUS and
SHOW ENGINE
INNODB MUTEX).
The SHOW PLUGIN SQL statement (use
SHOW PLUGINS).
The LOAD TABLE ... FROM MASTER and
LOAD DATA FROM MASTER SQL statements (use
mysqldump or
mysqlhotcopy to dump tables and
mysql to reload dump files).
The BACKUP TABLE and
RESTORE TABLE SQL statements
(use mysqldump or
mysqlhotcopy to dump tables and
mysql to reload dump files).
TIMESTAMP(
data type: The ability to specify a display width of
N)N (use without
N).
The --master-
server options to set replication parameters (use the
xxxCHANGE MASTER TO statement
instead): --master-host,
--master-user, --master-password
, --master-port,
--master-connect-retry,
--master-ssl,
--master-ssl-ca,
--master-ssl-capath,
--master-ssl-cert,
--master-ssl-cipher,
--master-ssl-key.
In addition, SHOW BDB LOGS and SHOW
LOGS are removed as of MySQL 5.1.12.
TYPE vs ENGINE
.
In order not to break legacy applications, support for
TYPE = —deprecated since MySQL 4.0—has been
restored, but now generates a warning.
engine_name
Beginning with MySQL 5.5, TYPE =
will no
longer be available and will produce a syntax
error.
engine_name
You should not use TYPE in any
new applications, and you should immediately begin conversion
of existing applications to use the ENGINE =
syntax
instead.
engine_name
(Bug #17501)
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.
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.
(Bug #16537)
Description of the EVENT
privilege has been changed to To create, alter, drop,
and execute events.
(Bug #16412)
Names of subpartitions must now be unique for an entire table, and not merely within the same partition. (Bug #15408)
Event names are now case-insensitive. That is (for example), you
cannot have events with the names Myevent and
MyEvent belonging to the same database and
definer.
(Bug #16415)
The XPath last() function is now
implemented for use with
ExtractValue().
(Bug #16318)
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 now attempts to reconnect using TCP/IP if the
reconnect flag is set, as is the case with
sockets.
(Bug #2845)
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) )
The mysqltest utility now converts all
CR/LF combinations to LF
to enable test cases intended for Windows to work properly on
UNIX-like systems.
(Bug #13809)
The ExtractValue() function with
contains() now uses the SQL collation in
making comparisons. Previously, comparisons were always binary
(that is, case-sensitive).
(Bug #16316)
Bugs Fixed
MySQL Cluster; Partitioning:
Trying to insert a value into a nonexistent
LIST partition of an
NDB table would cause the server to
crash.
Beginning with MySQL 5.1.12, user-defined partitioning types
other than KEY or LINEAR
KEY were disabled for
NDB tables.
(Bug #17763)
MySQL Cluster; Partitioning:
A repeated SELECT on a
partitioned table that used the NDB
storage engine could cause the server to crash.
(Bug #17390)
MySQL Cluster; Replication:
AUTO_INCREMENT values were not propagated
correctly in statement-based replication.
(Bug #18208)
MySQL Cluster; Replication:
Memory was mistakenly freed for
NdbRecAttr objects during
addition of an index while replicating the cluster, which could
cause mysqld to crash.
(Bug #18106)
MySQL Cluster; Replication:
Row-based replication could fail with tables using
VARCHAR columns for primary keys
and having BLOB columns.
(Bug #18067)
MySQL Cluster; Replication: (Replication): The binary log on the secondary master was not being set up correctly following a table rename. (Bug #17838)
MySQL Cluster:
UNDO_BUFFER_SIZE was limited to 17 MB.
(Bug #16657, Bug #17890)
MySQL Cluster:
Issuing a DROP LOGFILE GROUP
statement would cause ndbd processes to crash
if MySQL had been compiled with gcc4.
(Bug #18295)
MySQL Cluster:
A timeout in the handling of an ABORT
condition with more that 32 operations could yield a node
failure.
(Bug #18414)
MySQL Cluster:
Trying to perform a DELETE from
an NDB table following a
LOCK TABLES caused the
ndbd processes to hang.
(Bug #17812)
MySQL Cluster:
A SELECT ... ORDER BY query on an explicitly
partitioned Cluster table with no explicit indexes would crash
the server.
(Bug #17899)
MySQL 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)
MySQL Cluster: Two mysqld processes starting at the same time could cause a race condition. (Bug #18472)
MySQL Cluster:
DELETE operations on
NDB tables could cause memory
leaks.
(Bug #16874)
MySQL Cluster:
ALTER TABLE on a partitioned
NDB table could cause the server to
crash.
(Bug #17499)
MySQL 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 successive restarts. (Bug #18298)
MySQL Cluster: When multiple node restarts were attempted without permitting each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug #18349)
MySQL Cluster:
A simultaneous RENAME of several tables was
logged multiple times.
(Bug #17827)
MySQL Cluster:
Trying to update very large partitioned tables using the
NDB storage engine sometimes caused
the server to crash.
(Bug #17806, Bug #16385)
MySQL Cluster:
Inserting and deleting BLOB
column values while a backup was in process could cause data
nodes to shut down.
(Bug #14028)
MySQL Cluster: Some query cache statistics were not always correctly reported for Cluster tables. (Bug #16795)
MySQL Cluster:
Using ALTER TABLE ... ADD PARTITION on a
table partitioned by LIST would cause the
client to hang.
(Bug #17701)
MySQL 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)
MySQL Cluster: With a single replica, transactions waiting in the log synchronization queue were not being restarted, causing them to be aborted. (Bug #17536)
MySQL 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)
MySQL Cluster: Attempting to restart a node with dropped events still pending would fail. (Bug #18491)
MySQL Cluster:
A node restart immediately following a
CREATE TABLE would fail.
This fix supports 2-node Clusters only.
(Bug #18385)
MySQL Cluster:
Insufficient StringBuffer memory when
attempting to create a trigger caused the server to crash.
(Bug #18101)
MySQL Cluster: In some cases, a single ndbd node failed following a system restart. (Bug #17854)
MySQL Cluster: Restarting nodes were permitted to start and join the cluster too early. (Bug #16772)
MySQL Cluster:
Two mysqld processes did not synchronize
DROP TABLE binary log events
correctly.
(Bug #18395)
MySQL Cluster:
CREATE UNIQUE INDEX on a column containing
nonunique data could cause one or more ndbd
nodes to hang or crash.
(Bug #18040)
MySQL Cluster: Variable-length columns used as primary keys were not handled correctly. (Bug #18075)
MySQL 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)
Replication:
The DEFINER value for stored routines was not
replicated.
(Bug #15963)
Replication:
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)
Replication: Replication of data stored in a partitioned table would cause slave servers to issue a assertion and terminate. (Bug #18436)
Replication:
Slave servers would retry the execution of an SQL statement an
infinite number of times, ignoring the value
SLAVE_TRANSACTION_RETRIES when using the NDB
engine.
(Bug #16228)
Disk Data: It was not possible to create more than 9 tablespaces. (Bug #16913)
Disk Data:
CREATE UNIQUE INDEX failed with
Error 4243: Index not found.
(Bug #18039)
Names of subpartitions were not displayed in the output of
SHOW CREATE TABLE.
(Bug #16370)
A query with a WHERE
condition failed
on a table partitioned by date_column >
date_valueRANGE.
(Bug #17894)
Renaming and adding a new column to a partitioned table in the
same ALTER TABLE statement caused
the server to crash.
(Bug #17772)
Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug #17261)
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)
The ExtractValue() function would
not accept expressions which matched element names containing an
underscore character.
(Bug #16320)
ALTER TABLE ... REBUILD PARTITION with no
partition name specified would crash the server.
(Bug #17940)
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)
Repeated invocations of a stored procedure containing a
CREATE EVENT or
ALTER EVENT statement would crash
the server.
(Bug #16408)
The mysql_close() C API function
leaked handles for shared-memory connections on Windows.
(Bug #15846)
ALTER TABLE ... REORGANIZE PARTITION failed
with Error on rename of
filename ... on Windows.
(Bug #17720)
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug #16175)
INSERT statements executed by
scheduled events were not written to the general log.
(Bug #16413)
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 MySQL server could crash with out of memory errors when
performing aggregate functions on a
DECIMAL column.
(Bug #17602)
Creating a partition which depends on an expression containing a column using the UTF8 character set would cause the server to crash. (Bug #14367)
Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug #18004)
CREATE
TABLE ... PARTITION ... AS SELECT ... would cause the
server to crash.
(Bug #15336)
NULL values were written to the
mysql.slow_log table incorrectly.
(Bug #17600)
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)
The self() XPath function was not handled
correctly by ExtractValue().
(Bug #16315)
A SELECT ... ORDER BY ... from a view defined
using a function could crash the server. An example of such a
view is CREATE VIEW v1 AS SELECT SQRT(c1) FROM
t1.
(Bug #18386)
The ExtractValue() function did
not return an error when passed an invalid XPath string.
(Bug #18172)
Improper checking of binary log statements could result in a server crash. (Bug #17457)
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)
Using triggers with partitioned InnoDB tables
led to incorrect results.
(Bug #17744)
On Linux, creation of table partitions failed within a stored procedure. (Bug #14363)
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)
Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug #17015)
MyISAM: Performing a bulk insert on a table
referenced by a trigger would crash the table.
(Bug #17764)
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)
Issuing GRANT
EXECUTE on a procedure would display any warnings
related to the creation of the procedure.
(Bug #7787)
Using the position() function in the XPath
argument to ExtractValue()
crashed the server.
(Bug #18171)
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)
For FEDERATED tables, a
SELECT statement with an
ORDER BY clause did not return rows in the
proper order.
(Bug #17377)
Using ORDER BY within a stored procedure (where
intvar
intvar is an integer variable or
expression) would crash the server.
The use of an integer i in an
ORDER BY
clause for sorting the result by the
ii th
column is deprecated (and nonstandard). It should
not be used in new applications. See
SELECT Syntax.
(Bug #16474)
Invoking more than once a prepared statement that creates a partitioned table would crash the server. (Bug #14350)
No error was reported when subpartitions were defined for a nonsubpartitioned table. (Bug #15961)
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)
The RENAME TABLE statement did
not move triggers to the new table.
(Bug #13525)
Triggers created without BEGIN and
END clauses resulted in “You have an
error in your SQL syntax” errors when dumping and
replaying a binary log.
(Bug #16878)
When attempting to insert a 0 into a
LIST-partitioned table that had no value-list
containing 0, no error was reported.
(Bug #15253)
Naming a partition using the characters
Ç or
ç (“c-cedilla”;
Unicode 00C7 or 00E7) made
unreadable the table containing the partition.
(Bug #14527)
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)
Setting the
myisam_repair_threads system
variable to a value larger than 1 could cause corruption of
large MyISAM tables.
(Bug #11527)
Searches on indexed columns of partitioned tables failed to find all matching rows following updates of the indexed columns. (Bug #14526)
Trying to add a partition to a table having subpartitions could crash the server. (Bug #17140)
Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)
ALTER TABLE ... ADD COLUMN ... AFTER ...
failed when used on partitioned tables.
(Bug #16806)
Cursors in stored routines could cause a server crash. (Bug #16887)
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)
Clients compiled from source with the
--without-readline did not save command history
from session to session.
(Bug #16557)
Repeated invocations of a stored procedure containing a
SHOW CREATE EVENT statement would
result in the error Packets out of order.
(Bug #17403)
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)
Slow queries executed by scheduled events were not being written to the slow query log. (Bug #16426)
The ExtractValue() function
permitted the use of the ! character in
identifiers by ignoring the illegal character. This is now
correctly reported as a syntax error.
(Bug #16313)
SELECT ... WHERE , when column LIKE
'A%'column had a key
and used the latin2_czech_cs collation,
caused the wrong number of rows to be returned.
(Bug #17374)
Stored routines that contained only a single statement were not
written properly to the dumpfile when using
mysqldump.
(Bug #14857)
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)
ALTER TABLE ... COALESCE PARTITION failed
with an Out of Memory error.
(Bug #16810)
SELECT COUNT(*) for a
MyISAM table could return different results
depending on whether an index was used.
(Bug #14980)
Setting up subpartitions on at least one but not all the partitions of a partitioned table caused the server to crash. (Bug #15407)
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)
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)
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)
A SELECT using a function against
a nested view would crash the server.
(Bug #15683)
mysql_fix_privilege_tables did not create the
mysql.plugin table.
(Bug #17568)
The server would execute stored routines that had a nonexistent definer. (Bug #13198)
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)
The server would crash when SHOW
STATUS was called on a server linked with
yaSSL.
(Bug #18310)
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)
The EXAMPLE storage engine did not work on
Windows.
(Bug #17721)
