Changes in MySQL Enterprise 5.0.46 [MRU] (2007-07-13)

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.44).
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.

MySQL Cluster:
The management client's response to START BACKUP
WAIT COMPLETED did not include the backup ID.
(Bug #27640)

Replication:DROP USER statements that named
multiple users, only some of which could be dropped, were
replicated incorrectly.
(Bug #29030)

On the IBM i5 platform, the installation script in the
.savf binaries unconditionally executed the
mysql_install_db script.
(Bug #30084)

gcov coverage-testing information was not
written if the server crashed.
(Bug #29543)

Corrupt data resulted from use of SELECT ... INTO
OUTFILE 'file_name' FIELDS ENCLOSED
BY 'c', where
c is a digit or minus sign, followed
by LOAD DATA INFILE
'file_name' FIELDS ENCLOSED BY
'c'.
(Bug #29442)

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)

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)

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)

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 view_column = constant in
the WHERE 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 view_column =
constant in the WHERE clause and
the GROUP BY clause contained a reference to
the same view column.
(Bug #29104)

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)

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:

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
integer_constant, the
server created the column using the
DECIMAL data type for large
negative values that are within the range of
BIGINT.
(Bug #28625)

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)

mysqlbinlog --hexdump generated incorrect
output due to omission of the
“#” comment character for some
comment lines.
(Bug #28293)

The LOCATE() function returned
NULL if any of its arguments evaluated to
NULL. Likewise, the predicate,
LOCATE(str,NULL)
IS NULL, erroneously evaluated to
FALSE.
(Bug #27932)

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)

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)

Binary content 0x00 in a
BLOB column sometimes became
0x5C 0x00 following a dump and reload, which
could cause problems with data using multibyte 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
multibyte 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 permit one less than this total maximum.) Now
MyISAM accepts a table defined with the
maximum.
(Bug #26642)

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)

Under ActiveState Perl, mysql-test-run.pl
could kill itself when attempting to kill other processes.
(Bug #25657)

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.

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)

A too-long shared-memory-base-name value
could cause a buffer overflow and crash the server or clients.
(Bug #24924)

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)

The server crashed when the size of an
ARCHIVE table grew larger than 2GB.
(Bug #15787)

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)

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)