This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This section documents all changes and bug fixes that have been applied since the last MySQL Enterprise Server release (5.0.38).
Functionality added or changed:
MySQL Cluster: The behavior of the ndb_restore utility has been changed as follows:
It is now possible to restore selected databases or tables using ndb_restore.
Several options have been added for use with
ndb_restore --print_data
to facilitate the creation of structured data
dump files. These options can be used to make dumps made
using ndb_restore more like those
produced by mysqldump.
For details of these changes, see Section 19.9.3, “ndb_restore — Restore a Cluster Backup”. (Bug#26899, Bug#26900)
If a set function S with an outer
reference
cannot be aggregated in the outer query against which the outer
reference has been resolved, MySQL interprets S(outer_ref)
the same way that it would interpret S(outer_ref)
.
However, standard SQL requires throwing an error in this
situation. An error now is thrown for such queries if the
S(const)ANSI SQL mode is enabled.
(Bug#27348)
Added the --service-startup-timeout option for
mysql.server to specify how long to wait for
the server to start. If the server does not start within the
timeout period, mysql.server exits with an
error.
(Bug#26952)
Prefix lengths for columns in SPATIAL indexes
are no longer displayed in SHOW CREATE TABLE
output. mysqldump uses that statement, so if
a table with SPATIAL indexes containing
prefixed columns is dumped and reloaded, the index is created
with no prefixes. (The full column width of each column is
indexed.)
(Bug#26794)
The output of mysql --xml
and mysqldump --xml now
includes a valid XML namespace.
(Bug#25946)
If you use SSL for a client connection, you can tell the client
not to authenticate the server certificate by specifying neither
--ssl-ca nor --ssl-capath. The
server still verifies the client according to any applicable
requirements established via GRANT statements
for the client, and it still uses any
--ssl-ca/--ssl-capath values
that were passed to server at startup time.
(Bug#25309)
The syntax for index hints has been extended to enable explicit specification that the hint applies only to join processing. See Section 12.2.7.2, “Index Hint Syntax”.
This is a new fix for this issue, and replaces the fix made in MySQL 5.0.25 and reverted in 5.0.26. (Bug#21174)
The mysql_create_system_tables script was removed because mysql_install_db no longer uses it in MySQL 5.0.
Bugs fixed:
Important Note: The parser accepted invalid code in SQL condition handlers, leading to server crashes or unexpected execution behavior in stored programs. Specifically, the parser allowed a condition handler to refer to labels for blocks that enclose the handler declaration. This was incorrect because block label scope does not include the code for handlers declared within the labeled block.
The parser now rejects this invalid construct, but if you upgrade in place (without dumping and reloading your databases), existing handlers that contain the construct are still invalid — even if they appear to function as you expect — and should be rewritten.
To find affected handlers, use mysqldump to dump all stored functions and procedures, triggers, and events. Then attempt to reload them into an upgraded server. Handlers that contain illegal label references will be rejected.
For more information about condition handlers and writing them
to avoid invalid jumps, see Section 21.2.10.2, “DECLARE Handlers”.
(Bug#26503)
MySQL Cluster:
NDB tables having MEDIUMINT
AUTO_INCREMENT columns were not restored correctly by
ndb_restore, causing spurious duplicate key
errors. This issue did not affect TINYINT,
INT, or BIGINT columns
with AUTO_INCREMENT.
(Bug#27775)
MySQL Cluster:
NDB tables with indexes whose names contained
space characters were not restored correctly by
ndb_restore (the index names were truncated).
(Bug#27758)
MySQL Cluster:
Under certain rare circumstances performing a DROP
TABLE or TRUNCATE on an
NDB table could cause a node failure or
forced cluster shutdown.
(Bug#27581)
MySQL Cluster: Memory usage of a mysqld process grew even while idle. (Bug#27560)
MySQL Cluster:
It was not possible to set
LockPagesInMainMemory equal to
0.
(Bug#27291)
MySQL Cluster: A race condition could sometimes occur if the node acting as master failed while node IDs were still being allocated during startup. (Bug#27286)
MySQL Cluster: When a data node was taking over as the master node, a race condition could sometimes occur as the node was assuming responsibility for handling of global checkpoints. (Bug#27283)
MySQL Cluster: Error messages displayed when running in single user mode were inconsistent. (Bug#27021)
MySQL Cluster: The failure of a data node while restarting could cause other data nodes to hang or crash. (Bug#27003)
MySQL Cluster:
On Solaris, the value of an NDB table column
declared as BIT(33) was always displayed as
0.
(Bug#26986)
MySQL Cluster: mysqld processes would sometimes crash under high load. (Bug#26825)
MySQL Cluster:
The output from ndb_restore
--print_data was incorrect for a
backup made of a database containing tables with
TINYINT or SMALLINT
columns.
(Bug#26740)
MySQL Cluster:
In some cases, AFTER UPDATE and
AFTER DELETE triggers on
NDB tables that referenced subject table did
not see the results of operation which caused invocation of the
trigger, but rather saw the row as it was prior to the update or
delete operation.
This was most noticeable when an update operation used a
subquery to obtain the rows to be updated. An example would be
UPDATE tbl1 SET col2 = val1 WHERE tbl1.col1 IN (SELECT
col3 FROM tbl2 WHERE c4 = val2) where there was an
AFTER UPDATE trigger on table
tbl1. In such cases, the trigger would fail
to execute.
The problem occurred because the actual update or delete
operations were deferred to be able to perform them later as one
batch. The fix for this bug solves the problem by disabling this
optimization for a given update or delete if the table has an
AFTER trigger defined for this operation.
(Bug#26242)
MySQL Cluster: Condition pushdown did not work with prepared statements. (Bug#26225)
MySQL Cluster:
Joins on multiple tables containing BLOB
columns could cause data nodes run out of memory, and to crash
with the error NdbObjectIdMap::expand unable to
expand.
(Bug#26176)
MySQL Cluster:
After entering single user mode it was not possible to alter
non-NDB tables on any SQL nodes other than
the one having sole access to the cluster.
(Bug#25275)
MySQL Cluster: When a cluster data node suffered a “hard” failure (such as a power failure or loss of a network connection) TCP sockets to the missing node were maintained indefinitely. Now socket-based transporters check for a response and terminate the socket if there is no activity on the socket after 2 hours. (Bug#24793)
MySQL Cluster:
The management client command
displayed
the message node_id STATUSNode when node_id:
not connectednode_id
was not the node ID of a data node.
The ALL STATUS command in the cluster
management client still displays status information for data
nodes only. This is by design. See
Section 19.7.2, “Commands in the MySQL Cluster Management Client”,
for more information.
MySQL Cluster:
Some values of MaxNoOfTables caused the error
Job buffer congestion to occur.
(Bug#19378)
MySQL Cluster:
When trying to create tables on an SQL node not connected to the
cluster, a misleading error message Table
'tbl_name' already exists
was generated. The error now generated is Could not
connect to storage engine.
(Bug#18676)
Replication: Out-of-memory errors were not reported. Now they are written to the error log. (Bug#26844)
Cluster Replication: Some queries that updated multiple tables were not backed up correctly. (Bug#27748)
Cluster API:
Using NdbBlob::writeData() to write data in
the middle of an existing blob value (that is, updating the
value) could overwrite some data past the end of the data to be
changed.
(Bug#27018)
Cluster API:
After defining a delete operation (using
NdbOperation::deleteTuple()) on a nonexistent
primary key of a table having a BLOB or
TEXT column, invoking
NdbTransaction::execute() caused the calling
application to enter an endless loop rather than raising an
error.
This issue also affected ndb_restore; when
restoring tables containing BLOB or
TEXT columns, this could cause it to consume
all available memory and then crash.
(Bug#24028)
Some equi-joins containing a WHERE clause
that included a NOT IN subquery caused a
server crash.
(Bug#27870)
SELECT DISTINCT could return incorrect
results if the select list contained duplicated columns.
(Bug#27659)
With NO_AUTO_VALUE_ON_ZERO SQL mode enabled,
LOAD DATA operations could assign incorrect
AUTO_INCREMENT values.
(Bug#27586)
Incorrect results could be returned for some queries that
contained a select list expression with IN or
BETWEEN together
with an ORDER BY or GROUP
BY on the same expression using NOT
IN or NOT BETWEEN.
(Bug#27532)
Evaluation of an IN() predicate containing a
decimal-valued argument caused a server crash.
(Bug#27513, Bug#27362, CVE-2007-2583)
In out-of-memory conditions, the server might crash or otherwise not report an error to the Windows event log. (Bug#27490)
Passing nested row expressions with different structures to an
IN predicate caused a server crash.
(Bug#27484)
The decimal.h header file was incorrectly
omitted from binary distributions.
(Bug#27456)
With innodb_file_per_table enabled,
attempting to rename an InnoDB table to a
non-existent database caused the server to exit.
(Bug#27381)
A subquery could get incorrect values for references to outer query columns when it contained aggregate functions that were aggregated in outer context. (Bug#27321)
The server did not shut down cleanly. (Bug#27310)
In a view, a column that was defined using a
GEOMETRY function was treated as having the
LONGBLOB data type rather than the
GEOMETRY type.
(Bug#27300)
Queries containing subqueries with
COUNT(*) aggregated in
an outer context returned incorrect results. This happened only
if the subquery did not contain any references to outer columns.
(Bug#27257)
Use of an aggregate function from an outer context as an
argument to GROUP_CONCAT()
caused a server crash.
(Bug#27229)
String truncation upon insertion into an integer or year column did not generate a warning (or an error in strict mode). (Bug#27176, Bug#26359)
Storing NULL values in spatial fields caused
excessive memory allocation and crashes on some systems.
(Bug#27164)
Row equalities in WHERE clauses could cause
memory corruption.
(Bug#27154)
GROUP BY on a ucs2 column
caused a server crash when there was at least one empty string
in the column.
(Bug#27079)
Duplicate members in SET or
ENUM definitions were not detected. Now they
result in a warning; if strict SQL mode is enabled, an error
occurs instead.
(Bug#27069)
For INSERT ... ON DUPLICATE KEY UPDATE
statements on tables containing
AUTO_INCREMENT columns,
LAST_INSERT_ID() was reset to 0
if no rows were successfully inserted or changed. “Not
changed” includes the case where a row was updated to its
current values, but in that case,
LAST_INSERT_ID() should
not be reset to 0. Now
LAST_INSERT_ID() is
reset to 0 only if no rows were successfully inserted or
touched, whether or not touched rows were changed.
(Bug#27033)
This regression was introduced by Bug#19978
mysql_install_db could terminate with an error after failing to determine that a system table already existed. (Bug#27022)
In a MEMORY table, using a
BTREE index to scan for updatable rows could
lead to an infinite loop.
(Bug#26996)
Invalid optimization of pushdown conditions for queries where an outer join was guaranteed to read only one row from the outer table led to results with too few rows. (Bug#26963)
Windows binaries contained no debug symbol file. Now
.map and .pdb files are
included in 32-bit builds for mysqld-nt.exe,
mysqld-debug.exe, and
mysqlmanager.exe.
(Bug#26893)
Improved out-of-memory detection when sending logs from a master server to slaves, and log a message when allocation fails. (Bug#26837)
For InnoDB tables having a clustered index
that began with a CHAR or
VARCHAR column, deleting a record and then
inserting another before the deleted record was purged could
result in table corruption.
(Bug#26835)
Duplicates were not properly identified among (potentially) long
strings used as arguments for
GROUP_CONCAT(DISTINCT).
(Bug#26815)
ALTER VIEW requires the CREATE
VIEW and DROP privileges for the
view. However, if the view was created by another user, the
server erroneously required the SUPER
privilege.
(Bug#26813)
A result set column formed by concatention of string literals
was incomplete when the column was produced by a subquery in the
FROM clause.
(Bug#26738)
When using the result of
SEC_TO_TIME() for time
value greater than 24 hours in an ORDER BY
clause, either directly or through a column alias, the rows were
sorted incorrectly as strings.
(Bug#26672)
The range optimizer could cause the server to run out of memory. (Bug#26625)
The range optimizer could consume a combinatorial amount of
memory for certain classes of WHERE clauses.
(Bug#26624)
mysqldump could crash or exhibit incorrect
behavior when some options were given very long values, such as
--fields-terminated-by=". The code has been cleaned
up to remove a number of fixed-sized buffers and to be more
careful about error conditions in memory allocation.
(Bug#26346)some very long
string"
If the server was started with
--skip-grant-tables, Selecting from
INFORMATION_SCHEMA tables causes a server
crash.
(Bug#26285)
For an INSERT statement that should fail due
to a column with no default value not being assigned a value,
the statement succeeded with no error if the column was assigned
a value in an ON DUPLICATE KEY UPDATE clause,
even if that clause was not used.
(Bug#26261)
The temporary file-creation code was cleaned up on Windows to improve server stability. (Bug#26233)
For MyISAM tables,
COUNT(*) could return
an incorrect value if the WHERE clause
compared an indexed TEXT column to the empty
string (''). This happened if the column
contained empty strings and also strings starting with control
characters such as tab or newline.
(Bug#26231)
For INSERT INTO ... SELECT where index
searches used column prefixes, insert errors could occur when
key value type conversion was done.
(Bug#26207)
For DELETE FROM (with no
tbl_name ORDER BY
col_nameWHERE or LIMIT clause),
the server did not check whether
col_name was a valid column in the
table.
(Bug#26186)
REPAIR TABLE ... USE_FRM with an
ARCHIVE table deleted all records from the
table.
(Bug#26138)
mysqldump crashed for
MERGE tables if the
--complete-insert (-c) option
was given.
(Bug#25993)
Setting a column to NOT NULL with an
ON DELETE SET NULL clause foreign key crashes
the server.
(Bug#25927)
On Windows, debug builds of mysqld could fail with heap assertions. (Bug#25765)
In certain situations, MATCH ... AGAINST
returned false hits for NULL values produced
by LEFT JOIN when no full-text index was
available.
(Bug#25729)
When RAND() was called multiple
times inside a stored procedure, the server did not write the
correct random seed values to the binary log, resulting in
incorrect replication.
(Bug#25543)
OPTIMIZE TABLE might fail on Windows when it
attempts to rename a temporary file to the original name if the
original file had been opened, resulting in loss of the
.MYD file.
(Bug#25521)
For SHOW ENGINE INNODB STATUS, the
LATEST DEADLOCK INFORMATION was not always
cleared properly.
(Bug#25494)
mysql_stmt_fetch() did an
invalid memory deallocation when used with the embedded server.
(Bug#25492)
GRANT statements were not replicated if the
server was started with the
--replicate-ignore-table or
--replicate-wild-ignore-table option.
(Bug#25482)
Difficult repair or optimization operations could cause an assertion failure, resulting in a server crash. (Bug#25289)
Duplicate entries were not assessed correctly in a
MEMORY table with a BTREE
primary key on a utf8 ENUM
column.
(Bug#24985)
Selecting the result of AVG()
within a UNION could produce incorrect
values.
(Bug#24791)
MBROverlaps() returned incorrect values in
some cases.
(Bug#24563)
Increasing the width of a DECIMAL column
could cause column values to be changed.
(Bug#24558)
A problem in handling of aggregate functions in subqueries caused predicates containing aggregate functions to be ignored during query execution. (Bug#24484)
The test for the
MYSQL_OPT_SSL_VERIFY_SERVER_CERT option for
mysql_options() was
performed incorrectly. Also changed as a result of this bugfix:
The arg option for the
mysql_options() C API function
was changed from char * to void
*.
(Bug#24121)
Replication between master and slave would infinitely retry
binary log transmission where the
max_allowed_packet on the master was larger
than that on the slave if the size of the transfer was between
these two values.
(Bug#23775)
On Windows, debug builds of mysqlbinlog could fail with a memory error. (Bug#23736)
The values displayed for the
Innodb_row_lock_time,
Innodb_row_lock_time_avg, and
Innodb_row_lock_time_max status variables
were incorrect.
(Bug#23666)
SHOW CREATE VIEW qualified references to
stored functions in the view definition with the function's
database name, even when the database was the default database.
This affected mysqldump (which uses
SHOW CREATE VIEW to dump views) because the
resulting dump file could not be used to reload the database
into a different database. SHOW CREATE VIEW
now suppresses the database name for references to functions in
the default database.
(Bug#23491)
An INTO OUTFILE clause is allowed only for
the final SELECT of a
UNION, but this restriction was not being
enforced correctly.
(Bug#23345)
With the NO_AUTO_VALUE_ON_ZERO SQL mode
enabled, LAST_INSERT_ID() could
return 0 after INSERT ... ON DUPLICATE KEY
UPDATE. Additionally, the next rows inserted (by the
same INSERT, or the following
INSERT with or without ON DUPLICATE
KEY UPDATE), would insert 0 for the auto-generated
value if the value for the AUTO_INCREMENT
column was NULL or missing.
(Bug#23233)
SOUNDEX() returned an invalid
string for international characters in multi-byte character
sets.
(Bug#22638)
COUNT(
sometimes generated a spurious truncation warning.
(Bug#21976)decimal_expr)
InnoDB: The first read statement, if served
from the query cache, was not consistent with the READ
COMMITTED isolation level.
(Bug#21409)
For a stored procedure containing a SELECT
statement that used a complicated join with an
ON expression, the expression could be
ignored during re-execution of the procedure, yielding an
incorrect result.
(Bug#20492)
In some cases, the optimizer preferred a range or full index scan access method over lookup access methods when the latter were much cheaper. (Bug#19372)
Conversion of DATETIME values in numeric
contexts sometimes did not produce a double
(YYYYMMDDHHMMSS.uuuuuu) value.
(Bug#16546)

User Comments
Add your own comment.