This is a bugfix release for the current MySQL Community Server production release family. It replaces MySQL 5.0.37.
Functionality added or changed:
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)
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 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)
The syntax for index hints has been extended to enable explicit specification that the hint applies only to join processing. See Section 12.2.8.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)
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)
Binary distributions for some platforms did not include shared
libraries; now shared libraries are shipped for all platforms
except AIX 5.2 64-bit. Exception: The
library for the libmysqld
embedded server is
not shared except on Windows.
(Bug#16520, Bug#26767, Bug#13450)
Added the read-only hostname
system variable, which the server sets at startup to the server
host name.
The mysql_create_system_tables script was removed because mysql_install_db no longer uses it in MySQL 5.0.
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.
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:
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 TABLE
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: 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:
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 failure of a data node when restarting it with
--initial
could lead to failures of subsequent
data node restarts.
(Bug#26481)
MySQL Cluster: Takeover for local checkpointing due to multiple failures of master nodes was sometimes incorrectly handled. (Bug#26457)
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: 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:
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:
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 17.5.2, “Commands in the MySQL Cluster Management Client”, for more
information.
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:
Some values of MaxNoOfTables
caused the error
Job buffer congestion to occur.
(Bug#19378)
Replication: Out-of-memory errors were not reported. Now they are written to the error log. (Bug#26844)
Replication: Improved out-of-memory detection when sending logs from a master server to slaves, and log a message when allocation fails. (Bug#26837)
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:
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)
Replication:
GRANT
statements were not
replicated if the server was started with the
--replicate-ignore-table
or
--replicate-wild-ignore-table
option.
(Bug#25482)
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:
DROP TRIGGER
statements would not
be filtered on the slave when using the
replication-wild-do-table
option.
(Bug#24478)
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:
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)
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: User defined variables used within stored procedures and triggers are not replicated correctly when operating in statement-based replication mode. (Bug#14914, Bug#20141)
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)
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)
Profiling overhead was incurred even with profiling disabled. (Bug#27501)
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 nonexistent 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)
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)
SELECT ... INTO
OUTFILE
with a long FIELDS ENCLOSED
BY
value could crash the server.
(Bug#27231)
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)
See also Bug#27210, Bug#27006.
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)
AFTER UPDATE
triggers were not activated by
the update part of
INSERT ...
ON DUPLICATE KEY UPDATE
statements.
(Bug#27006)
See also Bug#27033, Bug#27210.
This regression was introduced by Bug#19978.
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)
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)
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)
Use of a subquery containing GROUP BY
and
WITH ROLLUP
caused a server crash.
(Bug#26830)
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)
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 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)
SSL connections failed on Windows. (Bug#26678)
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)
Use of a subquery containing a
UNION
with an invalid
ORDER BY
clause caused a server crash.
(Bug#26661)
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)
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)
Views that used a scalar correlated subquery returned incorrect results. (Bug#26560)
UNHEX() IS NULL
comparisons failed when
UNHEX()
returned
NULL
.
(Bug#26537)
On 64-bit Windows, large timestamp values could be handled incorrectly. (Bug#26536)
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 some values of the position argument, the
INSERT()
function could insert a
NUL byte into the result.
(Bug#26281)
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)
INSERT DELAYED
statements
inserted incorrect values into
BIT
columns.
(Bug#26238)
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_name
WHERE
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)
BENCHMARK()
did not work
correctly for expressions that produced a
DECIMAL
result.
(Bug#26093)
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)
X() IS NULL
and Y() IS
NULL
comparisons failed when
X()
and
Y()
returned
NULL
.
(Bug#26038)
mysqldump crashed for
MERGE
tables if the
--complete-insert
(-c
) option was given.
(Bug#25993)
Indexes on TEXT
columns were
ignored when ref
accesses
were evaluated.
(Bug#25971)
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)
Setting a column to NOT NULL
with an
ON DELETE SET NULL
clause foreign key crashes
the server.
(Bug#25927)
VIEW
restrictions were applied to
SELECT
statements after a
CREATE VIEW
statement failed, as
though the CREATE
had succeeded.
(Bug#25897)
Several deficiencies in resolution of column names for
INSERT ...
SELECT
statements were corrected.
(Bug#25831)
Inserting utf8
data into a
TEXT
column that used a
single-byte character set could result in spurious warnings
about truncated data.
(Bug#25815)
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)
In certain cases it could happen that deleting a row corrupted
an RTREE
index. This affected indexes on
spatial columns.
(Bug#25673)
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)
Expressions involving SUM()
, when
used in an ORDER BY
clause, could lead to
out-of-order results.
(Bug#25376)
Use of a GROUP BY
clause that referred to a
stored function result together with WITH
ROLLUP
caused incorrect results.
(Bug#25373)
A stored procedure that made use of cursors failed when the procedure was invoked from a stored function. (Bug#25345)
Difficult repair or optimization operations could cause an assertion failure, resulting in a server crash. (Bug#25289)
On Windows, the server exhibited a file-handle leak after reaching the limit on the number of open file descriptors. (Bug#25222)
The REPEAT()
function did not
allow a column name as the count
parameter.
(Bug#25197)
A reference to a nonexistent column in the ORDER
BY
clause of an UPDATE ... ORDER BY
statement could cause a server crash.
(Bug#25126)
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)
MySQL would not compile when configured using
--without-query-cache
.
(Bug#25075)
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)
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)
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 bug fix: The
arg
option for the
mysql_options()
C API function
was changed from char *
to void
*
.
(Bug#24121)
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)
Queries that used a temporary table for the outer query when evaluating a correlated subquery could return incorrect results. (Bug#23800)
On Windows, debug builds of mysqlbinlog could fail with a memory error. (Bug#23736)
When using certain server SQL modes, the
mysql.proc
table was not created by
mysql_install_db.
(Bug#23669)
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)
DOUBLE
values such as
20070202191048.000000
were being treated as
illegal arguments by WEEK()
.
(Bug#23616)
The server could crash if two or more threads initiated query cache resize operation at moments very close in time. (Bug#23527)
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 stored 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)
NOW()
returned the wrong value in
statements executed at server startup with the
--init-file
option.
(Bug#23240)
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)
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)
Instance Manager did not remove the angel PID file on a clean shutdown. (Bug#22511)
EXPLAIN
EXTENDED
did not show WHERE
conditions that were optimized away.
(Bug#22331)
COUNT(
sometimes generated a spurious truncation warning.
(Bug#21976)decimal_expr
)
IN ((
,
subquery
))IN (((
,
and so forth, are equivalent to subquery
)))IN
(
, which is always
interpreted as a table subquery (so that it is allowed 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
)
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)
InnoDB
: The first read statement, if served
from the query cache, was not consistent with the
READ COMMITTED
isolation
level.
(Bug#21409)
CURDATE()
is less than
NOW()
, either when comparing
CURDATE()
directly
(CURDATE() < NOW()
is true) or when
casting CURDATE()
to
DATE
(CAST(CURDATE() AS
DATE) < NOW()
is true). However, storing
CURDATE()
in a
DATE
column and comparing
incorrectly yielded false. This is fixed by
comparing a col_name
<
NOW()DATE
column as
DATETIME
for comparisons to a
DATETIME
constant.
(Bug#21103)
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)
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)
The conditions checked by the optimizer to allow use of indexes
in IN
predicate calculations were
unnecessarily tight and were relaxed.
(Bug#20420)
When a TIME_FORMAT()
expression
was used as a column in a GROUP BY
clause,
the expression result was truncated.
(Bug#20293)
The creation of MySQL system tables was not checked for by mysql-test-run.pl. (Bug#20166)
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)
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)
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)
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 allowed in stored
function or trigger, which makes clear the reason
for the trigger's failure.
(Bug#18914)
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)
Conversion of DATETIME
values in
numeric contexts sometimes did not produce a double
(YYYYMMDDHHMMSS.uuuuuu
) value.
(Bug#16546)
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)
Local variables in stored routines or triggers, when declared as
the BIT
type, were interpreted as
strings.
(Bug#12976)
CONNECTION
is no longer treated as a reserved
word.
(Bug#12204)
User Comments
Add your own comment.