Functionality added or changed:
The libedit
library was upgraded to version
2.11.
(Bug#42433)
Bugs fixed:
Security Fix:
Using an XPath expression employing a scalar expression as a
FilterExpr
with ExtractValue()
or
UpdateXML()
caused the server to
crash. Such expressions now cause an error instead.
(Bug#42495)
Incompatible Change:
The fix for Bug#33699 introduced a change to the
UPDATE
statement such that
assigning NULL
to a NOT
NULL
column caused an error even when strict SQL mode
was not enabled. The original behavior before was that such
assignments caused an error only in strict SQL mode, and
otherwise set the column to the implicit default value for the
column data type and generated a warning. (For information about
implicit default values, see
Section 10.1.4, “Data Type Default Values”.)
The change caused compatibility problems for applications that
relied on the original behavior. It also caused replication
problems between servers that had the original behavior and
those that did not, for applications that assigned
NULL
to NOT NULL
columns
in UPDATE
statements without
strict SQL mode enabled. This change has been reverted so that
UPDATE
again had the original
behavior. Problems can still occur if you replicate between
servers that have the modified
UPDATE
behavior and those that do
not.
(Bug#39265)
Important Change:
When using the MySQL Instance Configuration Wizard with a
configuration where you already have an existing installation
with a custom datadir
, the wizard could reset
the data to the default data directory. When performing an
upgrade installation in this situation, you must re-specify your
custom settings, including the datadir
, to
ensure that your configuration file is not reset to the default
values.
(Bug#37534)
Important Change:
Uninstalling MySQL using the MySQL installer on Windows would
delete the my.ini
file. The file is no longer
deleted. In addition, when a new installation is conducted, any
existing cofiguration file will be renamed to
myDATETIME.ini.bak
during configuration.
(Bug#36493)
Important Change: When installing MySQL on Windows, it could be possible to install multiple editions (Complete, and Essential, for example) of the same version of MySQL, leading to two separate entries in the installed packages which were impossible to isolate. This could lead to problems with installation and uninstallation. The MySQL installer on Windows will no longer allow multiple installations of the same version of MySQL on a single machine. (Bug#4217)
Replication:
START SLAVE
UNTIL
did not work correctly with
--replicate-same-server-id
enabled; when started with this option, the slave did not
perform events recorded in the relay log and that originated
from a different master.
Log rotation events are automatically generated and written when
rotating the binary log or relay log. Such events for relay logs
are usually ignored by the slave SQL thread because they have
the same server ID as that of the slave. However, when
--replicate-same-server-id
was
enabled, the rotation event for the relay log was treated as if
it originated on the master, because the log's name and
position were incorrectly updated. This caused the
MASTER_POS_WAIT()
function always
to return NULL
and thus to fail.
(Bug#38734, Bug#38934)
Replication:
TRUNCATE
statements failed to
replicate when statement-based binary logging mode was not
available. The issue was observed when using
InnoDB
with the transaction
isolation level set to READ UNCOMMITTED
(thus
forcing InnoDB
not to allow
statement-based logging). However, the same behavior could be
reproduced using any transactional storage engine supporting
only row-based logging, regardless of the isolation level. This
was due to two separate problems:
An error was printed by InnoDB
for TRUNCATE
when using
statement-based logging mode where the transaction isolation
level was set to READ COMMITTED
or
READ UNCOMMITTED
, because
InnoDB
permits statement-based
replication for DML statements. However,
TRUNCATE
is not
transactional; since it is the equivalent of
DROP TABLE
followed by
CREATE TABLE
, it is actually
DDL, and should therefore be allowed to be replicated as a
statement.
TRUNCATE
was not logged in
mixed mode because of the error just described; however,
this error was not reported to the client.
As a result of this fix, TRUNCATE
is now treated as DDL for purposes of binary logging and
replication; that is, it is always logged as a statement and so
no longer causes an error when replicated using a transactional
storage engine such as InnoDB
.
(Bug#36763)
See also Bug#42643.
Replication:
mysqlbinlog replay of
CREATE TEMPORARY
TABLE ... LIKE
statements and of
TRUNCATE
statements used on
temporary tables failed with Error 1146 (Table ...
doesn't exist).
(Bug#35583)
Replication:
In statement mode, mysqlbinlog failed to
issue a SET @@autommit
statement when the
autocommit mode was changed.
(Bug#34541)
Replication:
LOAD DATA
INFILE
statements did not replicate correctly from a
master running MySQL 4.1 to a slave running MySQL 5.1 or later.
(Bug#31240)
The use by libedit
of the
__weak_reference()
macro caused compilation
failure on FreeBSD.
(Bug#42817)
A '%'
character in SQL statements could cause
the server to crash.
(Bug#42634)
An optimization introduced for Bug#37553 required an explicit
cast to be added for some uses of
TIMEDIFF()
because automatic
casting could produce incorrect results. (It was necessary to
use TIME(TIMEDIFF(...))
.)
(Bug#42525)
On the IBM i5 platform, the MySQL configuration process caused
the system version of pthread_setschedprio()
to be used. This function returns SIGILL
on
i5 because it is not supported, causing the server to crash. Now
the my_pthread_setprio()
function in the
mysys
library is used instead.
(Bug#42524)
The SSL certficates included with MySQL distributions were regenerated because the previous ones had expired. (Bug#42366)
User variables within triggers could cause a crash if the
mysql_change_user()
C API
function was invoked.
(Bug#42188)
Dependent subqueries such as the following caused a memory leak proportional to the number of outer rows:
SELECT COUNT(*) FROM t1, t2 WHERE t2.b IN (SELECT DISTINCT t2.b FROM t2 WHERE t2.b = t1.a);
Some queries using NAME_CONST(.. COLLATE
...)
led to a server crash due to a failed type cast.
(Bug#42014)
On Mac OS X, some of the universal client libraries were not actually universal and were missing code for one or more architectures. (Bug#41940)
String reallocation could cause memory overruns. (Bug#41868)
mysql_install_db did not pass some relevant options to mysqld. (Bug#41828)
Setting
innodb_locks_unsafe_for_binlog
should be equivalent to setting the transaction isolation level
to READ COMMITTED
. However,
if both of those things were done, nonmatching semi-consistently
read rows were not unlocked when they should have been.
(Bug#41671)
REPAIR TABLE
crashed for
compressed MyISAM
tables.
(Bug#41574)
For a TIMESTAMP NOT
NULL DEFAULT ...
column, storing
NULL
as the return value from some functions
caused a “cannot be NULL” error.
NULL
returns now correctly cause the column
default value to be stored.
(Bug#41370)
The server cannot execute
INSERT DELAYED
statements when statement-based binary logging is enabled, but
the error message displayed only the table name, not the entire
statement.
(Bug#41121)
FULLTEXT
indexes did not work for Unicode
columns that used a custom UCA collation.
(Bug#41084)
The Windows installer displayed incorrect product names in some images. (Bug#40845)
Changing
innodb_thread_concurrency
at
runtime could cause errors.
(Bug#40760)
SELECT
statements could be blocked by
INSERT DELAYED
statements that were waiting for a lock, even with
low_priority_updates
enabled.
(Bug#40536)
For InnoDB
tables that used
ROW_FORMAT=REDUNDANT
, storage size of
NULL
columns could be determined incorrectly.
(Bug#40369)
The query cache stored only partial query results if a statement failed while the results were being sent to the client. This could cause other clients to hang when trying to read the cached result. Now if a statement fails, the result is not cached. (Bug#40264)
When a MEMORY
table became full,
the error generated was returned to the client but was not
written to the error log.
(Bug#39886)
With row-based binary logging, replication of
InnoDB
tables containing
NULL
-valued
BIT
columns could fail.
(Bug#39648)
The expression ROW(...) IN (SELECT ... FROM
DUAL)
always returned TRUE
.
(Bug#39069)
The greedy optimizer could cause a server crash due to improper handling of nested outer joins. (Bug#38795)
Use of COUNT(DISTINCT)
prevented
NULL
testing in the HAVING
clause.
(Bug#38637)
The innodb_stats_on_metadata
system variable was not displayed by SHOW
VARIABLES
and was not settable at runtime.
(Bug#38189)
Enabling the sync_frm
system
variable had no effect on the handling of
.frm
files for views.
(Bug#38145)
The embedded server truncated some error messages. (Bug#37995)
For comparison of NULL
to a subquery result
inside IS NULL
, the comparison could evaluate
to NULL
rather than to
TRUE
or FALSE
. This
occurred for expressions such as:
SELECT ... WHERE NULL IN (SELECT ...) IS NULL
Setting myisam_repair_threads
greater than 1 caused a server crash for table repair or
alteration operations for MyISAM
tables with multiple FULLTEXT
indexes.
(Bug#37756)
When using the MySQL MSI Installer on Windows and selecting Back after a choosing Repair, you would be returned to the Fresh Install section of the installer. You are now correctly returned to the Install, Repair, Modify screen. (Bug#37294)
The mysql client sometimes improperly interpreted string escape sequences in nonstring contexts. (Bug#36391)
The query cache stored packets containing the server status of the time when the cached statement was run. This might lead to an incorrect transaction status on the client side if a statement was cached during a transaction and later served outside a transaction context (or vice versa). (Bug#36326)
If the system time was adjusted backward during query execution, the apparent execution time could be negative. But in some cases these queries would be written to the slow query log, with the negative execution time written as a large unsigned number. Now statements with apparent negative execution time are not written to the slow query log. (Bug#35396)
libmysqld
was not built with all character
sets.
(Bug#32831)
For mysqld_multi, using the
--mysqld=mysqld_safe
option
caused the --defaults-file
and --defaults-extra-file
options to behave the same way.
(Bug#32136)
Attempts to open a valid MERGE table sometimes resulted in a
ER_WRONG_MRG_TABLE
error. This
happened after failure to open an invalid MERGE table had also
generated an ER_WRONG_MRG_TABLE
error.
(Bug#32047)
For Solaris package installation using
pkgadd, the postinstall script failed,
causing the system tables in the mysql
database not to be created.
(Bug#31164)
If the default database was dropped, the value of
character_set_database
was not
reset to character_set_server
as it should have been.
(Bug#27208)
User Comments
Add your own comment.