This is a bugfix release for the current MySQL Community Server production release family. It replaces MySQL 5.0.45.
Functionality added or changed:
Incompatible Change:
The parser accepted statements that contained /* ...
*/
that were not properly closed with
*/
, such as SELECT 1 /* +
2
. Statements that contain unclosed
/*
-comments now are rejected with a syntax
error.
This fix has the potential to cause incompatibilities. Because
of Bug#26302, which caused the trailing */
to
be truncated from comments in views, stored routines, triggers,
and events, it is possible that objects of those types may have
been stored with definitions that now will be rejected as
syntactically invalid. Such objects should be dropped and
re-created so that their definitions do not contain truncated
comments. If a stored object definition contains only a single
statement (does not use a
BEGIN ...
END
block) and contains a comment within the
statement, the comment should be moved to follow the statement
or the object should be rewritten to use a
BEGIN ...
END
block. For example, this statement:
CREATE PROCEDURE p() SELECT 1 /* my comment */ ;
Can be rewritten in either of these ways:
CREATE PROCEDURE p() SELECT 1; /* my comment */ CREATE PROCEDURE p() BEGIN SELECT 1 /* my comment */ ; END;
MySQL Cluster:
Mapping of NDB
error codes to MySQL
storage engine error codes has been improved.
(Bug#28423)
MySQL Cluster:
auto_increment_increment
and
auto_increment_offset
are now
supported for NDB
tables.
(Bug#26342)
MySQL Cluster: The output from the cluster management client showing the progress of data node starts has been improved. (Bug#23354)
Replication:
The sql_mode
,
foreign_key_checks
,
unique_checks
, character
set/collations, and
sql_auto_is_null
session
variables are written to the binary log and honored during
replication. See Section 5.2.3, “The Binary Log”.
Server parser performance was improved for expression parsing by lowering the number of state transitions and reductions needed. (Bug#30625)
Server parser performance was improved for boolean expressions. (Bug#30237)
If a MyISAM
table is created with no
DATA DIRECTORY
option, the
.MYD
file is created in the database
directory. By default, if MyISAM
finds an
existing .MYD
file in this case, it
overwrites it. The same applies to .MYI
files for tables created with no INDEX
DIRECTORY
option. To suppress this behavior, start the
server with the new --keep_files_on_create
option, in which case MyISAM
will not
overwrite existing files and returns an error instead.
(Bug#29325)
MySQL source distributions are now available in Zip format. (Bug#27742)
If a MERGE
table cannot be opened or used
because of a problem with an underlying table,
CHECK TABLE
now displays
information about which table caused the problem.
(Bug#26976)
The EXAMPLE
storage engine is now enabled by
default.
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)
Incompatible Change:
The file mysqld.exe
was mistakenly included
in binary distributions between MySQL 5.0.42 and 5.0.48. You
should use mysqld-nt.exe
.
(Bug#32197)
Incompatible Change:
Multiple-table DELETE
statements
containing ambiguous aliases could have unintended side effects
such as deleting rows from the wrong table. Example:
DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
This bug fix enables alias declarations to be declared only in
the table_references
part. Elsewhere
in the statement, alias references are allowed but not alias
declarations.
(Bug#30234)
See also Bug#27525.
Incompatible Change:
Failure to consider collation when comparing space characters
could result in incorrect index entry order, leading to
incorrect comparisons, inability to find some index values,
misordered index entries, misordered ORDER BY
results, or tables that CHECK
TABLE
reports as having corrupt indexes.
As a result of this bug fix, indexes must be rebuilt for columns
that use any of these character sets:
eucjpms
, euc_kr
,
gb2312
, latin7
,
macce
, ujis
. See
Section 2.18.3, “Checking Whether Tables or Indexes Must Be Rebuilt”.
(Bug#29461)
MySQL Cluster: Packaging:
Some commercial MySQL Cluster RPM packages included support for
the InnoDB
storage engine.
(InnoDB
is not part of the standard
commercial MySQL Cluster offering.)
(Bug#31989)
MySQL Cluster: Attempting to restore a backup made on a cluster host using one endian to a machine using the other endian could cause the cluster to fail. (Bug#29674)
MySQL Cluster: When restarting a data node, queries could hang during that node's start phase 5, and continue only after the node had entered phase 6. (Bug#29364)
MySQL Cluster: Replica redo logs were inconsistently handled during a system restart. (Bug#29354)
MySQL Cluster:
Reads on BLOB
columns were not
locked when they needed to be to guarantee consistency.
(Bug#29102)
See also Bug#31482.
MySQL Cluster:
A query using joins between several large tables and requiring
unique index lookups failed to complete, eventually returning
Uknown Error after a very long period of
time. This occurred due to inadequate handling of instances
where the Transaction Coordinator ran out of
TransactionBufferMemory
, when the cluster
should have returned NDB error code 4012 (Request
ndbd time-out).
(Bug#28804)
MySQL Cluster:
The description of the --print
option provided
in the output from ndb_restore --help
was incorrect.
(Bug#27683)
MySQL Cluster:
The management client's response to START BACKUP
WAIT COMPLETED
did not include the backup ID.
(Bug#27640)
MySQL Cluster:
An invalid subselect on an NDB
table could cause mysqld to crash.
(Bug#27494)
MySQL Cluster:
An attempt to perform a SELECT ... FROM
INFORMATION_SCHEMA.TABLES
whose result included
information about NDB
tables for
which the user had no privileges crashed the MySQL Server on
which the query was performed.
(Bug#26793)
MySQL Cluster:
Warnings and errors generated by ndb_config
--config-file=
were sent to file
stdout
, rather than to
stderr
.
(Bug#25941)
MySQL Cluster: Large file support did not work in AIX server binaries. (Bug#10776)
Replication:
The thread ID was not reset properly after execution of
mysql_change_user()
, which could
cause replication failure when replicating temporary tables.
(Bug#29734)
Replication: Operations that used the time zone replicated the time zone only for successful operations, but did not replicate the time zone for errors that need to know it. (Bug#29536)
Replication:
INSERT DELAYED
statements on a
master server are replicated as non-DELAYED
inserts on slaves (which is normal, to preserve serialization),
but the inserts on the slave did not use concurrent inserts. Now
INSERT DELAYED
on a slave is
converted to a concurrent insert when possible, and to a normal
insert otherwise.
(Bug#29152)
Replication:
DROP USER
statements that named
multiple users, only some of which could be dropped, were
replicated incorrectly.
(Bug#29030)
Replication:
An error that happened inside
INSERT
,
UPDATE
, or
DELETE
statements performed from
within a stored function or trigger could cause inconsistency
between master and slave servers.
(Bug#27417)
Replication: Slave servers could incorrectly interpret an out-of-memory error from the master and reconnect using the wrong binary log position. (Bug#24192)
When a TIMESTAMP
with a nonzero
time part was converted to a DATE
value, no warning was generated. This caused index lookups to
assume that this is a valid conversion and was returning rows
that match a comparison between a
TIMESTAMP
value and a
DATE
keypart. Now a warning is
generated so that TIMESTAMP
with
a nonzero time part will not match
DATE
values.
(Bug#31221)
A server crash could occur when a
non-DETERMINISTIC
stored function was used in
a GROUP BY
clause.
(Bug#31035)
For an InnoDB
table if a
SELECT
was ordered by the primary
key and also had a WHERE field = value
clause
on a different field that was indexed, a DESC
order instruction would be ignored.
(Bug#31001)
A failed HANDLER ... READ
operation could
leave the table in a locked state.
(Bug#30632)
The optimization that uses a unique index to remove
GROUP BY
did not ensure that the index was
actually used, thus violating the ORDER BY
that is implied by GROUP BY
.
(Bug#30596)
SHOW STATUS LIKE 'Ssl_cipher_list'
from a
MySQL client connected via SSL returned an empty string rather
than a list of available ciphers.
(Bug#30593)
Memory corruption occurred for some queries with a top-level
OR
operation in the WHERE
condition if they contained equality predicates and other
sargable predicates in disjunctive parts of the condition.
(Bug#30396)
Issuing a DELETE
statement having
both an ORDER BY
clause and a
LIMIT
clause could cause
mysqld to crash.
(Bug#30385)
The Last_query_cost
status
variable value can be computed accurately only for simple
“flat” queries, not complex queries such as those
with subqueries or UNION
.
However, the value was not consistently being set to 0 for
complex queries.
(Bug#30377)
Queries that had a GROUP BY
clause and
selected COUNT(DISTINCT
returned
incorrect results.
(Bug#30324)bit_column
)
The server created temporary tables for filesort operations in
the working directory, not in the directory specified by the
tmpdir
system variable.
(Bug#30287)
The query cache does not support retrieval of statements for which column level access control applies, but the server was still caching such statements, thus wasting memory. (Bug#30269)
Using DISTINCT
or GROUP BY
on a BIT
column in a
SELECT
statement caused the
column to be cast internally as an integer, with incorrect
results being returned from the query.
(Bug#30245)
GROUP BY
on
BIT
columns produced incorrect
results.
(Bug#30219)
Using KILL QUERY
or KILL
CONNECTION
to kill a
SELECT
statement caused a server
crash if the query cache was enabled.
(Bug#30201)
Prepared statements containing
CONNECTION_ID()
could be written
improperly to the binary log.
(Bug#30200)
When a thread executing a DROP
TABLE
statement was killed, the table name locks that
had been acquired were not released.
(Bug#30193)
Short-format mysql commands embedded within
/*! ... */
comments were parsed incorrectly
by mysql, which discarded the rest of the
comment including the terminating */
characters. The result was a malformed (unclosed) comment. Now
mysql does not discard the
*/
characters.
(Bug#30164)
When mysqldump wrote
DROP DATABASE
statements within
version-specific comments, it included the terminating semicolon
in the wrong place, causing following statements to fail when
the dump file was reloaded.
(Bug#30126)
Use of local variables with non-ASCII names in stored procedures crashed the server. (Bug#30120)
On Windows, client libraries lacked symbols required for linking. (Bug#30118)
--myisam-recover=''
(empty option value) did
not disable MyISAM
recovery.
(Bug#30088)
The IS_UPDATABLE
column in the
INFORMATION_SCHEMA.VIEWS
table was
not always set correctly.
(Bug#30020)
Statements within stored procedures ignored the value of the
low_priority_updates
system
variable.
(Bug#29963)
See also Bug#26162.
For MyISAM
tables on Windows,
INSERT
,
DELETE
, or
UPDATE
followed by
ALTER TABLE
within
LOCK TABLES
could cause table
corruption.
(Bug#29957)
With auto-reconnect enabled, row fetching for a prepared statement could crash after reconnect occurred because loss of the statement handler was not accounted for. (Bug#29948)
LOCK TABLES
did not pre-lock
tables used in triggers of the locked tables. Unexpected locking
behavior and statement failures similar to failed:
1100: Table 'xx
' was not locked with
LOCK TABLES could result.
(Bug#29929)
INSERT ... VALUES(CONNECTION_ID(), ...)
statements were written to the binary log in such a way that
they could not be properly restored.
(Bug#29928)
Adding DISTINCT
could cause incorrect rows to
appear in a query result.
(Bug#29911)
Using the DATE()
function in a
WHERE
clause did not return any records after
encountering NULL
. However, using
TRIM()
or
CAST()
produced the correct
results.
(Bug#29898)
Very long prepared statements in stored procedures could cause a server crash. (Bug#29856)
If query execution involved a temporary table,
GROUP_CONCAT()
could return a
result with an incorrect character set.
(Bug#29850)
If one thread was performing concurrent inserts, other threads reading from the same table using equality key searches could see the index values for new rows before the data values had been written, leading to reports of table corruption. (Bug#29838)
Repeatedly accessing a view in a stored procedure (for example, in a loop) caused a small amount of memory to be allocated per access. Although this memory is deallocated on disconnect, it could be a problem for a long running stored procedures that make repeated access of views. (Bug#29834)
mysqldump produced output that incorrectly
discarded the
NO_AUTO_VALUE_ON_ZERO
value of
the sql_mode
variable after
dumping triggers.
(Bug#29788)
An assertion failure occurred within yaSSL for very long keys. (Bug#29784)
For MEMORY
tables, the
index_merge
union access
method could return incorrect results.
(Bug#29740)
Comparison of TIME
values using
the BETWEEN
operator led to string
comparison, producing incorrect results in some cases. Now the
values are compared as integers.
(Bug#29739)
For a table with a DATE
column
date_col
such that selecting rows
with WHERE
yielded
a nonempty result, adding date_col
=
'date_val
00:00:00'GROUP BY
caused the result
to be empty.
(Bug#29729)date_col
In some cases, INSERT INTO ... SELECT ... GROUP
BY
could insert rows even if the
SELECT
by itself produced an
empty result.
(Bug#29717)
For the embedded server, the
mysql_stmt_store_result()
C API
function caused a memory leak for empty result sets.
(Bug#29687)
EXPLAIN
produced
Impossible where
for statements of the form
SELECT ... FROM t WHERE c=0
, where
c
was an ENUM
column defined as a primary key.
(Bug#29661)
On Windows, ALTER TABLE
hung if
records were locked in share mode by a long-running transaction.
(Bug#29644)
A left join between two views could produce incorrect results. (Bug#29604)
Certain statements with unions, subqueries, and joins could result in huge memory consumption. (Bug#29582)
Clients using SSL could hang the server. (Bug#29579)
A slave running with
--log-slave-updates
would fail to
write INSERT DELAY IGNORE
statements to its
binary log, resulting in different binary log contents on the
master and slave.
(Bug#29571)
An incorrect result was returned when comparing string values
that were converted to TIME
values with CAST()
.
(Bug#29555)
gcov coverage-testing information was not written if the server crashed. (Bug#29543)
In the ascii
character set, conversion of DEL
(0x7F
) to Unicode incorrectly resulted in
QUESTION MARK (0x3F
) rather than DEL.
(Bug#29499)
A field packet with NULL
fields caused a
libmysqlclient
crash.
(Bug#29494)
When using a combination of HANDLER... READ
and DELETE
on a table, MySQL
continued to open new copies of the table every time, leading to
an exhaustion of file descriptors.
(Bug#29474)
This regression was introduced by Bug#21587.
On Windows, the mysql client died if the user entered a statement and Return after entering Control-C. (Bug#29469)
Corrupt data resulted from use of SELECT ... INTO
OUTFILE '
, where
file_name
' FIELDS ENCLOSED
BY 'c
'c
is a digit or minus sign, followed
by LOAD DATA INFILE
'
.
(Bug#29442)file_name
' FIELDS ENCLOSED BY
'c
'
Killing an INSERT DELAYED
thread
caused a server crash.
(Bug#29431)
Use of SHOW BINLOG EVENTS
for a
nonexistent log file followed by PURGE
BINARY LOGS
caused a server crash.
(Bug#29420)
Assertion failure could occur for grouping queries that employed
DECIMAL
user variables with
assignments to them.
(Bug#29417)
For CAST(
,
the limits of 65 and 30 on the precision
(expr
AS
DECIMAL(M
,D
))M
) and scale
(D
) were not enforced.
(Bug#29415)
If a view used a function in its
SELECT
statement, the columns
from the view were not inserted into the
INFORMATION_SCHEMA.COLUMNS
table.
(Bug#29408)
Results for a select query that aliases the column names against
a view could duplicate one column while omitting another. This
bug could occur for a query over a multiple-table view that
includes an ORDER BY
clause in its
definition.
(Bug#29392)
mysqldump created a stray file when a given a too-long file name argument. (Bug#29361)
The special “zero”
ENUM
value was coerced to the
normal empty string ENUM
value
during a column-to-column copy. This affected CREATE
... SELECT
statements and
SELECT
statements with aggregate
functions on ENUM
columns in the
GROUP BY
clause.
(Bug#29360)
Optimization of queries with DETERMINISTIC
stored functions in the WHERE
clause was
ineffective: A sequential scan was always used.
(Bug#29338)
MyISAM
corruption could occur with the
cp932_japanese_ci
collation for the
cp932
character set due to incorrect
comparison for trailing space.
(Bug#29333)
The mysql_list_fields()
C API
function incorrectly set
MYSQL_FIELD::decimals
for some view columns.
(Bug#29306)
FULLTEXT
indexes could be corrupted by
certain gbk
characters.
(Bug#29299)
SELECT ... INTO
OUTFILE
followed by LOAD
DATA
could result in garbled characters when the
FIELDS ENCLOSED BY
clause named a delimiter
of '0'
, 'b'
,
'n'
, 'r'
,
't'
, 'N'
, or
'Z'
due to an interaction of character
encoding and doubling for data values containing the enclosed-by
character.
(Bug#29294)
Sort order of the collation wasn't used when comparing trailing
spaces. This could lead to incorrect comparison results,
incorrectly created indexes, or incorrect result set order for
queries that include an ORDER BY
clause.
(Bug#29261)
If an ENUM
column contained
''
as one of its members (represented with
numeric value greater than 0), and the column contained error
values (represented as 0 and displayed as
''
), using ALTER
TABLE
to modify the column definition caused the 0
values to be given the numeric value of the nonzero
''
member.
(Bug#29251)
Calling mysql_options()
after
mysql_real_connect()
could cause
clients to crash.
(Bug#29247)
CHECK TABLE
for
ARCHIVE
tables could falsely report table
corruption or cause a server crash.
(Bug#29207)
Mixing binary and utf8
columns in a union
caused field lengths to be calculated incorrectly, resulting in
truncation.
(Bug#29205)
AsText()
could fail with a buffer overrun.
(Bug#29166)
InnoDB
refused to start on some versions of
FreeBSD with LinuxThreads. This is fixed by enabling file
locking on FreeBSD.
(Bug#29155)
LOCK TABLES
was not atomic when
more than one InnoDB
tables were locked.
(Bug#29154)
A network structure was initialized incorrectly, leading to embedded server crashes. (Bug#29117)
An assertion failure occurred if a query contained a conjunctive
predicate of the form
in
the view_column
= constantWHERE
clause and the GROUP
BY
clause contained a reference to a different view
column. The fix also enables application of an optimization that
was being skipped if a query contained a conjunctive predicate
of the form
in the view_column
=
constantWHERE
clause and
the GROUP BY
clause contained a reference to
the same view column.
(Bug#29104)
A maximum of 4TB InnoDB
free space was
reported by SHOW TABLE STATUS,
which is
incorrect on systems with more than 4TB space.
(Bug#29097)
If an INSERT INTO
... SELECT
statement inserted into the same table that
the SELECT
retrieved from, and
the SELECT
included
ORDER BY
and LIMIT
clauses, different data was inserted than the data produced by
the SELECT
executed by itself.
(Bug#29095)
Queries that performed a lookup into a
BINARY
index containing key
values ending with spaces caused an assertion failure for debug
builds and incorrect results for nondebug builds.
(Bug#29087)
The semantics of BIGINT
depended
on platform-specific characteristics.
(Bug#29079)
A byte-order issue in writing a spatial index to disk caused bad index files on some systems. (Bug#29070)
If one of the queries in a UNION
used the SQL_CACHE
option and another query
in the UNION
contained a
nondeterministic function, the result was still cached. For
example, this query was incorrectly cached:
SELECT NOW() FROM t1 UNION SELECT SQL_CACHE 1 FROM t1;
Creation of a legal stored procedure could fail if no default database had been selected. (Bug#29050)
REPLACE
,
INSERT IGNORE
,
and UPDATE IGNORE
did not work for
FEDERATED
tables.
(Bug#29019)
Inserting into InnoDB
tables and executing
RESET MASTER
in multiple threads
cause assertion failure in debug server binaries.
(Bug#28983)
For a ucs2
column,
GROUP_CONCAT()
did not convert
separators to the result character set before inserting them,
producing a result containing a mixture of two different
character sets.
(Bug#28925)
Queries using UDFs or stored functions were cached. (Bug#28921)
For a join with GROUP BY
and/or
ORDER BY
and a view reference in the
FROM
list, the query metadata erroneously
showed empty table aliases and database names for the view
columns.
(Bug#28898)
Coercion of ASCII values to character sets that are a superset of ASCII sometimes was not done, resulting in illegal mix of collations errors. These cases now are resolved using repertoire, a new string expression attribute (see Section 9.1.8, “String Repertoire”). (Bug#28875)
Non-utf8
characters could get mangled when
stored in CSV
tables.
(Bug#28862)
ALTER VIEW
is not supported as a
prepared statement but was not being rejected.
ALTER VIEW
is now prohibited as a
prepared statement or when called within stored routines.
(Bug#28846)
In strict SQL mode, errors silently stopped the SQL thread even
for errors named using the --slave-skip-errors
option.
(Bug#28839)
Fast ALTER TABLE
(that works
without rebuilding the table) acquired duplicate locks in the
storage engine. In MyISAM
, if
ALTER TABLE
was issued under
LOCK
TABLE
, it caused all data inserted after
LOCK
TABLE
to disappear.
(Bug#28838)
Killing an SSL connection on platforms where MySQL is compiled
with -DSIGNAL_WITH_VIO_CLOSE
(Windows, Mac OS
X, and some others) could crash the server.
(Bug#28812)
Runtime changes to the
log_queries_not_using_indexes
system variable were ignored.
(Bug#28808)
Tables using the InnoDB
storage engine
incremented AUTO_INCREMENT
values incorrectly
with ON DUPLICATE KEY UPDATE
.
(Bug#28781)
Selecting a column not present in the selected-from table caused
an extra error to be produced by SHOW
ERRORS
.
(Bug#28677)
For a statement of the form CREATE t1 SELECT
, the
server created the column using the
integer_constant
DECIMAL
data type for large
negative values that are within the range of
BIGINT
.
(Bug#28625)
For InnoDB
tables, MySQL unnecessarily sorted
records in certain cases when the records were retrieved by
InnoDB
in the proper order already.
(Bug#28591)
A SELECT
in one connection could
be blocked by
INSERT ...
ON DUPLICATE KEY UPDATE
in another connection even
when low_priority_updates
is
set.
(Bug#28587)
mysql_install_db could fail to find script files that it needs. (Bug#28585)
When one thread attempts to lock two (or more) tables and
another thread executes a statement that aborts these locks
(such as REPAIR TABLE
,
OPTIMIZE TABLE
, or
CHECK TABLE
), the thread might
get a table object with an incorrect lock type in the table
cache. The result is table corruption or a server crash.
(Bug#28574)
mysql_upgrade could run binaries dynamically linked against incorrect versions of shared libraries. (Bug#28560)
If a stored procedure was created and invoked prior to selecting
a default database with USE
, a
No database selected error occurred.
(Bug#28551)
On Mac OS X, shared-library installation path names were incorrect. (Bug#28544)
Using the
--skip-add-drop-table
option with mysqldump generated
incorrect SQL if the database included any views. The recreation
of views requires the creation and removal of temporary tables.
This option suppressed the removal of those temporary tables.
The same applied to --compact
since this option also invokes
--skip-add-drop-table
.
(Bug#28524)
mysqlbinlog --hexdump generated incorrect
output due to omission of the
“#
” comment character for some
comment lines.
(Bug#28293)
A race condition in the interaction between
MyISAM
and the query cache code caused the
query cache not to invalidate itself for concurrently inserted
data.
(Bug#28249)
Indexing column prefixes in InnoDB
tables
could cause table corruption.
(Bug#28138)
Index creation could fail due to truncation of key values to the maximum key length rather than to a mulitiple of the maximum character length. (Bug#28125)
The LOCATE()
function returned
NULL
if any of its arguments evaluated to
NULL
. Likewise, the predicate,
LOCATE(
, erroneously evaluated to
str
,NULL)
IS NULLFALSE
.
(Bug#27932)
On Windows, symbols for yaSSL and taocrypt were missing from
mysqlclient.lib
, resulting in unresolved
symbol errors for clients linked against that library.
(Bug#27861)
SHOW COLUMNS
returned
NULL
instead of the empty string for the
Default
value of columns that had no default
specified.
(Bug#27747)
The modification of a table by a partially completed multi-column update was not recorded in the binlog, rather than being marked by an event and a corresponding error code. (Bug#27716)
With recent versions of DBD::mysql, mysqlhotcopy generated table names that were doubly qualified with the database name. (Bug#27694)
The anonymous accounts were not being created during MySQL installation. (Bug#27692)
Some SHOW
statements and
INFORMATION_SCHEMA
queries could expose
information not allowed by the user's access privileges.
(Bug#27629)
A stack overrun could occur when storing
DATETIME
values using repeated
prepared statements.
(Bug#27592)
Dropping a user-defined function could cause a server crash if the function was still in use by another thread. (Bug#27564)
Some character mappings in the ascii.xml
file were incorrect.
As a result of this bug fix, indexes must be rebuilt for columns
that use the ascii_general_ci
collation for
columns that contain any of these characters:
'`'
, '['
,
'\'
, ']'
,
'~'
. See
Section 2.18.3, “Checking Whether Tables or Indexes Must Be Rebuilt”.
(Bug#27562)
The parser rules for the SHOW
PROFILE
statement were revised to work with older
versions of bison.
(Bug#27433)
Unsafe aliasing in the source caused a client library crash when compiled with gcc 4 at high optimization levels. (Bug#27383)
A SELECT
with more than 31 nested
dependent subqueries returned an incorrect result.
(Bug#27352)
Index-based range reads could fail for comparisons that involved
contraction characters (such as ch
in Czech
or ll
in Spanish).
(Bug#27345)
Aggregations in subqueries that refer to outer query columns were not always correctly referenced to the proper outer query. (Bug#27333)
INSERT INTO ...
SELECT
caused a crash if
innodb_locks_unsafe_for_binlog
was enabled.
(Bug#27294)
Error returns from the time()
system call
were ignored.
(Bug#27198)
Phantom reads could occur under InnoDB
SERIALIZABLE
isolation level.
(Bug#27197)
The SUBSTRING()
function returned
the entire string instead of an empty string when it was called
from a stored procedure and when the length parameter was
specified by a variable with the value
“0
”.
(Bug#27130)
ALTER TABLE ... ENABLE KEYS
could cause
mysqld to crash when executed on a table
containing on a MyISAM
table containing
billions of rows.
(Bug#27029)
FEDERATED
tables had an artificially low
maximum of key length.
(Bug#26909)
Binary content 0x00
in a
BLOB
column sometimes became
0x5C 0x00
following a dump and reload, which
could cause problems with data using multi-byte character sets
such as GBK
(Chinese). This was due to a
problem with SELECT INTO OUTFILE
whereby
LOAD DATA
later incorrectly
interpreted 0x5C
as the second byte of a
multi-byte sequence rather than as the
SOLIDUS
(“\”) character, used by
MySQL as the escape character.
(Bug#26711)
Index creation could corrupt the table definition in the
.frm
file: 1) A table with the maximum
number of key segments and maximum length key name would have a
corrupted .frm
file, due to incorrect
calculation of the total key length. 2)
MyISAM
would reject a table with the maximum
number of keys and the maximum number of key segments in all
keys. (It would allow one less than this total maximum.) Now
MyISAM
accepts a table defined with the
maximum.
(Bug#26642)
After the first read of a TEMPORARY
table,
CHECK TABLE
could report the
table as being corrupt.
(Bug#26325)
If an operation had an InnoDB
table, and two
triggers, AFTER UPDATE
and AFTER
INSERT
, competing for different resources (such as two
distinct MyISAM
tables), the triggers were
unable to execute concurrently. In addition,
INSERT
and
UPDATE
statements for the
InnoDB
table were unable to run concurrently.
(Bug#26141)
ALTER DATABASE
did not require at
least one option.
(Bug#25859)
Using HANDLER
to open a table
having a storage engine not supported by
HANDLER
properly returned an
error, but also improperly prevented the table from being
dropped by other connections.
(Bug#25856)
The index merge union access algorithm could produce incorrect
results with InnoDB
tables. The problem could
also occur for queries that used DISTINCT
.
(Bug#25798)
When using a FEDERATED
table, the value of
LAST_INSERT_ID()
would not
correctly update the C API interface, which would affect the
autogenerated ID returned both through the C API and the MySQL
protocol, affecting Connectors that used the protocol and/or C
API.
(Bug#25714)
The server was blocked from opening other tables while the
FEDERATED
engine was attempting to open a
remote table. Now the server does not check the correctness of a
FEDERATED
table at
CREATE TABLE
time, but waits
until the table actually is accessed.
(Bug#25679)
Under ActiveState Perl, mysql-test-run.pl
could kill itself when attempting to kill other processes.
(Bug#25657)
Several InnoDB
assertion failures were
corrected.
(Bug#25645)
A query with DISTINCT
in the select list to
which the loose-scan optimization for grouping queries was
applied returned an incorrect result set when the query was used
with the SQL_BIG_RESULT
option.
(Bug#25602)
For a multiple-row insert into a FEDERATED
table that refers to a remote transactional table, if the insert
failed for a row due to constraint failure, the remote table
would contain a partial commit (the rows preceding the failed
one) instead of rolling back the statement completely. This
occurred because the rows were treated as individual inserts.
Now FEDERATED
performs bulk-insert handling
such that multiple rows are sent to the remote table in a batch.
This provides a performance improvement and enables the remote
table to perform statement rollback properly should an error
occur. This capability has the following limitations:
The size of the insert cannot exceed the maximum packet size between servers. If the insert exceeds this size, it is broken into multiple packets and the rollback problem can occur.
Bulk-insert handling does not occur for
INSERT
... ON DUPLICATE KEY UPDATE
.
The FEDERATED
storage engine failed silently
for INSERT
... ON DUPLICATE KEY UPDATE
if a duplicate key
violation occurred. FEDERATED
does not
support ON DUPLICATE KEY UPDATE
, so now it
correctly returns an ER_DUP_KEY
error if a duplicate key violation occurs.
(Bug#25511)
For InnoDB
tables, CREATE TABLE a AS
SELECT * FROM A
would fail.
(Bug#25164)
In a stored function or trigger, when InnoDB
detected deadlock, it attempted rollback and displayed an
incorrect error message (Explicit or implicit commit
is not allowed in stored function or trigger). Now
InnoDB
returns an error under these
conditions and does not attempt rollback. Rollback is handled
outside of InnoDB
above the function/trigger
level.
(Bug#24989)
A too-long shared-memory-base-name
value
could cause a buffer overflow and crash the server or clients.
(Bug#24924)
Dropping a temporary InnoDB
table that had
been locked with LOCK TABLES
caused a server crash.
(Bug#24918)
On Windows, executables did not include Vista manifests. (Bug#24732)
See also Bug#22563.
If MySQL/InnoDB
crashed very quickly after
starting up, it would not force a checkpoint. In this case,
InnoDB
would skip crash recovery at next
startup, and the database would become corrupt. Now, if the redo
log scan at InnoDB
startup goes past the last
checkpoint, crash recovery is forced.
(Bug#23710)
The server deducted some bytes from the
key_cache_block_size
option
value and reduced it to the next lower 512 byte boundary. The
resulting block size was not a power of two. Setting the
key_cache_block_size
system
variable to a value that is not a power of two resulted in
MyISAM
table corruption.
(Bug#23068, Bug#28478, Bug#25853)
SHOW INNODB STATUS
caused an
assertion failure under high load.
(Bug#22819)
SHOW BINLOG EVENTS
displayed
incorrect values of End_log_pos
for events
associated with transactional storage engines.
(Bug#22540)
A statement of the form CREATE TABLE IF NOT EXISTS t1
SELECT f1() AS i
failed with a deadlock error if the
stored function f1()
referred to a table with
the same name as the to-be-created table. Now it correctly
produces a message that the table already exists.
(Bug#22427)
Read lock requests that were blocked by a pending write lock request were not allowed to proceed if the statement requesting the write lock was killed. (Bug#21281)
Under heavy load with a large query cache, invalidating part of the cache could cause the server to freeze (that is, to be unable to service other operations until the invalidation was complete). (Bug#21074)
See also Bug#39253.
mysql-stress-test.pl and mysqld_multi.server.sh were missing from some binary distributions. (Bug#21023, Bug#25486)
On Windows, the server used 10MB of memory for each connection thread, resulting in memory exhaustion. Now each thread uses 1MB. (Bug#20815)
Worked around an icc problem with an incorrect machine instruction being generated in the context of software pre-fetching after a subroutine got in-lined. (Upgrading to icc 10.0.026 makes the workaround unnecessary.) (Bug#20803)
InnoDB
produced an unnecessary (and harmless)
warning:
.
(Bug#20090)InnoDB
: Error: trying to
declare trx to enter InnoDB
, but
InnoDB
: it already is declared
Under ActiveState Perl, mysql-test-run.pl
would not run.
(Bug#18415)
The server crashed when the size of an
ARCHIVE
table grew larger than 2GB.
(Bug#15787)
SQL_BIG_RESULT
had no effect for
CREATE TABLE ... SELECT SQL_BIG_RESULT ...
statements.
(Bug#15130)
On 64-bit Windows systems, the Config Wizard failed to complete
the setup because 64-bit Windows does not resolve dynamic
linking of the 64-bit libmysql.dll
to a
32-bit application like the Config Wizard.
(Bug#14649)
mysql_setpermission tried to grant global-only privileges at the database level. (Bug#14618)
Parameters of type DATETIME
or
DATE
in stored procedures were
silently converted to VARBINARY
.
(Bug#13675)
For the general query log, logging of prepared statements
executed via the C API differed from logging of prepared
statements performed with PREPARE
and EXECUTE
. Logging for the
latter was missing the Prepare
and
Execute
lines.
(Bug#13326)
The server returned data from SHOW CREATE
TABLE
statement or a
SELECT
statement on an
INFORMATION_SCHEMA
table using the
binary
character set.
(Bug#10491)
Backup software can cause
ERROR_SHARING_VIOLATION
or
ERROR_LOCK_VIOLATION
conditions during file
operations. InnoDB
now retries forever until
the condition goes away.
(Bug#9709)
User Comments
Add your own comment.