DEVELOPER ZONE ::
Login / Register
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:
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)
The mysql_create_system_tables script was removed because mysql_install_db no longer uses it in MySQL 5.0.
NDB Cluster
: It is now possible to restore selected databases or tables using ndb_restore. (Bug#26899)
NDB Cluster
: Several options have been added for use with ndb_restore --print_data
to facilitate the creation of data dump files. (Bug#26900)
Bugs fixed:
Security fix: If a stored routine was declared using SQL SECURITY INVOKER
, a user who invoked the routine could gain privileges. (Bug#27337)
NDB Cluster
(APIs): 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)
NDB Cluster
: Under certain rare circumstances, DROP TABLE
or TRUNCATE
of an NDB
table could cause a node failure or forced cluster shutdown. (Bug#27581)
NDB Cluster
: Memory usage of a mysqld process grew even while idle. (Bug#27560)
NDB 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)
NDB Cluster
: Condition pushdown did not work with prepared statements. (Bug#26225)
NDB 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)
NDB Cluster
: Error messages displayed when running in single user mode were inconsistent. (Bug#27021)
NDB Cluster
: On Solaris, the value of an NDB
table column declared as BIT(33)
was always displayed as 0
. (Bug#26986)
NDB 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)
NDB 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)
NDB Cluster
: The failure of a data node while restarting could cause other data nodes to hang or crash. (Bug#27003)
NDB 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. (Bug#21715)
The ALL STATUS
command in the cluster management client still displays status information for data nodes only. This is by design. See Section 15.7.2, “Commands in the MySQL Cluster Management Client”, for more information.
NDB Cluster
: It was not possible to set LockPagesInMainMemory
equal to 0
. (Bug#27291)
NDB 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)
NDB 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)
NDB Cluster
: mysqld processes would sometimes crash under high load. (Bug#26825)
NDB Cluster
: Some values of MaxNoOfTables
caused the error Job buffer congestion to occur. (Bug#19378)
Setting a column to NOT NULL
with an ON DELETE SET NULL
clause foreign key crashes the server. (Bug#25927)
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)
COUNT(
sometimes generated a spurious truncation warning. (Bug#21976)decimal_expr
)
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)
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)
REPAIR TABLE ... USE_FRM
with an ARCHIVE
table deleted all records from the table. (Bug#26138)
Restoration of the default database after stored routine or trigger execution on a slave could cause replication to stop if the database no longer existed. (Bug#25082)
On Windows, debug builds of mysqld could fail with heap assertions. (Bug#25765)
On Windows, debug builds of mysqlbinlog could fail with a memory error. (Bug#23736)
String truncation upon insertion into an integer or year column did not generate a warning (or an error in strict mode). (Bug#26359, Bug#27176)
In out-of-memory conditions, the server might crash or otherwise not report an error to the Windows event log. (Bug#27490)
The temporary file-creation code was cleaned up on Windows to improve server stability. (Bug#26233)
Out-of-memory errors for slave I/O threads were not reported. Now they are written to the error log. (Bug#26844)
mysqldump crashed for MERGE
tables if the --complete-insert
(-c
) option was given. (Bug#25993)
In certain situations, MATCH ... AGAINST
returned false hits for NULL
values produced by LEFT JOIN
when no full-text index was available. (Bug#25729)
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)
GRANT
statements were not replicated if the server was started with the --replicate-ignore-table
or --replicate-wild-ignore-table
option. (Bug#25482)
A problem in handling of aggregate functions in subqueries caused predicates containing aggregate functions to be ignored during query execution. (Bug#24484)
Improved out-of-memory detection when sending logs from a master server to slaves, and log a message when allocation fails. (Bug#26837)
MBROverlaps()
returned incorrect values in some cases. (Bug#24563)
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)
With innodb_file_per_table
enabled, attempting to rename an InnoDB
table to a non-existent database caused the server to exit. (Bug#27381)
mysql_install_db could terminate with an error after failing to determine that a system table already existed. (Bug#27022)
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)
Selecting the result of AVG()
within a UNION
could produce incorrect values. (Bug#24791)
An INTO OUTFILE
clause is allowed only for the final SELECT
of a UNION
, but this restriction was not being enforced correctly. (Bug#23345)
Duplicate entries were not assessed correctly in a MEMORY
table with a BTREE
primary key on a utf8
ENUM
column. (Bug#24985)
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 DELETE FROM
(with no tbl_name
ORDER BY col_name
WHERE
or LIMIT
clause), the server did not check whether col_name
was a valid column in the table. (Bug#26186)
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)
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)
Some views could not be created even when the user had the requisite privileges. (Bug#24040)
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)
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)
Having the EXECUTE
privilege for a routine in a database should make it possible to USE
that database, but the server returned an error instead. This has been corrected. As a result of the change, SHOW TABLES
for a database in which you have only the EXECUTE
privilege returns an empty set rather than an error. (Bug#9504)
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)
SOUNDEX()
returned an invalid string for international characters in multi-byte character sets. (Bug#22638)
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)
Evaluation of an IN()
predicate containing a decimal-valued argument caused a server crash. (Bug#27362)
Storing NULL
values in spatial fields caused excessive memory allocation and crashes on some systems. (Bug#27164)
mysql_stmt_fetch()
did an invalid memory deallocation when used with the embedded server. (Bug#25492)
In a MEMORY
table, using a BTREE
index to scan for updatable rows could lead to an infinite loop. (Bug#26996)
The range optimizer could cause the server to run out of memory. (Bug#26625)
The parser accepted illegal code in SQL exception handlers, leading to a crash at runtime when executing the code. (Bug#26503)
Difficult repair or optimization operations could cause an assertion failure, resulting in a server crash. (Bug#25289)
OPTIMIZE TABLE
caused a race condition in the I/O cache. (Bug#19978)
Increasing the width of a DECIMAL
column could cause column values to be changed. (Bug#24558)
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)
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)
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 bug was introduced by the fix for Bug#19978.
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)
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)
If the server was started with --skip-grant-tables
, Selecting from INFORMATION_SCHEMA
tables causes a server crash. (Bug#26285)
Adding ORDER BY
clause to a query on an InnoDB
table could cause the statement to return no result if the optimizer chose a covering index that enabled it to skip the ORDER BY
. (Bug#24778)
User Comments
Add your own comment.