CMake
support was added for compiling with Developer Studio 12.5. (Bug #82249, Bug #24303829, Bug #81274, Bug #23212938)
Specifying an empty value for the
--port
option (for example,--port=
,--port=""
) is now deprecated and results in a warning. An empty value will be an error in MySQL 8.0. (Bug #23023457, Bug #80903)
The bundled Protobuf sources (under the
extra
directory) were upgraded from version 2.6.0 to 2.6.1. (Bug #81280, Bug #23213376)
The
INFORMATION_SCHEMA
INNODB_LOCKS
andINNODB_LOCK_WAITS
tables are now deprecated, to be removed in MySQL 8.0, which provides replacement Performance Schema tables. (WL #9275, WL #6657)
The
sys
schema now has aquote_identifier()
function that, given a string argument, produces a quoted identifier suitable for inclusion in SQL statements. (Bug #22011361, Bug #78823)Output from the
sys
schemadiagnostics()
procedure now includes theTls_version
column from themysql.slave_master_info
system table.
mysql-test-run.pl now has a
--manual-boot-gdb
option that is similar to--boot-gdb
but attaches the debugger to the server during the bootstrapping process, permitting the use of a remote debugger. (Bug #23090633)
The
Protobuf
decoder class limited the number of nested objects to 50 (the default value). (Bug #23707238, Bug #82025)The statement
list_objects
incorrectly reported a table as a collection. (Bug #23631240)When using SSL, only TLSv1 connections were being accepted. The fix ensures that all TLS versions supported by the server are accepted. (Bug #23524243)
The
create_collection
statement created a collection table with a unique key index on the'_id'
column instead of on the primary key. (Bug #23284569)Attempting to list objects using the
list_objects
statement without explicitly setting the database name resulted in the collection being incorrectly classified as a table. (Bug #23205895, Bug #81248)Tests relating to X Plugin have been moved to
rapid/plugin/x/test
. (Bug #23151414)Setting protocol related variables such as
net_read_timeout
,net_write_timeout
, andnet_retry_count
, from a session using X Protocol returned unexpected results. The fix ensures that protocol variables are set only from sessions using MySQL Protocol, and errors are correctly detected for sessions using X Protocol.
-
The
%global compatver
value for RPM packages for RHEL/OEL and Fedora releases was updated from 5.6.25 to 5.6.31. (Bug #23038018)References: See also: Bug #22980983.
-
Performance: A flaw in the allocation of memory for appending string values caused some operations to be performed slowly, including creation of tables having generated columns and inserts of large values into
JSON
columns. (Bug #80556, Bug #22843444)References: See also: Bug #22157531, Bug #22239803.
InnoDB: Full-text search auxiliary tables could be dropped by one session while being access by another. (Bug #23742339)
InnoDB: Selecting full-text index information schema tables for a deleted table caused a segmentation fault. (Bug #23479595)
InnoDB: A tablespace operation did not properly update the
SYS_VIRTUAL
system table. (Bug #23325659)InnoDB: Rollback of a full-text index synchronization operation raised an assertion. The rollback operation attempted to acquire a mutex still held by the background synchronization thread. (Bug #23320569)
-
InnoDB: After compressing a table, an incorrect data length was passed to an internal tablespace encryption function, causing an assertion. (Bug #23279788)
References: This issue is a regression of: Bug #22956469.
InnoDB: An R-tree page lock placed during a search operation prevented an undo operation within the same transaction from merging pages. (Bug #23241575)
InnoDB: A bulk load insert of a record with a compressed size greater than half of the compressed page size resulted in infinite B-tree page splitting when compressing the uncompressed page. (Bug #23120933)
-
InnoDB: A lock order violation related to
InnoDB
full-text search caused errors and raised an assertion. (Bug #23120005)References: This issue is a regression of: Bug #22996488.
InnoDB: In read-only mode,
InnoDB
attempted to set a corrupt bit in theSYS_INDEXES
system table. In read-only mode, the corruption should only be marked in memory. (Bug #23077748)-
InnoDB:
InnoDB
attempted to materialize non-key virtual generated columns that were not required for partitioning. (Bug #23037025)References: This issue is a regression of: Bug #21864838.
InnoDB: An insert operation on a table containing virtual and spatial indexes raised an assertion due to an invalid parent path encountered during page splitting. (Bug #23008863)
InnoDB: An
ALTER TABLE
operation on a table with an indexed virtual column raised an assertion. (Bug #22965271)InnoDB: Adding or dropping a virtual generated column could raise an assertion due to a table handle held by an active memcached connection. (Bug #22922527)
InnoDB: A full-text query that involved a large number of records exceeded the result cache limit and caused a server exit. (Bug #22709692, Bug #80296)
InnoDB:
InnoDB
did not block the creation of a foreign key constraint with referential actions on the base column of a stored generated column. (Bug #22687023, Bug #80304)InnoDB: The optimizer failed to mark the columns required for
MATCH
function evaluation when the secondary index used for the full-text query was not chosen by the optimizer. (Bug #22679209, Bug #80298)InnoDB: In
READ COMMITTED
isolation level,InnoDB
unnecessarily acquired thelock_sys
mutex atCOMMIT
for a transaction block consisting of read-onlySELECT
statements. Thanks to Zhai Weixiang for the patch. (Bug #22617328, Bug #76728)InnoDB: Setting
innodb_monitor_enable
toall
did not enable all counters. (Bug #22576241, Bug #80083)InnoDB:
InnoDB
now permits defining a foreign key constraint with a cascading referential action on the base column of an indexed virtual column, and defining cascading referential actions on non-virtual foreign key columns that are explicitly included in a virtual index. (Bug #22469130, Bug #79772)InnoDB: An assertion was raised during rollback of an
ALTER TABLE
operation that dropped and added a secondary index. (Bug #22005726)Partitioning: In some cases, an issue with partition pruning being attempted a second time during optimization after all partitions had already been pruned at parsing time led to an assert. (Bug #23194259)
Replication: A lack of cleanup in
binlog.binlog_index
led to sporadic failures in thei_binlog.binlog_index_crlf_check
test. (Bug #23645554)Replication: Replication slaves could exit trying to apply an
UPDATE
row event containing virtual generated columns received from a master that was set tobinlog_row_image=minimal
. (Bug #23604483)Replication: After upgrading from MySQL 5.6, MySQL 5.7 slaves were not handling replication channels correctly. This was due to the upgrade procedure inverting the order of two fields of the
mysql.slave_master_info
table (Channel_Name
andTls_version
). The fix avoids this inversion and adds a check to ensure that theChannel_name
is correctly used as the primary key. (Bug #23180202)Replication: The
i_rpl.rpl_relay_log_index_inconsistency
test was not preserving the slave server state in certain situations. The fix changes the test to use start_slave.inc instead. (Bug #22850741)Replication: When dealing with large GTID sets (bigger than 64 kilobytes when converted to a string), the
replication_connection_status
field was truncating theRECEIVED_TRANSACTION_SET
. The fix updatesreplication_connection_status
to correctly display large GTID sets, and also updates various GTID set related functions to avoid any future problems with large GTID sets. (Bug #22369630)Replication: On a GTID-based replication slave running with
--gtid-mode=ON
,--log-bin=OFF
and using--slave-skip-errors
, when an error was encountered that should be ignoredExec_Master_Log_Pos
was not being correctly updated, causingExec_Master_Log_Pos
to loose synchrony withRead_master_log_pos
. If aGTID_NEXT
was not specified, the slave would never update its GTID state when rolling back from a single statement transaction. TheExec_Master_Log_Pos
would not be updated because even though the transaction was finished, its GTID state would show otherwise. The fix removes the restraint of updating the GTID state when a transaction is rolled back only ifGTID_NEXT
is specified. (Bug #22268777)Replication: Uncleared information related to user-defined variables could result in a server exit for
DROP TEMPORARY TABLE
statements. (Bug #22157118)Replication: A server initialized with
--gtid-mode=ON
and--enforce-gtid-consistency=ON
created a large and unnecessary GTID set. The fix adjusts the initialization process to eliminate the creation of these GTID sets. (Bug #22102456, Bug #78972)Replication: An incorrectly formed
server_uuid
read in fromauto.conf
could cause an unexpected halt. (Bug #21936933)Replication: After issuing a
PURGE BINARY LOGS
statement, if the binary log index file was not available, for example because it had been opened by another application such as MEB, the server could stop unexpectedly. Although this situation was rare, the handling has been made more robust to avoid unexpected halts and more informative errors are provided. (Bug #20381055)Replication: The constructor of
Rows_event
has been improved to not decode the supplied row event one byte at a time. Thanks to Davi Arnaut for the contribution. (Bug #82003, Bug #23699294)Replication: A new function has been added to the channel service interface to get a channel's
retrieved_gtid_set
. (Bug #81694, Bug #23519893)Replication: The initialize process now checks if the binary log is enabled while processing a compiled statement. In such cases it disables binary logging, which avoids filling the binary log unnecessarily (and generating GTIDs) for MySQL initialization statements. (Bug #81628, Bug #23490641)
Replication: Slaves running MySQL version 5.7.11 and later were always using SSL/TLS when the server supported it, regardless of the
MASTER_SSL
option. This was due to the addition of the--ssl-mode
option, which defaults to preferring an SSL connection. The fix ensures that slaves do not use SSL whenMASTER_SSL=0
. (Bug #81223, Bug #23197529)Replication: The mysql-test-run.pl option
--skip-rpl
now correctly skips all replication tests. Thanks to Daniel Black for the contribution. (Bug #80894, Bug #23021140)Replication: When
--gtid-mode=OFF
, issuing aPURGE BINARY LOGS TO
statement causes the system to read the whole file. Depending on the size of the file this could cause the server to stall for a few seconds. This was due to the way binary log files were being searched for thefile
Previous_gtids
value. The fix adds an optimization to stop the reading of the binary log file if it is supposed only to read the lost GTIDs and aPrevious_gtids
event is found. (Bug #80889, Bug #23054591)Replication: When using row-based replication and
InnoDB
, replication slaves reverted to using an older locking scheme when a transaction had already acquired anAUTOINC
lock related to aLOAD FILE
orINSERT ... SELECT
type of statement, reducing replication slave performance. The fix ensures thatsql_command
is set correctly for any of the DML events such asWRITE_ROWS_EVENT
,UPDATE_EVENT
, andDELETE_EVENT
. (Bug #79324, Bug #22247668)Replication: A MySQL version 5.5 slave does not have a
server_uuid
and replication identified servers by theirserver_id
. Starting from MySQL version 5.6, replication masters detected a zombie dump thread based only on a slave'sserver_uuid
value, under the assumption that each slave has a unique UUID. Connecting a MySQL 5.5 slave to a MySQL 5.6 and later master meant that the master was unable to detect zombie dump threads that were created to serve slaves running versions older than MySQL 5.6. The fix ensures that a master now first checks if a slave has aserver_uuid
set. If it is set, zombie dump thread detection happens based on the slave's UUID. If a slave'sserver_uuid
is not set, zombie dump thread detection happens based onserver_id
. (Bug #77195, Bug #21179199)-
Replication: With
slave_skip_errors
enabled there were still special cases when slave errors were not being correctly ignored. For example:When opening and locking a table failed.
When field conversions failed on a server running row-based replication.
In these cases the error was considered critical and it was not respecting the state of
slave_skip_errors
. The fix ensures that withslave_skip_errors
enabled, all errors reported during applying a transaction are correctly handled. This means that in such a set up, upon receiving an error with thelog_warnings
option set to greater than 1, if the error can be ignored then the warning is printed into the error log and the server continues as it does in the case of other ignored errors. (Bug #70640, Bug #17653275) -
Replication: When using statement-based or mixed binary logging format with
--read-only=ON
, it was not possible to modify temporary tables. (Bug #62008, Bug #12818255)References: See also: Bug #14294223, Bug #16561483.
Solaris: The CMake configuration was too aggressive in making symbols invisible, resulting in link problems with GCC 5.3 on Solaris. (Bug #23344916, Bug #81593)
Solaris: On Solaris, a misaligned memory buffer could cause a server exit when selecting from the
global_status
Performance Schema table. (Bug #81065, Bug #23097305)MySQL Server upgrades performed using RPM packages failed when upgrading from MySQL 5.6 Community to MySQL 5.7 Community or MySQL 5.6 Commercial to MySQL 5.7 Commercial. (Bug #23736787)
On CentOS, mysqld installed from a MySQL Community distribution failed to start if a
my.cnf
file with nodatadir
value specified was used. (Bug #23721277, Bug #82049)The
-DWITH_EDITLINE=system
CMake option failed with recent versions of theeditline
library. (Bug #23708332, Bug #25391997, Bug #84501)Executing prepared statements with the
audit_log
plugin installed could cause a server exit. (Bug #23699991)The
sys
schemaps_trace_statement_digest()
procedure failed for statements not supported byEXPLAIN
, for statements for whichEXPLAIN
could not find tables, and for statements with no digest found during the monitored period. (Bug #23621189)-
On RPM-based systems, it is now easier to install multiple client library versions, such as for the case that you want to maintain compatibility with older applications linked against previous libraries. To install an older client library, use the
--oldpackage
option with rpm. For example, to installmysql-community-libs-5.5
on an EL6 system that haslibmysqlclient.20
from MySQL 5.7, use a command like this:rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
(Bug #23605713, Bug #81384)
A
SELECT
Performance Schema tables when an internal buffer was full could cause a server exit. (Bug #23550835, Bug #23298025, Bug #81464)The code for reading character set information from Performance Schema statement events tables (for example,
events_statements_current
) did not prevent simultaneous writing to that information. As a result, the SQL query text character set could be invalid, which could result in a server exit. Now an invalid character set causesSQL_TEXT
column truncation. (Bug #23540008)An error message spelling error was corrected. Thanks to Derek Jones for the patch. (Bug #23525874, Bug #81713)
In the Performance Schema, allocating a record when a buffer was full could lead to a server exit. (Bug #23515302)
-
Several issues for Debian/Ubuntu packages were fixed:
The mysql-systemd-start script in the
mysql-community-server
package depended on mysqladmin for theping
command. Packages including this script now are made dependent on themysql-community-client
package.The systemd service still used mysqld_safe. It now uses mysqld --daemonize.
Entering a blank
root
password during the installation process caused installation to hang.MySQL upgrades failed to create a missing data directory.
In addition, CMake-generated packaging for Debian/Ubuntu packages was refactored for improved maintainability.
(Bug #23501369, Bug #81647, Bug #22972977, Bug #21236550, Bug #21228746, Bug #22833016, Bug #23582336)
A buffer overflow in the
regex
library was fixed. (Bug #23498283)Upgrading from native MySQL 5.6 Debian/Ubuntu packages to Oracle-supplied MySQL 5.7 packages caused server restart failures. (Bug #23498230)
Audit log filtering against the user was performing comparisons against
USER()
, notCURRENT_USER()
. (Bug #23344762, Bug #81591)-
After upgrading only the server using RPM packages, the server could fail to start, complaining about a bad
errmsg.sys
file. (Bug #23338603)References: This issue is a regression of: Bug #18518216.
-
Several issues were addressed in the
sys
schema stored procedures that show enabled or disabled Performance Schema setup:Enabled and disabled accounts were shown as
host@user
, notuser@host
.Disabled users in
ps_setup_show_disabled
were calledenabled_users
.ps_setup_show_enabled()
showed disabled objects.setup_actors
content was not filtered (all rows were returned whether the actor was enabled or disabled).Output order is more deterministic.
(Bug #23335880, Bug #81564, Bug #22066096, Bug #78874)
Upgrading from native Ubuntu 5.7.12 packages to MySQL 5.7.13 packages failed with conflict messages. (Bug #23327563)
For debug builds, the server exited abnormally if a shutdown command was issued while the
audit_log
plugin was loaded and an active connection existed. (Bug #23310864)The server could fail to interpret expired passwords as expired. (Bug #23291841)
Certain arguments to
NAME_CONST()
could cause a server exit. (Bug #23279858)For unit-testing with the MySQL test suite, the make unit-test command is no longer available. The ctest program should be used instead. See the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html. (Bug #23273434, Bug #81389)
Audit log plugins (including query rewrite plugins, which use the audit API) were being acquired and released per statement, negatively affecting scalability. To improve performance, these plugins now are acquired once and released only when the connection ends. (Bug #23236404, Bug #81298)
The
-fexpensive-optimizations
option to GCC caused ARM64 and PowerPC builds to compute floating-point operations slightly differently from other platforms. CMake now checks for this problem and disables the option as necessary. (Bug #23046775)The
test_service_sql_api.test_session_general_log
test case now cleans up thegeneral_log
table by truncating it at the end of the test. Thanks to Daniel Black for the patch. (Bug #23021111, Bug #80895)Lines written to the error log had no space separating the timestamp and thread ID columns if the thread ID took five or more characters. (Bug #23005009, Bug #80854)
For the
innodb_buffer_stats_by_schema
andinnodb_buffer_stats_by_table
sys
schema views, thepages_hashed
andpages_old
columns were incorrect. Thanks to Tsubasa Tanaka for the patch. (Bug #22988461, Bug #80833)An incorrect result could be returned for a query using a merged derived table or a view when compared to a similar query using a base table directly, if the query included a
WHERE
condition in a scalar subquery inside aHAVING
condition of the main query block. (Bug #22967439)ST_GeomFromGeoJSON()
treatedJSON
NULL
as invalid input. Now it treatsJSON
NULL
as SQLNULL
and thus returns SQLNULL
forJSON
NULL
input. (Bug #22930020, Bug #80712)For the
host_summary_by_statement_latency
andx$host_summary_by_statement_latency
sys
schema views, themax_latency
column was incorrect. (Bug #22848110, Bug #80569)ST_Distance()
could raise an assertion forNULL
return values. (Bug #22760390)In the absence of SQL_CALC_FOUND_ROWS,
FOUND_ROWS()
for aUNION
statement always returned the actual number of rows found even whenLIMIT
was present. (Bug #22602381, Bug #80148)A statement containing a format specifier resulted in a server exit when the query rewrite plugin tried to log the statement. (Bug #22601485)
With the query cache enabled, executing a prepared statement with
CURSOR_TYPE_READ_ONLY
and then again withCURSOR_TYPE_NO_CURSOR
caused the server to return an error. (Bug #22559575, Bug #80026)mysql_real_connect()
was not thread-safe when invoked with theMYSQL_READ_DEFAULT_FILE
orMYSQL_READ_DEFAULT_GROUP
option enabled. (Bug #22322504, Bug #79510)With GTIDs enabled,
XA COMMIT
on a disconnected XA transaction within a multiple-statement transaction raised an assertion. (Bug #22173903)The
sys
schemacreate_synonym_db()
function failed if the synonym name was a reserved word or contained backtick (`
) characters. (Bug #22011361, Bug #78823)The
sys
schemahost_summary
view could fail with a division-by-zero error. (Bug #21970078)-
The GCC workaround for compiling on ARM64 added by Bug #21552524 is needed only for GCC before 5.2.1. (Bug #21845828)
References: See also: Bug #21552524.
The
sys
schemaformat_path()
function replaced substrings of the path name argument without verifying that the substrings were delimited by path name separators. Replacement now works correctly, including on Windows. A consequence is that backslashes in Windows path names are no longer converted to forward slashes in the result. (Bug #21512106)MySQL now supports compiling using the GCC
__atomic
builtins introduced in GCC 4.7 that permit a more efficient implementation of the MySQL atomics API. These__atomic
builtins are only used for platforms where the old GCC__sync
builtins are not available, such as PowerPC where the server otherwise would not build. (Bug #21221500)If a stored function updated a view for which the view table had a trigger defined that updated another table, it could fail and report an error that an existing table did not exist. (Bug #21142859, Bug #76808)
mysql_upgrade failed to upgrade the
sys
schema if asys
database directory existed but was empty. (Bug #81352, Bug #23249846, Bug #22875519)Protobuf is currently used only by the X Plugin, but MySQL builds built the
protobuf
libraries and executables even if X Plugin building was disabled with-DWITH_RAPID=0
. (Bug #81066, Bug #23097750)A compilation error was corrected for a
make_link()
call when compiling in C++11 mode. Thanks to Daniel Black for the contribution. (Bug #80996, Bug #23080289)Two mysql-test-run.pl tests (
ctype_gb18030_binlog
andctype_ldml
) failed to produce repeatable output due to improper cleanup. Thanks to Daniel Black for the patch. (Bug #80896, Bug #23021095)MySQL failed to build with GCC 6 using the default mode for C++ of
-std=gnu++14
. TheCMake
configuration has been adjusted to explicitly set the mode to-std=gnu++03
for GCC 6. (Bug #80371, Bug #22732697)Ubuntu packages create the
root
user account using theauth_socket
authentication plugin to achieve secure-by-default installation if installation was done with a blankroot
password. However,auth_socket
was being used even if the password was not blank. (Bug #80137, Bug #22594846, Bug #23321113, Bug #81518)Compiling the
InnoDB
memcached plugin did not work on some platforms where MySQL was configured using-DWITH_LIBEVENT=system
, forlibevent
version 2.0 or higher. (Bug #80073, Bug #22573379, Bug #23567441)The client-side plugin deinitialization function signature was changed from
int (*deinit)()
toint (*deinit)(void)
to avoid warnings when compiling with-Wstrict-prototypes
. (Bug #78177, Bug #21680094, Bug #81419, Bug #23282498)