MySQL Community Server 5.6.22 has been released !
Vishal Chaudhary <[email protected]>
| Newsgroups | gmane.comp.db.mysql.announce,gmane.comp.db.mysql.general,gmane.comp.db.mysql.packagers |
|---|---|
| Message-ID | <[email protected]> |
Dear MySQL users,
MySQL Server 5.6.22, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.6.22 is
recommended for use on production systems.
For an overview of what's new in MySQL 5.6, please see
http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html
Starting with 5.6.11, Microsoft Windows packages for MySQL 5.6
are available both as a "full" installer and as a "web" installer.
The full installer is significantly larger and comes bundled with
the latest software releases available. This bundle makes it easy
to download and configure a full server and development suite.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
For information on installing MySQL 5.6.22 on new servers or upgrading
to MySQL 5.6.22 from previous MySQL releases, please see
http://dev.mysql.com/doc/refman/5.6/en/installing.html
MySQL Server is available in source and binary form for a number of
platforms from our download pages at
http://dev.mysql.com/downloads/
Not all mirror sites may be up to date at this point in time, so if you
can't find this version on some mirror, please try again later or choose
another download site.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc:
https://wikis.oracle.com/display/mysql/Contributing
The following section lists the changes in MySQL 5.6 since
the release of MySQL 5.6.21. It may also be viewed
online at
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-22.html
Enjoy!
Changes in MySQL 5.6.22 (2014-12-1)
Compilation Notes
* Noisy compiler warnings on FreeBSD 10 were silenced. (Bug
#18790490)
* CMake workarounds for older Mac OS X and XCode versions
were removed. On Mac OS X, compilation always uses Clang,
even for 32-bit builds.
Compilation on Mac OS X is now supported for Mac OS 10.8
and up, using XCode 5 and up. Compilation on older
versions may work but is unsupported. (Bug #18510941)
* Previously, the MYSQL_MAINTAINER_MODE CMake option was
turned on by default for debug builds and off for release
builds, and MYSQL_MAINTAINER_MODE caused -Werror to be
enabled when building with GCC. This made it cumbersome
to enable -Werror under certain conditions, such as when
compiling with Clang.
Now, MYSQL_MAINTAINER_MODE is on by default when
compiling debug builds with GCC, and
MYSQL_MAINTAINER_MODE enbles -Werror regardless of
whether GCC or Clang is used. Enabling -Werror with Clang
can be done simply by explicitly setting
-DMYSQL_MAINTAINER_MODE=1 when running CMake. In
addition, some compilation warnings reported by Clang 3.4
were fixed, making it possible to build the default debug
build with -Werror. (Bug #18313717)
* Build support was modified to produce the same warnings
for Clang as for gcc. (Bug #17959689)
* CMake configuration for the Clang compiler sets more
appropriate flags for building on Linux. Specifically, -g
-fno-omit-frame-pointer -fno-strict-aliasing is now
added. (Bug #17633291)
Security Notes
* The linked OpenSSL library for the MySQL Commercial
Server has been updated from version 1.0.1h to version
1.0.1j. Issues fixed in the new version are described at
http://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL
Community build of MySQL Server, which uses the yaSSL
library instead. (Bug #74174, Bug #19717832)
Functionality Added or Changed
* Replication: The variable binlogging_impossible_mode has
been renamed binlog_error_action.
binlogging_impossible_mode is now deprecated. (Bug
#19507567)
* The new -DWITH_UBSAN=ON CMake option enables the
Undefined Behavior Sanitizer. This feature is supported
by GCC 4.9 and up, and Clang 3.4 and up. (Bug #19587393)
Bugs Fixed
* InnoDB: An ALTER TABLE operation raised an assertion.
When a foreign key object was removed from the dictionary
cache, an incorrect foreign key object was removed from
the rb-tree. (Bug #19908343)
References: This bug is a regression of Bug #18806829.
* InnoDB: In debug builds, setting the
innodb_limit_optimistic_insert_debug debug configuration
option to 1 would cause an infinite B-tree page split.
(Bug #19904003, Bug #74605)
* InnoDB: The dict_set_corrupted() function would attempt
to update the clustered index of the SYS_INDEXES data
dictionary table incorrectly. (Bug #19584379)
* InnoDB: Pages with a checksum value of zero were
incorrectly treated as empty pages. A page should only be
considered empty if its checksum value and LSN field
values are zero. (Bug #19500258, Bug #73689)
References: This bug is a regression of Bug #17335427.
* InnoDB: The InnoDB data dictionary was not updated when a
ALTER TABLE ... CHANGE COLUMN operation changed the case
of the column name. (Bug #19465984)
* InnoDB: A memory access violation caused
fts_optimize_thread and mysqld to terminate. (Bug
#19314480)
* InnoDB: A procedure, which was called from a function to
perform an operation on a temporary table, caused the
server to halt. (Bug #19306524)
* InnoDB: Attempting to shut down the server after starting
the server with innodb_force_recovery=6 would result in a
hang. (Bug #19265668, Bug #73341)
* InnoDB: A COMMIT operation related to full-text search
resulted in a segmentation fault. (Bug #18503734)
* InnoDB: If a database is named using uppercase letters on
a MySQL server with lower_case_table_names=2 (which is
default on Mac OS X), InnoDB stores the database name as
specified in SYS_TABLES and in lowercase on disk. During
crash recovery, the case mismatch resulted in a conflict
that would mark the tablespace .ibd file as missing. The
patch for this bug converts database names to lowercase
on crash recovery. (Bug #18412598, Bug #72043)
* InnoDB: In debug builds, the InnoDB Lock Monitor asserted
after a DROP TABLE operation, and the InnoDB Monitor
encountered an assertion in buf_page_get_gen. (Bug
#18062698, Bug #71343, Bug #18173184, Bug #68116)
* InnoDB: A CREATE TABLE operation that failed with
innodb_strict_mode=ON would succeed without printing a
warning with innodb_strict_mode=OFF. (Bug #17852083)
* InnoDB: For explicit cache coherency, a write barrier was
added to the head of os_thread_create_func(), and a read
barrier was added to before the assertion code in
rw_lock_free_func(). (Bug #13364876, Bug #62692, Bug
#18870970, Bug #72809)
* InnoDB: The MySQL 5.6.20 patch for Bug #16963396 / MySQL
Bug #69477 limited the size of redo log BLOB writes to
10% of the redo log file size. This limitation has been
relaxed. Redo log BLOB writes are now limited to 10% of
the total redo log size (innodb_log_file_size *
innodb_log_files_in_group).
As a result, innodb_log_file_size *
innodb_log_files_in_group should be 10 times larger than
the largest BLOB data size found in the rows of your
tables plus the length of other variable length fields
(VARCHAR, VARBINARY, and TEXT type fields). No action is
required if innodb_log_file_size *
innodb_log_files_in_group is already sufficiently large
or if your tables contain no BLOB data. (Bug #73707, Bug
#19498877)
* Partitioning: When multiple columns are used in KEY
partitioning, their order may help determine the
partition in which the row is placed. Changing this order
by means of an ALTER TABLE that uses ALGORITHM=INPLACE
can lead to inconsistency when placing rows in
partitions; in other words, a row inserted before such an
operation operation is placed in one partition, but the
same row inserted afterwards is placed in a different
one. For this reason, altering the order of a multicolumn
index online is no longer allowed when that index is also
used as the base for partitioning the table by KEY;
instead, you must use a copying ALTER TABLE to perform
the change. (Bug #17896265)
* Replication: When using a MySQL version that had been
compiled with the WITH_DEBUG option enabled, using
expire_logs_days to purge binary logs caused a restart to
crash the server. This problem arose after the fix for
Bug #17283409. The fix ensures that current_thd is
checked before calling DEBUG_SYNC(). (Bug #19553099)
* Replication: Sometimes the slave I/O thread leaves a
partial group in the current relay log, for example when
it is killed or stopped. After it is restarted, a new
relay log is created on rotation and a pair of
ROTATE_EVENT and FORMAT_DESCRIPTION_EVENT is replicated
from master and written into the new relay log. When
using a multi-threaded slave, problems such as error 1755
were encountered when applying the remaining part of the
group in the relay log. This fix ensures that if
MASTER_AUTO_POSITION is enabled, then the worker rolls
back the partial group, finishes its work, and then
applies the new complete copy of the group. If
MASTER_AUTO_POSITION is disabled, the worker does not
roll back the partial group. (Bug #19545298)
* Replication: When using row-based replication with
slave_type_conversions enabled, a binary log with more
than one Rows_log_event in succession caused a crash.
This was due to the temporary tables generated as part of
the slave_type_conversions process being released too
early. This fix ensures that the temporary tables are not
released too early, and also ensures that long
transactions do not cause an out of memory error. (Bug
#18770469, Bug #19704825)
* Replication: When using binary log files that had been
manually copied from the master, for example to avoid I/O
thread reading delay, the multi-threaded slave generated
error 1755. Because the Previous_gtid_log_event is logged
using the master's server_id and not the slave's
server_id, the previous events were not being skipped
correctly. This fix ensures that the events in
Previous_gtid_log_event are always skipped, regardless of
whether they are from the relay log (generated on the
slave) or from the binary log (generated on the master
and manually copied to the slave as the relay log). (Bug
#17812024)
* Replication: When replicating from an earlier version
MySQL master, such as version 4.1, checksums are not used
for events. Replicating to a slave running a newer
version of MySQL, such as version 5.6, which has
slave_sql_verify_checksum enabled by default meant that
the last 4 bytes of events from the older master were
being incorrectly interpreted as the checksum. A warning
is now generated and to avoid such a situation, set
slave_sql_verify_checksum=0 to disable checksums on the
slave. (Bug #17276183)
* Replication: When restarting MySQL with
relay_log_recovery enabled to recover from a crash, if
the SQL thread had never been started, the position from
which to start recovery was not correctly initialized
because Relay_Master_Log_File was missing. This fix
ensures that in such a situation each of the relay logs,
starting from the first relay log file, is searched for a
rotate event from the master, which specifies where
replication started from. This rotate event is then used
to set the SQL thread's Relay_Master_Log_File and
Relay_Log_Pos and recovery continues as normal. (Bug
#73039, Bug #19021091)
* Replication: When using GTIDs for replication and with
MASTER_AUTO_POSITION enabled, if a slave requested GTIDs
which had been already been purged by the master, the
master was sending all available GTIDs. This happened
because the master reads all available binary logs and
searches for a binary log which contains a GTID that is
not contained in the union of gtid_executed and
gtid_retrieved. If such a GTID is found, the master
starts sending the information starting from that
location. In a situation where the union of the slave's
gtid_executed and gtid_retreived set did not contain the
master's gtid_purged set, the slave would expect GTIDs
which had already been purged by the master. This fix
ensures that in such a situation, the slave's I/O thread
is aborted with an error "Master has purged binary logs
containing GTIDs that the slave requires.". (Bug #73032,
Bug #19012085)
* Replication: A kernel mutex contention was being caused
because mysqlbinlog was calling localtime() for every
event read, which in turn called stat(/etc/localtime).
This fix ensures that mysqlbinlog uses localtime_r(),
which is optimized to store the read only timezone
internal structure. This also means that mysqlbinlog now
establishes the time zone at the beginning of processing
and you can not change it during processing. This is the
same behavior as MySQL server. (Bug #72701, Bug
#18808072)
* Replication: The global scope for the sql_log_bin system
variable has been deprecated, and this variable can now
be set with session scope only. The statement SET GLOBAL
SQL_LOG_BIN now produces an error. It remains possible
for now to read the global value of sql_log_bin, but you
should act to remove from your applications any
dependencies on reading this value, as the ability to do
so will be removed in a future MySQL release. (Bug
#67433, Bug #15868071)
* InnoDB table checksum calculation could yield an
incorrect result if the value of the
innodb_checksum_algorithm system variable was modified
during the operation. (Bug #19931177)
* GROUP BY on a CHAR(0) NOT NULL column could lead to a
server exit. (Bug #19660891)
* With the validate_password plugin activated and
dictionary lookups enabled, passing a user-defined
variable to PASSWORD() could cause a server exit. (Bug
#19388163)
* Debian packages were built using the complex set of
character sets, not the all set of character sets. (Bug
#19363801)
* mysqldump failed to report a disk-full error if the dump
destination was located on an NFS mount. (Bug #18817867)
* InnoDB permitted a foreign key to be created referencing
a parent table for which the user did not have sufficient
privileges. (Bug #18790730)
* Copying InnoDB tables containing full-text columns from
Windows to Linux caused a server exit on Linux during
full-text index initialization. (Bug #18285007)
* On Windows, the replace utility did not work. (Bug
#16581605)
* On CentOS 6, specifying a relative path name for the
--socket option caused MySQL startup script failure. (Bug
#74111, Bug #19775856)
* In Solaris 11.2, dtrace -V output changed from Sun D to
Oracle D, causing detection of DTrace availability to
fail during MySQL configuration. (Bug #73826, Bug
#19586917)
* mysql_config --libs_r produces output containing link
flags for libmysqlclient_r, even though that library was
removed in MySQL 5.5 and replaced with a symlink to the
underlying libmysqlclient library. The output now refers
directly to libmysqlclient. (The implication is that it
is no longer necessary to maintain the symlink for the
sake of being able to use mysql_config --libs_r.) (Bug
#73724, Bug #19506315)
* For statement digest calculation, the Performance Schema
failed to recognize signed literal numbers as values
representable by ? and created multiple digests for
statements that should have had the same signature. Now
all instances of unary plus and unary minus followed by a
number reduce to ? in digests. (Bug #73504, Bug
#19389709)
* Compilation on Windows using Visual Studio 2013 resulted
in "unresolved external symbol" errors. (Bug #73461, Bug
#19351573)
* OLD_PASSWORD() is deprecated, but no warning was produced
when it was invoked. (Bug #73376, Bug #19285177)
* Certain queries for which subquery materialization or
UNION DISTINCT was used together with a hash index on a
temporary table could produce incorrect results or cause
a server exit. (Bug #73368, Bug #19297190)
* The IS_FREE_LOCK() and IS_USED_LOCK() function
implementations contained a race condition due to which
they could access freed memory when a user lock was
concurrently checked and freed. Accessing freed memory
could result in an incorect function return value or
server exit. (Bug #73123, Bug #19070633)
* LOCK TABLES sometimes acquired an insufficiently strong
lock for implicitly locked tables. (Bug #72887, Bug
#18913551)
* The ENABLED_LOCAL_INFILE CMake option incorrectly was
enabled by default. (Bug #72106, Bug #18448743)
* Use of ODBC-format date literals could produce incorrect
query results. (Bug #69233, Bug #16812821)
* mysql_install_db ignored option files in the default
locations. (Bug #68807, Bug #16570238)
* mysql_setpermission failed to properly quote user names
in SQL statements that it generated. (Bug #66317, Bug
#14486004)
On Behalf of the MySQL/ORACLE RE Team,
Vishal Chaudhary
--
MySQL Announce Mailing List
For list archives: http://lists.mysql.com/announce
To unsubscribe: http://lists.mysql.com/announce