This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server release (5.0.50). 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 Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise/advisors.html.
Functionality added or changed:
mysqldump produces a -- Dump
completed on
comment
at the end of the dump if
DATE
--comments
is given. The date
causes dump files for identical data take at different times to
appear to be different. The new options
--dump-date
and
--skip-dump-date
control whether the date is added to the comment.
--skip-dump-date
suppresses date printing. The default is
--dump-date
(include the date
in the comment).
(Bug#31077)
The default value of the
connect_timeout
system variable
was increased from 5 to 10 seconds. This might help in cases
where clients frequently encounter errors of the form
Lost connection to MySQL server at
'
.
(Bug#28359)XXX
', system error:
errno
The use of InnoDB
hash indexes now can be
controlled by setting the new
innodb_adaptive_hash_index
system variable at server startup. By default, this variable is
enabled. See Section 13.2.10.4, “Adaptive Hash Indexes”.
Bugs fixed:
Security Fix:
Using RENAME TABLE
against a
table with explicit DATA DIRECTORY
and
INDEX DIRECTORY
options can be used to
overwrite system table information by replacing the symbolic
link points. the file to which the symlink points.
MySQL will now return an error when the file to which the symlink points already exists. (Bug#32111, CVE-2007-5969)
Security Fix:
ALTER VIEW
retained the original
DEFINER
value, even when altered by another
user, which could allow that user to gain the access rights of
the view. Now ALTER VIEW
is
allowed only to the original definer or users with the
SUPER
privilege.
(Bug#29908)
Security Fix:
When using a FEDERATED
table, the local
server could be forced to crash if the remote server returned a
result with fewer columns than expected.
(Bug#29801)
Incompatible Change:
With ONLY_FULL_GROUP_BY
SQL
mode enabled, queries such as SELECT a FROM t1 HAVING
COUNT(*)>2
were not being rejected as they should
have been.
This fix results in the following behavior:
There is a check against mixing group and nongroup columns
only when
ONLY_FULL_GROUP_BY
is
enabled.
This check is done both for the select list and for the
HAVING
clause if there is one.
This behavior differs from previous versions as follows:
Previously, the HAVING
clause was not
checked when
ONLY_FULL_GROUP_BY
was
enabled; now it is checked.
Previously, the select list was checked even when
ONLY_FULL_GROUP_BY
was not
enabled; now it is checked only when
ONLY_FULL_GROUP_BY
is
enabled.
Incompatible Change: It was possible to create a view having a column whose name consisted of an empty string or space characters only.
One result of this bug fix is that aliases for columns in the
view SELECT
statement are checked to ensure
that they are legal column names. In particular, the length must
be within the maximum column length of 64 characters, not the
maximum alias length of 256 characters. This can cause problems
for replication or loading dump files. For additional
information and workarounds, see
Section D.4, “Restrictions on Views”.
(Bug#27695)
See also Bug#31202.
Incompatible Change:
Several type-preserving functions and operators returned an
incorrect result type that does not match their argument types:
COALESCE()
,
IF()
,
IFNULL()
,
LEAST()
,
GREATEST()
,
CASE
. These now aggregate using the
precise SQL types of their arguments rather than the internal
type. In addition, the result type of the
STR_TO_DATE()
function is now
DATETIME
by default.
(Bug#27216)
MySQL Cluster:
An uninitialized variable in the
NDB
storage engine code led to
AUTO_INCREMENT
failures when the server was
compiled with gcc 4.2.1.
(Bug#31848)
This regression was introduced by Bug#27437.
MySQL Cluster:
An error with an if
statement in
sql/ha_ndbcluster.cc
could potentially lead
to an infinite loop in case of failure when working with
AUTO_INCREMENT
columns in
NDB
tables.
(Bug#31810)
MySQL Cluster:
The NDB
storage engine code was not
safe for strict-alias optimization in gcc
4.2.1.
(Bug#31761)
MySQL Cluster: Transaction timeouts were not handled well in some circumstances, leading to excessive number of transactions being aborted unnecessarily. (Bug#30379)
MySQL Cluster: In some cases, the cluster managment server logged entries multiple times following a restart of mgmd. (Bug#29565)
MySQL Cluster: An interpreted program of sufficient size and complexity could cause all cluster data nodes to shut down due to buffer overruns. (Bug#29390)
MySQL Cluster:
UPDATE IGNORE
could sometimes fail on
NDB
tables due to the use of
unitialized data when checking for duplicate keys to be ignored.
(Bug#25817)
Replication:
Use of the @@hostname
system variable in
inserts in mysql_system_tables_data.sql
did
not replicate. The workaround is to select its value into a user
variable (which does replicate) and insert that.
(Bug#31167)
A build problem introduced in MySQL 5.0.52 was resolved: The x86 32-bit Intel icc-compiled server binary had unwanted dependences on Intel icc runtime libraries. (Bug#32514)
The rules for valid column names were being applied differently for base tables and views. (Bug#32496)
The default grant tables on Windows contained information for
host production.mysql.com
, which should not
be there.
(Bug#32219)
Under certain conditions, the presence of a GROUP
BY
clause could cause an ORDER BY
clause to be ignored.
(Bug#32202)
The server crashed on optimizations involving a join of
INT
and
MEDIUMINT
columns and a system
variable in the WHERE
clause.
(Bug#32103)
User-defined functions are not loaded if the server is started
with the --skip-grant-tables
option, but the server did not properly handle this case and
issued an Out of memory error message
instead.
(Bug#32020)
A column with malformed multi-byte characters could cause the full-text parser to go into an infinite loop. (Bug#31950)
In debug builds, testing the result of an IN
subquery against NULL
caused an assertion
failure.
(Bug#31884)
Comparison results for BETWEEN
were
different from those for operators like
<
and
>
for
DATETIME
-like values with
trailing extra characters such as '2007-10-01 00:00:00
GMT-6'
. BETWEEN
treated
the values as DATETIME
, whereas
the other operators performed a binary-string comparison. Now
they all uniformly use a DATETIME
comparison, but generate warnings for values with trailing
garbage.
(Bug#31800)
The server could crash during filesort
for
ORDER BY
based on expressions with
INET_NTOA()
or
OCT()
if those functions returned
NULL
.
(Bug#31758)
For a fatal error during a filesort in
find_all_keys()
, the error was returned
without the necessary handler uninitialization, causing an
assertion failure.
(Bug#31742)
The examined-rows count was not incremented for
const
queries.
(Bug#31700)
The mysql_change_user()
C API
function was subject to buffer overflow.
(Bug#31669)
For SELECT ... INTO
OUTFILE
, if the ENCLOSED BY
string
is empty and the FIELDS TERMINATED BY
string
started with a special character (one of n
,
t
, r
,
b
, 0
,
Z
, or N
), every occurrence
of the character within field values would be duplicated.
(Bug#31663)
SHOW COLUMNS
and
DESCRIBE
displayed
null
as the column type for a view with no
valid definer. This caused mysqldump to
produce a nonreloadable dump file for the view.
(Bug#31662)
The mysqlbug script did not include the
correct values of CFLAGS
and
CXXFLAGS
that were used to configure the
distribution.
(Bug#31644)
A buffer used when setting variables was not dimensioned to
accommodate the trailing '\0'
byte, so a
single-byte buffer overrun was possible.
(Bug#31588)
HAVING
could treat lettercase of table
aliases incorrectly if
lower_case_table_names
was
enabled.
(Bug#31562)
The fix for Bug#24989 introduced a problem such that a
NULL
thread handler could be used during a
rollback operation. This problem is unlikely to be seen in
practice.
(Bug#31517)
The length of the result from
IFNULL()
could be calculated
incorrectly because the sign of the result was not taken into
account.
(Bug#31471)
Queries that used the ref
access method or index-based subquery execution over indexes
that have DECIMAL
columns could
fail with an error Column
.
(Bug#31450)col_name
cannot be null
SELECT 1 REGEX NULL
caused an assertion
failure for debug servers.
(Bug#31440)
Executing RENAME
while tables were open for
use with HANDLER
statements could
cause a server crash.
(Bug#31409)
mysql-test-run.pl tried to create files in a
directory where it could not be expected to have write
permission. mysqltest created
.reject
files in a directory other than the
one where test results go.
(Bug#31398)
For an almost-full MyISAM
table, an insert
that failed could leave the table in a corrupt state.
(Bug#31305)
CONVERT(
would fail on invalid input, but processing
was not aborted for the val
,
DATETIME)WHERE
clause, leading
to a server crash.
(Bug#31253)
Allocation of an insufficiently large group-by buffer following creation of a temporary table could lead to a server crash. (Bug#31249)
Use of DECIMAL(
in
n
,
n
) ZEROFILLGROUP_CONCAT()
could cause a
server crash.
(Bug#31227)
WIth small values of
myisam_sort_buffer_size
,
REPAIR TABLE
for
MyISAM
tables could cause a server crash.
(Bug#31174)
If MAKETIME()
returned
NULL
when used in an ORDER
BY
that was evaluated using
filesort
, a server crash could result.
(Bug#31160)
Full-text searches on ucs2
columns caused a
server crash. (FULLTEXT
indexes on
ucs2
columns cannot be used, but it should be
possible to perform IN BOOLEAN MODE
searches
on ucs2
columns without a crash.)
(Bug#31159)
An assertion designed to detect a bug in the
ROLLUP
implementation would incorrectly be
triggered when used in a subquery context with noncacheable
statements.
(Bug#31156)
Selecting spatial types in a
UNION
could cause a server crash.
(Bug#31155)
Use of GROUP_CONCAT(DISTINCT
caused an
assertion failure.
(Bug#31154)bit_column
)
GROUP BY NULL WITH ROLLUP
could cause a
server crash.
(Bug#31095)
See also Bug#32558.
Internal conversion routines could fail for several multi-byte
character sets (big5
,
cp932
, euckr
,
gb2312
, sjis
) for empty
strings or during evaluation of SOUNDS
LIKE
.
(Bug#31069, Bug#31070)
The MOD()
function and the
%
operator crashed the server for a divisor
less than 1 with a very long fractional part.
(Bug#31019)
On Windows, the pthread_mutex_trylock()
implementation was incorrect.
(Bug#30992)
A character set introducer followed by a hexadecimal or bit-value literal did not check its argument and could return an ill-formed result for invalid input. (Bug#30986)
CHAR(
did not check its
argument and could return an ill-formed result for invalid
input.
(Bug#30982)str
USING
charset
)
The result from
CHAR(
) did not add a leading 0x00 byte for input
strings with an odd number of bytes.
(Bug#30981)str
USING
ucs2
The GeomFromText()
function could
cause a server crash if the first argument was
NULL
or the empty string.
(Bug#30955)
MAKEDATE()
incorrectly moved year
values in the 100–200 range into the 1970–2069
range. (This is legitimate for 00–99, but three-digit
years should be used unchanged.)
(Bug#30951)
When invoked with constant arguments,
STR_TO_DATE()
could use a cached
value for the format string and return incorrect results.
(Bug#30942)
GROUP_CONCAT()
returned
','
rather than an empty string when the
argument column contained only empty strings.
(Bug#30897)
For MEMORY
tables, lookups for
NULL
values in BTREE
indexes could return incorrect results.
(Bug#30885)
Calling NAME_CONST()
with
nonconstant arguments triggered an assertion failure.
Nonconstant arguments are now disallowed.
(Bug#30832)
For a spatial column with a regular
(non-SPATIAL
) index, queries failed if the
optimizer tried to use the index.
(Bug#30825)
Values for the --tc-heuristic-recover
option
incorrectly were treated as values for the
--myisam-stats-method
option.
(Bug#30821)
On Windows, the pthread_mutex_trylock()
implementation was incorrect. One symptom was that invalidating
the query cache could cause a server crash.
(Bug#30768)
Under some circumstances,
CREATE TABLE ...
SELECT
could crash the server or incorrectly report
that the table row size was too large.
(Bug#30736)
Using the MIN()
or
MAX()
function to select one part
of a multi-part key could cause a crash when the function result
was NULL
.
(Bug#30715)
The optimizer could ignore ORDER BY
in cases
when the result set is ordered by filesort
,
resulting in rows being returned in incorrect order.
(Bug#30666)
MyISAM
tables could not exceed 4294967295
(232 – 1) rows on Windows.
(Bug#30638)
For MEMORY
tables,
DELETE
statements that remove
rows based on an index read could fail to remove all matching
rows.
(Bug#30590)
Using GROUP BY
on an expression of the form
caused a server
crash due to incorrect calculation of number of decimals.
(Bug#30587)timestamp_col
DIV
number
When expanding a *
in a
USING
or NATURAL
join, the
check for table access for both tables in the join was done
using only the grant information of the first table.
(Bug#30468)
Versions of mysqldump from MySQL 4.1 or
higher tried to use START TRANSACTION WITH CONSISTENT
SNAPSHOT
if the
--single-transaction
and
--master-data
options were
given, even with servers older than 4.1 that do not support
consistent snapshots.
(Bug#30444)
Setting certain values on a table using a spatial index could cause the server to crash. (Bug#30286)
Some INFORMATION_SCHEMA
tables are intended
for internal use, but could be accessed by using
SHOW
statements.
(Bug#30079)
Specifying the --without-geometry
option for
configure caused server compilation to fail.
(Bug#29972)
Under some circumstances, a UDF initialization function could be passed incorrect argument lengths. (Bug#29804)
configure did not find nss
on some Linux platforms.
(Bug#29658)
The log
and
log_slow_queries
system
variables were displayed by SHOW
VARIABLES
but could not be accessed in expressions as
@@log
and
@@log_slow_queries
. Also, attempting to set
them with SET
produced an incorrect
Unknown system variable
message. Now these
variables can be accessed in expressions and attempting to set
their values produces an error message that the variable is read
only.
(Bug#29131)
SHOW VARIABLES
did not display
the relay_log
,
relay_log_index
, or
relay_log_info_file
system variables.
(Bug#28893)
On Windows, mysql_upgrade created temporary
files in C:\
and did not clean them up.
(Bug#28774)
Index hints specified in view definitions were ignored when using the view to select from the base table. (Bug#28702)
Views do not have indexes, so index hints do not apply. Use of index hints when selecting from a view is now disallowed. (Bug#28701)
After changing the SQL mode to a restrictive value that would make already-inserted dates in a column be considered invalid, searches returned different results depending on whether the column was indexed. (Bug#28687)
The result from CHAR()
was
incorrectly assumed in some contexts to return a single-byte
result.
(Bug#28550)
The parser confused user-defined function (UDF) and stored
function creation for CREATE
FUNCTION
and required that there be a default database
when creating UDFs, although there is no such requirement.
(Bug#28318, Bug#29816)
The result of a comparison between
VARBINARY
and
BINARY
columns differed depending
on whether the VARBINARY
column
was indexed.
(Bug#28076)
The metadata in some MYSQL_FIELD
members
could be incorrect when a temporary table was used to evaluate a
query.
(Bug#27990)
comp_err created files with permissions such that they might be inaccessible during make install operations. (Bug#27789)
The anonymous accounts were not being created during MySQL installation. (Bug#27692)
Host names sometimes were treated as case sensitive in
account-management statements (CREATE
USER
, GRANT
,
REVOKE
, and so forth).
(Bug#19828)
The readline
library has been updated to
version 5.2. This addresses issues in the
mysql client where history and editing within
the client would fail to work as expected.
(Bug#18431)
The Aborted_clients
status
variable was incremented twice if a client exited without
calling mysql_close()
.
(Bug#16918)
Clients were ignoring the TCP/IP port number specified as the default port via the --with-tcp-port configuration option. (Bug#15327)
Values of types REAL ZEROFILL
,
DOUBLE ZEROFILL
, FLOAT
ZEROFILL
, were not zero-filled when converted to a
character representation in the C prepared statement API.
(Bug#11589)
mysql stripped comments from statements sent
to the server. Now the
--comments
or
--skip-comments
option can be
used to control whether to retain or strip comments. The default
is --skip-comments
.
(Bug#11230, Bug#26215)
Several buffer-size system variables were either being handled incorrectly for large values (for settings larger than 4GB, they were truncated to values less than 4GB without a warning), or were limited unnecessarily to 4GB even on 64-bit systems. The following changes were made:
For key_buffer_size
, values
larger than 4GB are allowed on 64-bit platforms (except
Windows, for which large values are truncated to 4GB with a
warning).
For join_buffer_size
,
sort_buffer_size
, and
myisam_sort_buffer_size
,
values are limited to 4GB on all platforms. Larger values
are truncated to 4GB with a warning.
In addition, settings for
read_buffer_size
and
read_rnd_buffer_size
are
limited to 2GB on all platforms. Larger values are truncated to
2GB with a warning.
(Bug#5731, Bug#29419, Bug#29446)
Executing DISABLE KEYS
and ENABLE
KEYS
on a nonempty table would cause the size of the
index file for the table to grow considerable. This was because
the DISABLE KEYS
operation would only mark
the existing index, without deleting the index blocks. The
ENABLE KEYS
operation would re-create the
index, adding new blocks, while the previous index blocks would
remain. Existing indexes are now dropped and recreated when the
ENABLE KEYS
statement is executed.
(Bug#4692)
User Comments
Add your own comment.