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.30).
Functionality added or changed:
Incompatible Change:
InnoDB
rolls back only the last statement on
a transaction timeout. A new option,
--innodb_rollback_on_timeout
,
causes InnoDB
to abort and roll back the
entire transaction if a transaction timeout occurs (the same
behavior as in MySQL 5.0.13 and earlier).
(Bug#24200)
Incompatible Change:
The prepared_stmt_count
system
variable has been converted to the
Prepared_stmt_count
global
status variable (viewable with the
SHOW GLOBAL
STATUS
statement).
(Bug#23159)
MySQL Cluster:
Setting the configuration parameter
LockPagesInMainMemory
had no effect.
(Bug#24461)
MySQL Cluster:
It is now possible to create a unique hashed index on a column
that is not defined as NOT NULL
.
This change applies only to tables using the
NDB
storage engine.
Unique indexes on columns in NDB
tables do not store null values because they are mapped to
primary keys in an internal index table (and primary keys cannot
contain nulls).
Normally, an additional ordered index is created when one
creates unique indexes on NDB
table
columns; this can be used to search for NULL
values. However, if USING HASH
is specified
when such an index is created, no ordered index is created.
The reason for permitting unique hash indexes with null values
is that, in some cases, the user wants to save space if a large
number of records are pre-allocated but not fully initialized.
This also assumes that the user will not
try to search for null values. Since MySQL does not support
indexes that are not allowed to be searched in some cases, the
NDB
storage engine uses a full
table scan with pushed conditions for the referenced index
columns to return the correct result.
A warning is returned if one creates a unique nullable hash
index, since the query optimizer should be provided a hint not
to use it with NULL
values if this can be
avoided.
(Bug#21507)
DROP TRIGGER
now supports an
IF EXISTS
clause.
(Bug#23703)
The Com_create_user
status variable was added
(for counting CREATE USER
statements).
(Bug#22958)
The --memlock
option relies on
system calls that are unreliable on some operating systems. If a
crash occurs, the server now checks whether
--memlock
was specified and if so
issues some information about possible workarounds.
(Bug#22860)
mysqldump now accepts the
--debug-info
option, which displays debugging
information and memory and CPU usage statistics at program exit.
The bundled yaSSL library was upgraded to version 1.5.0.
Bugs fixed:
Performance:
The InnoDB
mutex structure was simplified to
reduce memory load.
(Bug#24386)
Performance:
Evaluation of subqueries that require the filesort algorithm
were allocating and freeing the
sort_buffer_size
buffer many
times, resulting in slow performance. Now the buffer is
allocated once and reused.
(Bug#21727)
MySQL Cluster: The failure of a data node failure during a schema operation could lead to additional node failures. (Bug#24752)
MySQL Cluster: A committed read could be attempted before a data node had time to connect, causing a timeout error. (Bug#24717)
MySQL Cluster: Sudden disconnection of an SQL or data node could lead to shutdown of data nodes with the error failed ndbrequire. (Bug#24447)
MySQL Cluster: ndb_config failed when trying to use 2 management servers and node IDs. (Bug#23887)
MySQL Cluster:
If the value set for MaxNoOfAttributes
is
excessive, a suitable error message is now returned.
(Bug#19352)
MySQL Cluster:
A unique constraint violation was not ignored by an
UPDATE IGNORE
statement when the constraint
violation occurred on a nonprimary key.
(Bug#18487, Bug#24303)
Replication: Changes to character set variables prior to an action on a replication-ignored table were forgotten by slave servers. (Bug#22877)
Replication: On slave servers, transactions that exceeded the lock wait timeout failed to roll back properly. (Bug#20697)
Replication:
SQL statements close to the size of
max_allowed_packet
could
produce binary log events larger than
max_allowed_packet
that could
not be read by slave servers.
(Bug#19402)
Replication:
Slave servers would retry the execution of an SQL statement an
infinite number of times, ignoring the value
SLAVE_TRANSACTION_RETRIES
when using the NDB
engine.
(Bug#16228)
Cluster API:
Using BIT
values with any of the
comparison methods of the NdbScanFilter
class
caused data nodes to fail.
(Bug#24503)
Cluster API: Some MGM API function calls could yield incorrect return values in certain cases where the cluster was operating under a very high load, or experienced timeouts in inter-node communications. (Bug#24011)
The REPEAT()
function could
return NULL
when passed a column for the
count argument.
(Bug#24947)
mysql_upgrade failed if the
--password
(or -p
) option
was given.
(Bug#24896)
With innodb_file_per_table
enabled, InnoDB
displayed incorrect file
times in the output from SHOW TABLE
STATUS
.
(Bug#24712)
ALTER ENABLE KEYS
or ALTER TABLE
DISABLE KEYS
combined with another
ALTER TABLE
option other than
RENAME TO
did nothing. In addition, if ALTER
TABLE was used on a table having disabled keys, the keys of the
resulting table were enabled.
(Bug#24395)
The --extern
option for
mysql-test-run.pl did not function correctly.
(Bug#24354)
Foreign key identifiers for InnoDB
tables
could not contain certain characters.
(Bug#24299)
The mysql.server script used the source command, which is less portable than the . command; it now uses . instead. (Bug#24294)
ALTER TABLE
statements that
performed both RENAME TO
and
{ENABLE|DISABLE} KEYS
operations caused a
server crash.
(Bug#24219)
The loose index scan optimization for GROUP
BY
with MIN
or
MAX
was not applied within other queries,
such as CREATE
TABLE ... SELECT ...
, INSERT ... SELECT
...
, or in the FROM
clauses of
subqueries.
(Bug#24156)
Subqueries for which a pushed-down condition did not produce exactly one key field could cause a server crash. (Bug#24056)
The size of MEMORY
tables and internal
temporary tables was limited to 4GB on 64-bit Windows systems.
(Bug#24052)
ROW_COUNT()
did not work properly
as an argument to a stored procedure.
(Bug#23760)
LAST_DAY('0000-00-00')
could
cause a server crash.
(Bug#23653)
A trigger that invoked a stored function could cause a server crash when activated by different client connections. (Bug#23651)
The stack size for NetWare binaries was increased to 128KB to prevent problems caused by insufficient stack size. (Bug#23504)
If elements in a nontop-level IN
subquery
were accessed by an index and the subquery result set included a
NULL
value, the quantified predicate that
contained the subquery was evaluated to NULL
when it should return a non-NULL
value.
(Bug#23478)
When applying the
group_concat_max_len
limit,
GROUP_CONCAT()
could truncate
multi-byte characters in the middle.
(Bug#23451)
mysql_affected_rows()
could
return values different from
mysql_stmt_affected_rows()
for
the same sequence of statements.
(Bug#23383)
Accuracy was improved for comparisons between
DECIMAL
columns and numbers
represented as strings.
(Bug#23260)
Calculation of COUNT(DISTINCT)
,
AVG(DISTINCT)
, or
SUM(DISTINCT)
when they are
referenced more than once in a single query with GROUP
BY
could cause a server crash.
(Bug#23184)
Queries using a column alias in an expression as part of an
ORDER BY
clause failed, an example of such a
query being SELECT mycol + 1 AS mynum FROM mytable
ORDER BY 30 - mynum
.
(Bug#22457)
Using EXPLAIN
caused a server
crash for queries that selected from
INFORMATION_SCHEMA
in a subquery in the
FROM
clause.
(Bug#22413)
A server crash occurred when using LOAD
DATA
to load a table containing a NOT
NULL
spatial column, when the statement did not load
the spatial column. Now a NULL supplied to NOT NULL
column
error occurs.
(Bug#22372)
DATE_ADD()
requires complete
dates with no “zero” parts, but sometimes did not
return NULL
when given such a date.
(Bug#22229)
Some small double precision numbers (such as
1.00000001e-300
) that should have been
accepted were truncated to zero.
(Bug#22129)
For a nonexistent table, DROP TEMPORARY TABLE
failed with an incorrect error message if
read_only
was enabled.
(Bug#22077)
Trailing spaces were not removed from Unicode
CHAR
column values when used in
indexes. This resulted in excessive usage of storage space, and
could affect the results of some ORDER BY
queries that made use of such indexes.
When upgrading, it is necessary to re-create any existing
indexes on Unicode CHAR
columns
in order to take advantage of the fix. This can be done by
using a REPAIR TABLE
statement
on each affected table.
STR_TO_DATE()
returned
NULL
if the format string contained a space
following a nonformat character.
(Bug#22029)
In some cases, the parser failed to distinguish a user-defined function from a stored function. (Bug#21809)
Inserting a default or invalid value into a spatial column could
fail with Unknown error
rather than a more
appropriate error.
(Bug#21790)
It was possible to use DATETIME
values whose year, month, and day parts were all zeroes but
whose hour, minute, and second parts contained nonzero values,
an example of such an illegal
DATETIME
being
'0000-00-00 11:23:45'
.
This fix was reverted in MySQL 5.0.40.
See also Bug#25301.
yaSSL crashed on pre-Pentium Intel CPUs. (Bug#21765)
Through the C API, the member strings in
MYSQL_FIELD
for a query that contains
expressions may return incorrect results.
(Bug#21635)
Using FLUSH
TABLES
in one connection while another connection is
using HANDLER
statements caused a
server crash.
This fix was reverted in MySQL 5.0.48
See also Bug#29474.
View columns were always handled as having implicit derivation,
leading to illegal mix of collation errors
for some views in UNION
operations. Now view column derivation comes from the original
expression given in the view definition.
(Bug#21505)
InnoDB
crashed while performing XA recovery
of prepared transactions.
(Bug#21468)
INET_ATON()
returned a signed
BIGINT
value, not an unsigned
value.
(Bug#21466)
It was possible to set the backslash character
(“\
”) as the delimiter character
using DELIMITER
, but not actually possible to
use it as the delimiter.
(Bug#21412)
Selecting into variables sometimes returned incorrect wrong results. (Bug#20836)
CONCURRENT
did not work correctly for
LOAD DATA
INFILE
.
(Bug#20637)
mysql_fix_privilege_tables.sql
altered the
table_privs.table_priv
column to contain too
few privileges, causing loss of the CREATE
VIEW
and SHOW VIEW
privileges.
(Bug#20589)
With lower_case_table_names
set
to 1, SHOW CREATE TABLE
printed
incorrect output for table names containing Turkish I (LATIN
CAPITAL LETTER I WITH DOT ABOVE).
(Bug#20404)
A query with a subquery that references columns of a view from
the outer SELECT
could return an
incorrect result if used from a prepared statement.
(Bug#20327)
For queries that select from a view, the server was returning
MYSQL_FIELD
metadata inconsistently for view
names and table names. For view columns, the server now returns
the view name in the table
field and, if the
column selects from an underlying table, the table name in the
org_table
field.
(Bug#20191)
Invalidating the query cache caused a server crash for
INSERT INTO ...
SELECT
statements that selected from a view.
(Bug#20045)
Unsigned BIGINT
values treated as
signed values by the MOD()
function.
(Bug#19955)
Compiling PHP 5.1 with the MySQL static libraries failed on some versions of Linux. (Bug#19817)
The DELIMITER
statement did not work
correctly when used in an SQL file run using the
SOURCE
statement.
(Bug#19799)
For a cast of a DATETIME
value
containing microseconds to
DECIMAL
, the microseconds part
was truncated without generating a warning. Now the microseconds
part is preserved.
(Bug#19491)
VARBINARY
column values inserted
on a MySQL 4.1 server had trailing zeroes following upgrade to
MySQL 5.0 or later.
(Bug#19371)
The server could send incorrect column count information to the client for queries that produce a larger number of columns than can fit in a two-byte number. (Bug#19216)
For some problems relating to character set conversion or
incorrect string values for
INSERT
or
UPDATE
, the server was reporting
truncation or length errors instead.
(Bug#18908)
Constant expressions and some numeric constants used as input parameters to user-defined functions were not treated as constants. (Bug#18761)
myisampack wrote to unallocated memory, causing a crash. (Bug#17951)
FLUSH LOGS
or
mysqladmin flush-logs caused a server crash
if the binary log was not open.
(Bug#17733)
mysql_fix_privilege_tables did not accept a password containing embedded space or apostrophe characters. (Bug#17700)
Attempting to use a view containing DEFINER
information for a nonexistent user resulted in an error message
that revealed the definer account. Now the definer is revealed
only to superusers. Other users receive only an access
denied
message.
(Bug#17254)
IN()
and
CHAR()
can return
NULL
, but did not signal that to the query
processor, causing incorrect results for
IS NULL
operations.
(Bug#17047)
Warnings were generated when explicitly casting a character to a
number (for example, CAST('x' AS
SIGNED)
), but not for implicit conversions in simple
arithmetic operations (such as 'x' + 0
). Now
warnings are generated in all cases.
(Bug#11927)
Metadata for columns calculated from scalar subqueries was limited to integer, double, or string, even if the actual type of the column was different. (Bug#11032)
Subqueries of the form NULL IN (SELECT ...)
returned invalid results.
(Bug#8804, Bug#23485)
User Comments
Add your own comment.