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.36).
Functionality Added or Changed
To satisfy different user requirements, we provide several servers. mysqld is an optimized server that is a smaller, faster binary. Each package now also includes mysqld-debug, which is compiled with debugging support but is otherwise configured identically to the nondebug server.
The server now includes a timestamp in error messages that are
logged as a result of unhandled signals (such as mysqld
got signal 11 messages).
(Bug #24878)
Added the --secure-file-priv
option for mysqld, which limits the effect of
the LOAD_FILE() function and the
LOAD DATA and
SELECT ... INTO
OUTFILE statements to work only with files in a given
directory.
(Bug #18628)
Added the read-only hostname
system variable, which the server sets at startup to the server
host name.
Bugs Fixed
Incompatible Change:
INSERT DELAYED statements are not
supported for MERGE tables, but the
MERGE storage engine was not rejecting such
statements, resulting in table corruption. Applications
previously using INSERT DELAYED
into MERGE table will break when upgrading to
versions with this fix. To avoid the problem, remove
DELAYED from such statements.
(Bug #26464)
MySQL Cluster:
An invalid pointer was returned following a
FSCLOSECONF signal when accessing the REDO
logs during a node restart or system restart.
(Bug #26515)
MySQL Cluster:
The message Error 0 in readAutoIncrementValue(): no
Error was written to the error log whenever
SHOW TABLE STATUS was performed
on a Cluster table that did not have an
AUTO_INCREMENT column.
(Bug #21033)
MySQL Cluster: An infinite loop in an internal logging function could cause trace logs to fill up with Unknown Signal type error messages and thus grow to unreasonable sizes. (Bug #26720)
MySQL Cluster: Under some circumstances, following the restart of a management node, all data nodes would connect to it normally, but some of them subsequently failed to log any events to the management node. (Bug #26293)
MySQL Cluster: An inadvertent use of unaligned data caused ndb_restore to fail on some 64-bit platforms, including Sparc and Itanium-2. (Bug #26739)
MySQL Cluster:
The
LockPagesInMainMemory
parameter was not read until after distributed communication had
already started between cluster nodes. When the value of this
parameter was 1, this could sometimes result
in data node failure due to missed heartbeats.
(Bug #26454)
MySQL Cluster: Takeover for local checkpointing due to multiple failures of master nodes was sometimes incorrectly handled. (Bug #26457)
MySQL Cluster:
The failure of a data node when restarting it with
--initial could lead to failures of subsequent
data node restarts.
(Bug #26481)
Replication:
Loading data using
LOAD DATA
INFILE may not replicate correctly (due to character
set incompatibilities) if the
character_set_database variable
is set before the data is loaded.
(Bug #15126)
Replication:
For INSERT
... ON DUPLICATE KEY UPDATE statements where some
AUTO_INCREMENT values were generated
automatically for inserts and some rows were updated, one
auto-generated value was lost per updated row, leading to faster
exhaustion of the range of the AUTO_INCREMENT
column.
Because the original problem can affect replication (different values on master and slave), it is recommended that the master and its slaves be upgraded to the current version. (Bug #24432)
Replication: A multiple-row delayed insert with an auto-increment column could cause duplicate entries to be created on the slave in a replication environment. (Bug #26116, Bug #25507)
Replication: Duplicating the usage of a user variable in a stored procedure or trigger would not be replicated correctly to the slave. (Bug #25167)
Replication: User defined variables used within stored procedures and triggers are not replicated correctly when operating in statement-based replication mode. (Bug #14914, Bug #20141)
Replication:
DROP TRIGGER statements would not
be filtered on the slave when using the
replication-wild-do-table option.
(Bug #24478)
IF(expr,
unsigned_expr,
unsigned_expr) was evaluated to a
signed result, not unsigned. This has been corrected. The fix
also affects constructs of the form IS [NOT]
{TRUE|FALSE}, which were transformed internally into
IF() expressions that evaluated
to a signed result.
For existing views that were defined using IS [NOT]
{TRUE|FALSE} constructs, there is a related
implication. The definitions of such views were stored using the
IF() expression, not the original
construct. This is manifest in that SHOW
CREATE VIEW shows the transformed
IF() expression, not the original
one. Existing views will evaluate correctly after the fix, but
if you want SHOW CREATE VIEW to
display the original construct, you must drop the view and
re-create it using its original definition. New views will
retain the construct in their definition.
(Bug #24532)
X() IS NULL and Y() IS
NULL comparisons failed when
X() and
Y() returned
NULL.
(Bug #26038)
DOUBLE values such as
20070202191048.000000 were being treated as
illegal arguments by WEEK().
(Bug #23616)
Use of a GROUP BY clause that referred to a
stored function result together with WITH
ROLLUP caused incorrect results.
(Bug #25373)
Indexes on TEXT columns were
ignored when ref accesses
were evaluated.
(Bug #25971)
When attempting to call a stored procedure creating a table from
a trigger on a table tbl in a database
db, the trigger failed with ERROR
1146 (42S02): Table 'db.tbl' doesn't exist. However,
the actual reason that such a trigger fails is due to the fact
that CREATE TABLE causes an
implicit COMMIT, and so a trigger
cannot invoke a stored routine containing this statement. A
trigger which does so now fails with ERROR 1422
(HY000): Explicit or implicit commit is not permitted in stored
function or trigger, which makes clear the reason
for the trigger's failure.
(Bug #18914)
Expressions involving SUM(), when
used in an ORDER BY clause, could lead to
out-of-order results.
(Bug #25376)
An INSERT trigger invoking a stored routine
that inserted into a table other than the one on which the
trigger was defined would fail with a Table '...'
doesn't exist referring to the second table when
attempting to delete records from the first table.
(Bug #21825)
For SUBSTRING() evaluation using
a temporary table, when
SUBSTRING() was used on a
LONGTEXT column, the max_length metadata
value of the result was incorrectly calculated and set to 0.
Consequently, an empty string was returned instead of the
correct result.
(Bug #15757)
If a thread previously serviced a connection that was killed, excessive memory and CPU use by the thread occurred if it later serviced a connection that had to wait for a table lock. (Bug #25966)
Use of a subquery containing a
UNION with an invalid
ORDER BY clause caused a server crash.
(Bug #26661)
A stored procedure that made use of cursors failed when the procedure was invoked from a stored function. (Bug #25345)
MySQL would not compile when configured using
--without-query-cache.
(Bug #25075)
Use of a subquery containing GROUP BY and
WITH ROLLUP caused a server crash.
(Bug #26830)
UNHEX() IS NULL comparisons failed when
UNHEX() returned
NULL.
(Bug #26537)
LOAD DATA
INFILE sent an okay to the client before writing the
binary log and committing the changes to the table had finished,
thus violating ACID requirements.
(Bug #26050)
Inserting utf8 data into a
TEXT column that used a
single-byte character set could result in spurious warnings
about truncated data.
(Bug #25815)
NOW() returned the wrong value in
statements executed at server startup with the
--init-file option.
(Bug #23240)
BENCHMARK() did not work
correctly for expressions that produced a
DECIMAL result.
(Bug #26093)
The creation of MySQL system tables was not checked for by mysql-test-run.pl. (Bug #20166)
A view on a join is insertable for
INSERT statements that store
values into only one table of the join. However, inserts were
being rejected if the inserted-into table was used in a
self-join because MySQL incorrectly was considering the insert
to modify multiple tables of the view.
(Bug #25122)
For MERGE tables defined on underlying tables
that contained a short VARCHAR
column (shorter than four characters), using
ALTER TABLE on at least one but
not all of the underlying tables caused the table definitions to
be considered different from that of the
MERGE table, even if the
ALTER TABLE did not change the
definition.
(Bug #26881)
A reference to a nonexistent column in the ORDER
BY clause of an UPDATE ... ORDER BY
statement could cause a server crash.
(Bug #25126)
EXPLAIN EXTENDED did not show
WHERE conditions that were optimized away.
(Bug #22331)
In some error messages, inconsistent format specifiers were used for the translations in different languages. comp_err (the error message compiler) now checks for mismatches. (Bug #26571)
On 64-bit Windows, large timestamp values could be handled incorrectly. (Bug #26536)
Added support for --debugger=dbx for
mysql-test-run.pl and added support for
--debugger=devenv,
--debugger=DevEnv, and
--debugger=.
(Bug #26792)/path/to/devenv
A user-defined variable could be assigned an incorrect value if a temporary table was employed in obtaining the result of the query used to determine its value. (Bug #24010)
SSL connections failed on Windows. (Bug #26678)
On Windows, the server exhibited a file-handle leak after reaching the limit on the number of open file descriptors. (Bug #25222)
The server could crash if two or more threads initiated query cache resize operation at moments very close in time. (Bug #23527)
When a stored routine attempted to execute a statement accessing a nonexistent table, the error was not caught by the routine's exception handler. (Bug #20713, Bug #8407)
VIEW restrictions were applied to
SELECT statements after a
CREATE VIEW statement failed, as
though the CREATE had succeeded.
(Bug #25897)
When nesting stored procedures within a trigger on a table, a
false dependency error was thrown when one of the nested
procedures contained a DROP TABLE
statement.
(Bug #22580)
The REPEAT() function did not
permit a column name as the count
parameter.
(Bug #25197)
Local variables in stored routines or triggers, when declared as
the BIT type, were interpreted as
strings.
(Bug #12976)
For , the result
could be incorrect if expr
IN(value_list)BIGINT UNSIGNED values
were used for expr or in the value
list.
(Bug #19342)
The update columns for INSERT ... SELECT ... ON
DUPLICATE KEY UPDATE could be assigned incorrect
values if a temporary table was used to evaluate the
SELECT.
(Bug #16630)
When a TIME_FORMAT() expression
was used as a column in a GROUP BY clause,
the expression result was truncated.
(Bug #20293)
Queries that used a temporary table for the outer query when evaluating a correlated subquery could return incorrect results. (Bug #23800)
Several deficiencies in resolution of column names for
INSERT ...
SELECT statements were corrected.
(Bug #25831)
For some values of the position argument, the
INSERT() function could insert a
NUL byte into the result.
(Bug #26281)
An INSERT
... ON DUPLICATE KEY UPDATE statement might modify
values in a table but not flush affected data from the query
cache, causing subsequent selects to return stale results. This
made the combination of query cache plus ON DUPLICATE
KEY UPDATE very unreliable.
(Bug #27210)
References: See also Bug #27006, Bug #27033. This bug was introduced by Bug #19978.
Instance Manager did not remove the angel PID file on a clean shutdown. (Bug #22511)
For index reads, the BLACKHOLE engine did not
return end-of-file (which it must because
BLACKHOLE tables contain no rows), causing
some queries to crash.
(Bug #19717)
The conditions checked by the optimizer to permit use of indexes
in IN predicate calculations were
unnecessarily tight and were relaxed.
(Bug #20420)
CONNECTION is no longer treated as a reserved
word.
(Bug #12204)
SELECT ... INTO
OUTFILE with a long FIELDS ENCLOSED
BY value could crash the server.
(Bug #27231)
Views that used a scalar correlated subquery returned incorrect results. (Bug #26560)
When using certain server SQL modes, the
mysql.proc table was not created by
mysql_install_db.
(Bug #23669)
In certain cases it could happen that deleting a row corrupted
an RTREE index. This affected indexes on
spatial columns.
(Bug #25673)
INSERT DELAYED statements
inserted incorrect values into
BIT columns.
(Bug #26238)
IN ((,
subquery))IN (((,
and so forth, are equivalent to subquery)))IN
(, which is always
interpreted as a table subquery (so that it is permitted to
return more than one row). MySQL was treating the
“over-parenthesized” subquery as a single-row
subquery and rejecting it if it returned more than one row. This
bug primarily affected automatically generated code (such as
queries generated by Hibernate), because humans rarely write the
over-parenthesized forms.
(Bug #21904)subquery)
