This is a bugfix release for the current MySQL Community Server production release family. It replaces MySQL 5.0.33.
Functionality added or changed:
Incompatible Change: MySQL Cluster:
The LockPagesInMainMemory
configuration
parameter has changed its type and possible values. For more
information, see
LockPagesInMainMemory
.
The values true
and
false
are no longer accepted for this
parameter. If you were using this parameter and had it set to
false
in a previous release, you must
change it to 0
. If you had this parameter
set to true
, you should instead use
1
to obtain the same behavior as
previously, or 2
to take advantage of new
functionality introduced with this release, as described in
the section cited above.
Incompatible Change:
Previously, the DATE_FORMAT()
function returned a binary string. Now it returns a string with
a character set and collation given by
character_set_connection
and
collation_connection
so that it
can return month and weekday names containing non-ASCII
characters.
(Bug#22646)
Important Change:
When using a MERGE
table, the definition of
the table and the underlying MyISAM
tables
are checked each time the tables are opened for access
(including any SELECT
or
INSERT
statement). Each table is
compared for column order, types, sizes, and associated indexes.
If there is a difference in any one of the tables, the statement
will fail.
Added the
Uptime_since_flush_status
status variable, which indicates the number of seconds since the
most recent FLUSH STATUS
statement.
(Community contribution by Jeremy Cole)
(Bug#24822)
Added the SHOW PROFILES
and
SHOW PROFILE
statements to
display statement profile data, and the accompanying
INFORMATION_SCHEMA.PROFILING
table.
Profiling is controlled via the
profiling
and
profiling_history_size
session
variables. see Section 12.4.5.29, “SHOW PROFILES
Syntax”, and
Section 19.17, “The INFORMATION_SCHEMA PROFILING
Table”. (Community contribution by
Jeremy Cole)
The profiling feature is enabled via the
--enable-community-features
and --enable-profiling
options
to configure. These options are enabled by
default; to disable them, use
--disable-community-features
and
--disable-profiling
.
(Bug#24795)
The localhost
anonymous user account created
during MySQL installation on Windows now has no global
privileges. Formerly this account had all global privileges. For
operations that require global privileges, the
root
account can be used instead.
(Bug#24496)
The --skip-thread-priority
option
now is enabled by default for binary Mac OS X distributions. Use
of thread priorities degrades performance on Mac OS X.
(Bug#18526)
This is the last version for which MySQL-Max RPM distributions are available. (This change was already made for non-RPM binary distributions in 5.0.27.)
The bundled yaSSL library was upgraded to version 1.5.8.
Added the
--disable-grant-options
option
to configure. If configure
is run with this option, the
--bootstrap
,
--skip-grant-tables
, and
--init-file
options for
mysqld are disabled and cannot be used. For
Windows, the configure.js script recognizes
the DISABLE_GRANT_OPTIONS
flag, which has the
same effect.
Bugs fixed:
Security Fix:
Using an INFORMATION_SCHEMA
table with
ORDER BY
in a subquery could cause a server
crash.
We would like to thank Oren Isacson of Flowgate Security Consulting and Stefan Streichsbier of SEC Consult for informing us of this problem. (Bug#24630, Bug#26556, CVE-2007-1420)
Incompatible Change:
For ENUM
columns that had
enumeration values containing commas, the commas were mapped to
0xff
internally. However, this rendered the
commas indistinguishable from true 0xff
characters in the values. This no longer occurs. However, the
fix requires that you dump and reload any tables that have
ENUM
columns containing any true
0xff
values. Dump the tables using
mysqldump with the current server before
upgrading from a version of MySQL 5.0 older than 5.0.36 to
version 5.0.36 or newer.
(Bug#24660)
Partitioning: MySQL Cluster:
A query with an IN
clause against an
NDB
table employing explicit
user-defined partitioning did not always return all matching
rows.
(Bug#25821)
MySQL Cluster:
It was not possible to create an
NDB
table with a key on two
VARCHAR
columns where both
columns had a storage length in excess of 256.
(Bug#25746)
MySQL Cluster: Hosts in clusters with large numbers of nodes could experience excessive CPU usage while obtaining configuration data. (Bug#25711)
MySQL Cluster: In some circumstances, shutting down the cluster could cause connected mysqld processes to crash. (Bug#25668)
MySQL Cluster:
Memory allocations for TEXT
columns were calculated incorrectly, resulting in space being
wasted and other issues.
(Bug#25562)
MySQL Cluster: The failure of a master node during a node restart could lead to a resource leak, causing later node failures. (Bug#25554)
MySQL Cluster:
An UPDATE
using an
IN
clause on an
NDB
table on which there was a
trigger caused mysqld to crash.
(Bug#25522)
MySQL Cluster: A node shutdown occurred if the master failed during a commit. (Bug#25364)
MySQL Cluster:
Creating a nonunique index with the USING
HASH
clause silently created an ordered index instead
of issuing a warning.
(Bug#24820)
MySQL Cluster:
The ndb_size.tmpl
file (necessary for using
the ndb_size.pl
script) was missing from
binary distributions.
(Bug#24191)
MySQL Cluster:
When a data node was shut down using the management client
STOP
command, a connection event
(NDB_LE_Connected
) was logged instead of a
disconnection event (NDB_LE_Disconnected
).
(Bug#22773)
MySQL Cluster: The management server did not handle logging of node shutdown events correctly in certain cases. (Bug#22013)
MySQL Cluster:
SELECT
statements with a
BLOB
or
TEXT
column in the selected
column list and a WHERE
condition including a
primary key lookup on a VARCHAR
primary key produced empty result sets.
(Bug#19956)
Replication:
When SET PASSWORD
was written to
the binary log double quotes were included in the statement. If
the slave was running in with the server SQL mode set to
ANSI_QUOTES
, then the event
failed, which halted the replication process.
(Bug#24158)
Replication: A stored procedure, executed from a connection using a binary character set, and which wrote multibyte data, would write incorrectly escaped entries to the binary log. This caused syntax errors, and caused replication to fail. (Bug#23619, Bug#24492)
Replication:
Changes to the lc_time_names
system variable were not replicated.
(Bug#22645)
Replication:
For SET
,
SELECT
, and
DO
statements that invoked a
stored function from a database other than the default database,
the function invocation could fail to be replicated.
(Bug#19725)
Replication: If a slave server closed its relay log (for example, due to an error during log rotation), the I/O thread did not recognize this and still tried to write to the log, causing a server crash. (Bug#10798)
Cluster API:
Deletion of an Ndb_cluster_connection
object
took a very long time.
(Bug#25487)
Cluster API:
Invoking the NdbTransaction::execute()
method
using execution type Commit
and abort option
AO_IgnoreError
could lead to a crash of the
transaction coordinator (DBTC
).
(Bug#25090)
Cluster API: A unique index lookup on a nonexistent tuple could lead to a data node timeout (error 4012). (Bug#25059)
Cluster API:
libndbclient.so
was not versioned.
(Bug#13522)
Using ORDER BY
or GROUP BY
could yield different results when selecting from a view and
selecting from the underlying table.
(Bug#26209)
DISTINCT
queries that were executed using a
loose scan for an InnoDB
table that had been
emptied caused a server crash.
(Bug#26159)
A WHERE
clause that used
BETWEEN
for
DATETIME
values could be treated
differently for a SELECT
and a
view defined as that SELECT
.
(Bug#26124)
Collation for LEFT JOIN
comparisons could be
evaluated incorrectly, leading to improper query results.
(Bug#26017)
The WITH CHECK OPTION
clause for views was
ignored for updates of multiple-table views when the updates
could not be performed on fly and the rows to update had to be
put into temporary tables first.
(Bug#25931)
LOAD DATA
INFILE
did not work with pipes.
(Bug#25807)
The SEC_TO_TIME()
and
QUARTER()
functions sometimes did
not handle NULL
values correctly.
(Bug#25643)
The InnoDB
parser sometimes did not account
for null bytes, causing spurious failure of some queries.
(Bug#25596)
View definitions that used the !
operator
were treated as containing the NOT
operator,
which has a different precedence and can produce different
results. .
(Bug#25580)
An error in the name resolution of nested JOIN ...
USING
constructs was corrected.
(Bug#25575)
GROUP BY
and DISTINCT
did
not group NULL
values for columns that have a
UNIQUE
index. .
(Bug#25551)
The --with-readline
option for
configure did not work for commercial source
packages, but no error message was printed to that effect. Now a
message is printed.
(Bug#25530)
mysql_stmt_fetch()
did an
invalid memory deallocation when used with the embedded server.
(Bug#25492)
Referencing an ambiguous column alias in an expression in the
ORDER BY
clause of a query caused the server
to crash.
(Bug#25427)
A yaSSL program named test was installed, causing conflicts with the test system utility. It is no longer installed. (Bug#25417)
For a UNIQUE
index containing many
NULL
values, the optimizer would prefer the
index for
conditions over other more selective indexes. .
(Bug#25407)col
IS
NULL
An AFTER UPDATE
trigger on an
InnoDB
table with a composite primary key
caused the server to crash.
(Bug#25398)
Passing a NULL
value to a user-defined
function from within a stored procedure crashes the server.
(Bug#25382)
perror crashed on some platforms due to
failure to handle a NULL
pointer.
(Bug#25344)
mysql.server stop timed out too quickly (35 seconds) waiting for the server to exit. Now it waits up to 15 minutes, to ensure that the server exits. (Bug#25341)
A query that contained an EXIST
subquery with
a UNION
over correlated and
uncorrelated SELECT
queries could
cause the server to crash.
(Bug#25219)
mysql_kill()
caused a server
crash when used on an SSL connection.
(Bug#25203)
yaSSL was sensitive to the presence of whitespace at the ends of lines in PEM-encoded certificates, causing a server crash. (Bug#25189)
A query with ORDER BY
and GROUP
BY
clauses where the ORDER BY
clause had more elements than the GROUP BY
clause caused a memory overrun leading to a crash of the server.
(Bug#25172)
Use of ON DUPLICATE KEY UPDATE
defeated the
usual restriction against inserting into a join-based view
unless only one of the underlying tables is used.
(Bug#25123)
Using a view in combination with a USING
clause caused column aliases to be ignored.
(Bug#25106)
A multiple-table DELETE QUICK
could sometimes
cause one of the affected tables to become corrupted.
(Bug#25048)
ALTER TABLE ... ENABLE KEYS
acquired a global
lock, preventing concurrent execution of other statements that
use tables. .
(Bug#25044)
An assertion failed incorrectly for prepared statements that
contained a single-row uncorrelated subquery that was used as an
argument of the IS NULL
predicate.
(Bug#25027)
A return value of -1
from user-defined
handlers was not handled well and could result in conflicts with
server code.
(Bug#24987)
Accessing a fixed record format table with a crashed key definition results in server/myisamchk segmentation fault. (Bug#24855)
mysqld_multi and
mysqlaccess looked for option files in
/etc
even if the
--sysconfdir
option for
configure had been given to specify a
different directory.
(Bug#24780)
If there was insufficient memory available to mysqld, this could sometimes cause the server to hang during startup. (Bug#24751)
Optimizations that are legal only for subqueries without tables
and WHERE
conditions were applied for any
subquery without tables.
(Bug#24670)
If an ORDER BY
or GROUP BY
list included a constant expression being optimized away and, at
the same time, containing single-row subselects that returned
more that one row, no error was reported. If a query required
sorting by expressions containing single-row subselects that
returned more than one row, execution of the query could cause a
server crash.
(Bug#24653)
For ALTER TABLE
, using
ORDER BY
could cause a
server crash. Now the expression
ORDER BY
clause allows
only column names to be specified as sort criteria (which was
the only documented syntax, anyway).
(Bug#24562)
A workaround was implemented to avoid a race condition in the
NPTL pthread_exit()
implementation.
(Bug#24507)
mysqltest crashed with a stack overflow. (Bug#24498)
Within stored routines or prepared statements, inconsistent
results occurred with multiple use of INSERT ... SELECT
... ON DUPLICATE KEY UPDATE
when the ON
DUPLICATE KEY UPDATE
clause erroneously tried to
assign a value to a column mentioned only in its
SELECT
part.
(Bug#24491)
Expressions of the form (a, b) IN (SELECT a, MIN(b)
FROM t GROUP BY a)
could produce incorrect results
when column a
of table t
contained NULL
values while column
b
did not.
(Bug#24420)
If a prepared statement accessed a view, access to the tables listed in the query after that view was checked in the security context of the view. (Bug#24404)
Attempts to access a MyISAM
table with a
corrupt column definition caused a server crash.
(Bug#24401)
When opening a corrupted .frm
file during a
query, the server crashes.
(Bug#24358)
Some joins in which one of the joined tables was a view could return erroneous results or crash the server. (Bug#24345)
A view was not handled correctly if the
SELECT
part contained
“\Z
”.
(Bug#24293)
A query using WHERE
could
cause the server to crash.
(Bug#24261)unsigned_column
NOT IN
('negative_value
')
Expressions of the form (a, b) IN (SELECT c, d
...)
could produce incorrect results if
a
, b
, or both were
NULL
.
(Bug#24127)
A FETCH
statement using a cursor
on a table which was not in the table cache could sometimes
cause the server to crash.
(Bug#24117)
Queries that evaluate NULL IN (SELECT ... UNION SELECT
...)
could produce an incorrect result
(FALSE
instead of NULL
).
(Bug#24085)
Hebrew-to-Unicode conversion failed for some characters. Definitions for the following Hebrew characters (as specified by the ISO/IEC 8859-8:1999) were added: LEFT-TO-RIGHT MARK (LRM), RIGHT-TO-LEFT MARK (RLM) (Bug#24037)
Some UPDATE
statements were
slower than in previous versions when the search key could not
be converted to a valid value for the type of the search column.
(Bug#24035)
ISNULL(DATE(NULL))
and
ISNULL(CAST(NULL AS DATE))
erroneously returned false.
(Bug#23938)
Within a stored routine, accessing a declared routine variable
with PROCEDURE ANALYSE()
caused a server
crash.
(Bug#23782)
When reading from the standard input on Windows, mysqlbinlog opened the input in text mode rather than binary mode and consequently misinterpreted some characters such as Control-Z. (Bug#23735)
OPTIMIZE TABLE
tried to sort
R-tree indexes such as spatial indexes, although this is not
possible (see Section 12.4.2.5, “OPTIMIZE TABLE
Syntax”).
(Bug#23578)
For an InnoDB
table with any ON
DELETE
trigger, TRUNCATE
TABLE
mapped to DELETE
and activated triggers. Now a fast truncation occurs and
triggers are not activated. .
(Bug#23556)
The row count for MyISAM
tables was not
updated properly, causing SHOW TABLE
STATUS
to report incorrect values.
(Bug#23526)
User-defined variables could consume excess memory, leading to a
crash caused by the exhaustion of resources available to the
MEMORY
storage engine, due to the fact that
this engine is used by MySQL for variable storage and
intermediate results of GROUP BY
queries.
Where SET
had been used, such a condition
could instead give rise to the misleading error message
You may only use constant expressions with
SET, rather than Out of memory (Needed
NNNNNN bytes).
(Bug#23443)
With ONLY_FULL_GROUP_BY
enabled, the server was too strict: Some expressions involving
only aggregate values were rejected as nonaggregate (for
example, MAX(a)
–
MIN(a)
).
(Bug#23417)
The arguments to the ENCODE()
and
the DECODE()
functions were not
printed correctly, causing problems in the output of
EXPLAIN
EXTENDED
and in view definitions.
(Bug#23409)
A table created with the ROW_FORMAT = FIXED
table option lost the option if an index was added or dropped
with CREATE INDEX
or
DROP INDEX
.
(Bug#23404)
A deadlock could occur, with the server hanging on
Closing tables
, with a sufficient number of
concurrent INSERT DELAYED
,
FLUSH TABLES
,
and ALTER TABLE
operations.
(Bug#23312)
Some queries against INFORMATION_SCHEMA
that
used subqueries failed. .
(Bug#23299)
readline
detection did not work correctly on
NetBSD.
(Bug#23293)
If there was insufficient memory to store or update a blob
record in a MyISAM
table then the table will
marked as crashed.
(Bug#23196)
LAST_INSERT_ID()
was not reset to
0 if INSERT ...
SELECT
inserted no rows.
(Bug#23170)
A compressed MyISAM
table that became
corrupted could crash myisamchk and possibly
the MySQL Server.
(Bug#23139)
The number of setsockopt()
calls performed
for reads and writes to the network socket was reduced to
decrease system call overhead.
(Bug#22943)
mysql_upgrade failed when called with a
--basedir
path name containing spaces.
(Bug#22801)
SET lc_time_names =
allowed only exact literal values, not expression
values.
(Bug#22647)value
The STDDEV()
function returned a
positive value for data sets consisting of a single value.
(Bug#22555)
Storing values specified as hexadecimal values 64 or more bits
long in BIT(64)
,
BIGINT
, or BIGINT
UNSIGNED
columns did not raise any warning or error if
the value was out of range.
(Bug#22533)
SHOW COLUMNS
reported some
NOT NULL
columns as NULL
.
(Bug#22377)
Type conversion errors during formation of index search conditions were not correctly checked, leading to incorrect query results. (Bug#22344)
Changing the value of MI_KEY_BLOCK_LENGTH
in
myisam.h
and recompiling MySQL resulted in
a myisamchk that saw existing
MyISAM
tables as corrupt.
(Bug#22119)
A crash of the MySQL Server could occur when unpacking a
BLOB
column from a row in a
corrupted MyISAM table. This could happen when trying to repair
a table using either REPAIR TABLE
or myisamchk; it could also happen when
trying to access such a “broken” row using
statements like SELECT
if the
table was not marked as crashed.
(Bug#22053)
The code for generating USE
statements for binary logging of CREATE
PROCEDURE
statements resulted in confusing output from
mysqlbinlog for DROP
PROCEDURE
statements.
(Bug#22043)
For the IF()
and
COALESCE()
function and
CASE
expressions, large unsigned
integer values could be mishandled and result in warnings.
(Bug#22026)
SSL connections could hang at connection shutdown. (Bug#21781, Bug#24148)
The FEDERATED
storage engine did not support
the euckr
character set.
(Bug#21556)
When updating a table that used a JOIN
of the
table itself (for example, when building trees) and the table
was modified on one side of the expression, the table would
either be reported as crashed or the wrong rows in the table
would be updated.
(Bug#21310)
mysqld_error.h
was not installed when only
the client libraries were built.
(Bug#21265)
InnoDB
: During a restart of the MySQL Server
that followed the creation of a temporary table using the
InnoDB
storage engine, MySQL failed to clean
up in such a way that InnoDB
still attempted
to find the files associated with such tables.
(Bug#20867)
Inserting DEFAULT
into a column with no
default value could result in garbage in the column. Now the
same result occurs as when inserting NULL
into a NOT NULL
column.
(Bug#20691)
A stored routine containing semicolon in its body could not be reloaded from a dump of a binary log. (Bug#20396)
SELECT ... FOR
UPDATE
, SELECT
... LOCK IN SHARE MODE
,
DELETE
, and
UPDATE
statements executed using
a full table scan were not releasing locks on rows that did not
satisfy the WHERE
condition.
(Bug#20390)
On Windows, if the server was installed as a service, it did not auto-detect the location of the data directory. (Bug#20376)
The BUILD/check-cpu script did not recognize Celeron processors. (Bug#20061)
If a duplicate key value was present in the table,
INSERT ...
ON DUPLICATE KEY UPDATE
reported a row count
indicating that a record was updated, even when no record
actually changed due to the old and new values being the same.
Now it reports a row count of zero.
(Bug#19978)
ORDER BY
values of the
DOUBLE
or
DECIMAL
types could change the
result returned by a query.
(Bug#19690)
The readline
library wrote to uninitialized
memory, causing mysql to crash.
(Bug#19474)
mysqltest incorrectly tried to retrieve result sets for some queries where no result set was available. (Bug#19410)
Use of already freed memory caused SSL connections to hang forever. (Bug#19209)
Some
CASE
statements inside stored routines could lead to excessive
resource usage or a crash of the server.
(Bug#19194, Bug#24854)
Instance Manager could crash during shutdown. (Bug#19044)
The server might fail to use an appropriate index for
DELETE
when ORDER
BY
, LIMIT
, and a nonrestricting
WHERE
are present.
(Bug#17711)
No warning was issued for use of the DATA
DIRECTORY
or INDEX DIRECTORY
table
options on a platform that does not support them.
(Bug#17498)
The FEDERATED
storage engine did not support
the utf8
character set.
(Bug#17044)
The optimizer removes expressions from GROUP
BY
and DISTINCT
clauses if they
happen to participate in
predicates of the
expression
=
constant
WHERE
clause, the idea being that, if the
expression is equal to a constant, then it cannot take on
multiple values. However, for predicates where the expression
and the constant item are of different result types (for
example, when a string column is compared to 0), this is not
valid, and can lead to invalid results in such cases. The
optimizer now performs an additional check of the result types
of the expression and the constant; if their types differ, then
the expression is not removed from the GROUP
BY
list.
(Bug#15881)
When a prepared statement failed during the prepare operation, the error code was not cleared when it was reused, even if the subsequent use was successful. (Bug#15518)
Dropping a user-defined function sometimes did not remove the
UDF entry from the mysql.proc
table.
(Bug#15439)
Inserting a row into a table without specifying a value for a
BINARY(
column caused the column to be set to spaces, not zeroes.
(Bug#14171)N
) NOT NULL
On Windows, the SLEEP()
function
could sleep too long, especially after a change to the system
clock.
(Bug#14094, Bug#24686, Bug#17635)
mysqldump --order-by-primary failed if the primary key name was an identifier that required quoting. (Bug#13926)
To enable installation of MySQL RPMs on Linux systems running RHEL 4 (which includes SE-Linux) additional information was provided to specify some actions that are allowed to the MySQL binaries. (Bug#12676)
The presence of ORDER BY
in a view definition
prevented the MERGE
algorithm from being used
to resolve the view even if nothing else in the definition
required the TEMPTABLE
algorithm.
(Bug#12122)
The internal functions for table preparation, creation, and
alteration were not re-execution friendly, causing problems in
code that: repeatedly altered a table; repeatedly created and
dropped a table; opened and closed a cursor on a table, altered
the table, and then reopened the cursor; used
ALTER TABLE
to change a table's
current AUTO_INCREMENT
value; created indexes
on utf8
columns.
Re-execution of CREATE DATABASE
,
CREATE TABLE
, and
ALTER TABLE
statements in stored
routines or as prepared statements also caused incorrect results
or crashes.
(Bug#4968, Bug#6895, Bug#19182, Bug#19733, Bug#22060, Bug#24879)
User Comments
Add your own comment.