Functionality added or changed:
Incompatible Change:
The InnoDB
storage engine no longer ignores
trailing spaces when comparing
BINARY
or
VARBINARY
column values. This
means that (for example) the binary values
'a'
and 'a '
are now
regarded as unequal any time they are
compared, as they are in MyISAM
tables.
See Section 10.4.2, “The BINARY
and
VARBINARY
Types” for more information
about the BINARY
and
VARBINARY
types.
(Bug#14189)
MySQL Cluster:
More descriptive warnings are now issued when inappropriate
logging parameters are set in config.ini
.
(Formerly, the warning issued was simply Could not
add logfile destination.)
(Bug#11331)
MySQL Cluster:
The ndb_mgm client commands
and
node_id
START
now
work with management nodes as well as data nodes. However, using
node_id
STOPALL
for node_id
continues to affect all data nodes only.
mysql no longer terminates data value display when it encounters a NUL byte. Instead, it displays NUL bytes as spaces. (Bug#16859)
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)
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#15980, Bug#12674)
The INFORMATION_SCHEMA
now skips data
contained in unlistable/unreadable directories rather than
returning an error.
(Bug#15851)
InnoDB
now caches a list of unflushed files
instead of scanning for unflushed files during a table flush
operation. This improves performance when
--innodb_file_per_table
is set on
a system with a large number of InnoDB
tables.
(Bug#15653)
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)
Wording of error 1329 changed to No data - zero rows fetched, selected, or processed. (Bug#15206)
The message for error 1109 changed from Unknown table ... in order clause to Unknown table ... in field list. (Bug#15091)
A number of performance issues were resolved that had previously
been encountered when using statements that repeatedly invoked
stored functions. For example, calling
BENCHMARK()
using a stored
function executed much more slowly than when invoking it with
inline code that accomplished the same task. In most cases the
two should now execute with approximately the same speed.
(Bug#14946, Bug#15014)
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)
When using the GROUP_CONCAT()
function where the
group_concat_max_len
system
variable was greater than 512, the type of the result was
BLOB
only if the query included
an ORDER BY
clause; otherwise the result was
a VARCHAR
.
The result type of the
GROUP_CONCAT()
function is now
VARCHAR
only if the value of the
group_concat_max_len
system
variable is less than or equal to 512. Otherwise, this function
returns a BLOB
.
(Bug#14169)
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 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)
libmysqlclient
now uses versioned symbols
with GNU ld.
(Bug#3074)
The client API now attempts to reconnect using TCP/IP if the
reconnect
flag is set, as is the case with
sockets.
(Bug#2845)
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;
we expect to fix this issue in a future release.
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 4.4.9, “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.
Bugs fixed:
MySQL 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)
MySQL Cluster:
Following multiple forced shutdowns and restarts of data nodes,
DROP DATABASE
could fail.
(Bug#17325)
MySQL Cluster:
The REDO
log would become corrupted (and thus
unreadable) in some circumstances, due to a failure in the query
handler.
(Bug#17295)
MySQL 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)
MySQL 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)
MySQL Cluster:
The error message returned by perror
--ndb
was prefixed with
OS error code instead of NDB
error code.
(Bug#17235)
MySQL Cluster:
In some cases, LOAD
DATA INFILE
did not load all data into
NDB
tables.
(Bug#17081)
MySQL Cluster:
ndb_delete_all ran out of memory when
processing tables containing BLOB
columns.
(Bug#16693)
MySQL Cluster:
A BIT
column whose offset and
length totaled 32 caused the cluster to crash.
(Bug#16125)
MySQL Cluster:
UNIQUE
keys in Cluster tables were limited to
225 bytes in length.
(Bug#15918)
MySQL Cluster:
The ndb_autodiscover
test failed sporadically
due to a node not being permitted to connect to the cluster.
(Bug#15619)
MySQL Cluster:
NDB
returned an incorrect
Can't find file error for OS error 24;
this has been changed to Too many open
files.
(Bug#15020)
MySQL Cluster:
No error message was generated for setting
NoOfFragmentLogFiles
too low.
(Bug#13966)
MySQL Cluster:
No error message was generated for setting
MaxNoOfAttributes
too low.
(Bug#13965)
MySQL Cluster: When running more than one management process in a cluster:
ndb_mgm -c
host
:port
-e "node_id
STOP"
stopped a management process running only on the same
system where the command was issued.
ndb_mgm -e "SHUTDOWN" failed to shut down any management processes at all.
MySQL Cluster:
ndb_mgm -c
host
:port
-e "node_id
STOP" would
stop a management process running only on the same system on
which the command was issued.
MySQL Cluster: ndb_mgm -e "SHUTDOWN" failed to shut down any management processes at all.
Replication:
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)
Replication:
The --replicate-do
and
--replicate-ignore
options were not being
enforced on multiple-table statements.
(Bug#16487, Bug#15699)
Replication:
Previously, a stored function invocation was written to the
binary log as DO
if the
invocation changes data and occurs within a nonlogged 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
()
Replication:
BIT
fields were not properly
handled when using row-based replication.
(Bug#13418)
Cluster API: Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incomplete error handling for the failed node. (Bug#15908)
type_decimal
failed with the prepared
statement protocol.
(Bug#17826)
The MySQL server could crash with out of memory errors when
performing aggregate functions on a
DECIMAL
column.
(Bug#17602)
Using DROP FUNCTION IF EXISTS
to drop a
user-defined function caused a server crash if the server was
running with the
func_name
--skip-grant-tables
option.
(Bug#17595)
Data truncations on non-UNIQUE
indexes could
crash InnoDB
when using multi-byte character
sets.
(Bug#17530)
A natural join between INFORMATION_SCHEMA
tables failed.
(Bug#17523)
A stored procedure failed to return data the first time it was called per connection. (Bug#17476)
For certain MERGE
tables, the optimizer
wrongly assumed that using
index_merge/intersection
was too expensive.
(Bug#17314)
The parser allowed CREATE AGGREGATE FUNCTION
for creating stored functions, even though
AGGREGATE
does not apply. (It is used only
for CREATE FUNCTION
only when
creating user-defined functions.)
(Bug#16896)
Cursors in stored routines could cause a server crash. (Bug#16887)
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)
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)
A RETURN
statement within a
trigger caused a server crash.
RETURN
now is disallowed within
triggers. To exit immediately, use
LEAVE
.
(Bug#16829)
For a MySQL 5.0 server, using MySQL 4.1 tables in queries with a
GROUP BY
clause could result in buffer
overrun or a server crash.
(Bug#16752)
An INSERT
statement in a stored
procedure corrupted the binary log.
(Bug#16621)
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)
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)
A race condition could occur when dropping the adaptive hash
index for a B-tree page in InnoDB
.
(Bug#16582)
When evaluation of the test in a
CASE
failed in a stored procedure that contained a
CONTINUE
handler, execution resumed at the
beginning of the CASE statement instead of at the end.
(Bug#16568)
Clients compiled from source with the
--without-readline
did not save command history
from session to session.
(Bug#16557)
The DECIMAL
data type was not
being handled correctly with prepared statements.
(Bug#16511)
Instance Manager searched wrong location for password file on some platforms. (Bug#16499)
UPDATE
statement crashed
multi-byte character set FULLTEXT
index if
update value was almost identical to initial value only
differing in some spaces being changed to .
(Bug#16489)
Certain nested LEFT JOIN
operations were not
properly optimized.
(Bug#16393)
Dropping InnoDB
constraints named
could crash the server.
(Bug#16387)tbl_name
_ibfk_0
SELECT
with GROUP
BY
on a view could cause a server crash.
(Bug#16382)
An invalid stored routine could not be dropped. (Bug#16303)
InnoDB
: After upgrading an
InnoDB
table having a VARCHAR
BINARY
column created in MySQL 4.0 to MySQL 5.0,
update operations on the table would cause the server to crash.
(Bug#16298)
Parallel builds occasionally failed on Solaris. (Bug#16282)
A call to the IF()
function using
decimal arguments could return incorrect results.
(Bug#16272)
MySQL server dropped client connection for certain
SELECT
statements against views
defined that used MERGE
algorithm.
(Bug#16260)
InnoDB
used full explicit table locks in
trigger processing.
(Bug#16229)
Using GROUP BY
on column used in
WHERE
clause could cause empty set to be
returned.
(Bug#16203)
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug#16175)
The FORCE INDEX
keyword in a query would
prevent an index merge from being used where an index merge
would normally be chosen by the optimizer.
(Bug#16166)
Setting InnoDB
path settings to an empty
string caused InnoDB
storage engine to crash
upon server startup.
(Bug#16157)
The mysql_stmt_sqlstate()
C API
function incorrectly returned an empty string rather than
'00000'
when no error occurred.
(Bug#16143)
MIN()
and
MAX()
operations were not
optimized for views.
(Bug#16016)
Performing a RENAME TABLE
on an
InnoDB
table when the server was started with
the --innodb_file_per_table
option and the data directory was a symlink caused a server
crash.
(Bug#15991)
Executing a SHOW CREATE VIEW
query of an invalid view caused the
mysql_next_result()
function of
libMySQL.dll
to hang.
(Bug#15943)
Test suite sp
test left behind tables when
the test failed that could cause future tests to fail.
(Bug#15866)
STR_TO_DATE(1,NULL)
caused a
server crash.
(Bug#15828, CVE-2006-3081)
CAST(... AS TIME)
operations
returned different results when using versus not using
prepared-statement protocol.
(Bug#15805)
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 contents of fill_help_tables.sql
could
not be loaded in strict SQL mode.
(Bug#15760)
fill_help_tables.sql
was not included in
binary distributions for several platforms.
(Bug#15759)
Certain
LEAVE
statements in stored procedures were not properly optimized.
(Bug#15737)
The mysql_real_connect()
C API
function incorrectly reset the
MYSQL_OPT_RECONNECT
option to its default
value.
(Bug#15719)
Created a user function with an empty string (that is,
CREATE FUNCTION ''()
), was accepted by the
server. Following this, calling SHOW
FUNCTION STATUS
would cause the server to crash.
(Bug#15658)
Trying to compile the server on Windows generated a stack
overflow warning due to a recursive definition of the internal
Field_date::store()
method.
(Bug#15634)
In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug#15633)
Certain permission management statements could create a
NULL
host name for a user, resulting in a
server crash.
(Bug#15598)
Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug#15588)
The COALESCE()
function truncated
data in a TINYTEXT
column.
(Bug#15581)
Binary distributions for Solaris contained files with group
ownership set to the nonexisting wheel
group.
Now the bin
group is used.
(Bug#15562)
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)
A SELECT
of a stored function
that references the INFORMATION_SCHEMA
could
crash the server.
(Bug#15533)
Characters in the gb2312
and
euckr
character sets which did not have
Unicode mappings were truncated.
(Bug#15377)
Certain subqueries where the inner query was the result of a aggregate function would return different results with MySQL 5.0 than with MySQL 4.1.
Subselects could also return wrong results when the query cache and grouping were involved. (Bug#15347)
Performing an ORDER BY
on an indexed
ENUM
column returned error.
(Bug#15308)
A SELECT
query which contained a
GROUP_CONCAT()
and an
ORDER BY
clause against the
INFORMATION_SCHEMA
resulted in an empty
result set.
(Bug#15307)
The NOT FOUND
condition handler for stored
procedures did not distinguish between a NOT
FOUND
condition and an exception or warning.
(Bug#15231)
The SELECT
privilege was required
for triggers that performed no selects.
(Bug#15196)
An attempt to open a table that requires a disabled storage engine could cause a server crash. (Bug#15185)
The UPDATE
privilege was required
for triggers that performed no updates.
(Bug#15166)
Tarball install package was missing a proper
fill_help_tables.sql
file.
(Bug#15151)
Setting innodb_log_file_size
to
a value greater than 4G crashed the server.
(Bug#15108)
When multiple handlers are created for the same MySQL error number within nested blocks, the outermost handler took precedence. (Bug#15011)
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)
Stored routines that contained only a single statement were not
written properly to the dumpfile when using
mysqldump
.
(Bug#14857)
Killing a long-running query containing a subquery could cause a server crash. (Bug#14851)
GRANT
statements specifying
schema names that included underscore characters (that is,
my_schema
) did not match if the underscore
was escaped in the GRANT
statement (that is, GRANT ALL ON `my\_schema`
...
).
(Bug#14834)
Generating an AUTO_INCREMENT
value through a
FEDERATED
table did not set the value
returned by LAST_INSERT_ID()
.
(Bug#14768)
SUBSTRING_INDEX()
could yield
inconsistent results when applied with the same arguments to
consecutive rows in a query.
(Bug#14676)
Running out of diskspace in the location specified by the
tmpdir
option resulted in
incorrect error message.
(Bug#14634)
InnoDB
: Comparison of indexed
VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin
columns using LIKE
could fail.
(Bug#14583)
A stored procedure with an undefined variable and an exception handler would hang the client when called. (Bug#14498)
A FULLTEXT
query in a prepared statement
could result in unexpected behavior.
(Bug#14496)
Using an aggregate function as the argument for a
HAVING
clause resulted in the aggregate
function always returning FALSE
.
(Bug#14274)
The use of LOAD INDEX
within a
stored routine was permitted and caused the server to crash.
LOAD INDEX
statements within
stored routines are not supported, and
now yield an error if attempted. This behavior is intended.
A COMMIT
statement followed by a
ALTER TABLE
statement on a BDB
table caused server crash.
(Bug#14212)
The mysql_stmt_store_result()
C
API function could not be used for a prepared statement if a
cursor had been opened for the statement.
(Bug#14013)
SET sql_mode =
,
where N
N
> 31, did not work
properly.
(Bug#13897)
Attempts to create FULLTEXT
indexes on
VARCHAR
columns larger than 1000
bytes resulted in error.
(Bug#13835)
The RENAME TABLE
statement did
not move triggers to the new table.
(Bug#13525)
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)
Instance Manager erroneously accepted a list of instance
identifiers for the START INSTANCE
and
STOP INSTANCE
commands (should accept only a
single identifier).
(Bug#12813)
A prepared statement created from a SELECT ...
LIKE
query (such as PREPARE stmt1 FROM
'SELECT col_1 FROM tedd_test WHERE col_1 LIKE ?';
)
would begin to produce erratic results after being executed
repeatedly numerous (thousands) of times.
(Bug#12734)
Multi-byte path names for LOAD
DATA
and
SELECT ... INTO
OUTFILE
caused errors. Added the
character_set_filesystem
system
variable, which controls the interpretation of string literals
that refer to file names.
(Bug#12448)
Temporary table aliasing did not work inside stored functions. (Bug#12198)
The embedded server did not allow binding of columns to the
MYSQL_TYPE_VAR_STRING
data type in prepared
statements.
(Bug#12070)
When MyODBC or any other client called
my_init()
/my_end()
several times, it caused corruption of charset data stored in
once_mem_pool
.
(Bug#11892)
Setting the
myisam_repair_threads
system
variable to a value larger than 1 could cause corruption of
large MyISAM
tables.
(Bug#11527)
The mysqlbinlog utility did not output
DELIMITER
statements, causing syntax errors
for stored routine creation statements.
(Bug#11312)
The embedded server failed various tests in the automated test suite. (Bug#10801, Bug#10925, Bug#15433, Bug#9633, Bug#10926, Bug#9631, Bug#10930, Bug#10911, Bug#9630, Bug#10924)
A large BIGINT
value specified in
a WHERE
clause could be treated differently
depending on whether it is specified as a quoted string. (For
example, WHERE bigint_col =
17666000000000000000
versus WHERE bigint_col
= '17666000000000000000'
).
(Bug#9088)
CHECKSUM TABLE
returned different
values for MyISAM
tables depending on whether
the QUICK
or EXTENDED
option was used.
(Bug#8841)
Using the TRUNCATE()
function
with a negative number for the second argument on a
BIGINT
column returned incorrect
results.
(Bug#8461)
Issuing GRANT
EXECUTE
on a procedure would display any warnings
related to the creation of the procedure.
(Bug#7787)
Repeated invocation of my_init()
and
my_end()
caused corruption of character set
data and connection failure.
(Bug#6536)
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)
User Comments
Add your own comment.