The MySQL Development team is very happy to announce that MySQL 8.0.24 is now available for download at dev.mysql.com. In addition to bug fixes there are a few new features added in this release. Please download 8.0.24 from dev.mysql.com or from the MySQL Yum, APT, or SUSE repositories. The source code is available at GitHub. You can find the full list of changes and bug fixes in the 8.0.24 Release Notes. Here are the highlights. Enjoy!
Optimizer
Transform correlated scalar subqueries (WL#13520) This work by Dag Wanvik and Chaithra Gopalareddy implements the transformation of a correlated scalar subquery into a derived table. The transformation avoids materializing several times for the subquery . The derived table synthesized from the subquery is grouped on the column present in the correlated predicate. The correlated predicate is lifted out and used to outer join with the derived table resulting in the selection of the right group to match up the outer row. The derived table is therefore materialized only once.
GIS
Cast between geometry types (WL#14127) This work by Magnus Rushfeldt adds the capability to use an explicit CAST to convert geometries into other compatible types, for example from MULTIPOINT to LINESTRING and from LINESTRING to MULTIPOINT.
ST_Collect – Spatial aggregations (WL#13454) This work by Torje Digernes implements a new function, ST_Collect(), that aggregates geometries into multigeometries. A use case for this is to make a single point cloud (multipoint) from a column of points.
ST_LineInterpolatePoint (WL#14160) This work by Lise Hove implements a new function, ST_LineInterpolatePoint(linestring, fractional_distance), that takes a linestring and a fractional distance in the range [0.0, 1.0] and returns the point along that linestring at that distance from the starting point. For example one can use ST_LineInterpolatePoint() to find points along a road or along a recording of a GPS tracked vehicle. The halfway point is found by ST_LineInterpolatePoint(<line>, 0.5).
ST_LineInterpolatePoints (WL#14161) This work by Lise Hove implements a new function, ST_LineInterpolatePoints(linestring, fractional_distance), that takes a linestring and a fractional distance in the range [0.0, 1.0] and returns the multipoint consisting of points along that linestring at that distance from the starting point or previous point (i.e., a set of points along the linestring at that distance). For example one can use ST_LineInterpolatePoints() to find points along a road or along a recording of a GPS tracked vehicle. The points where we can say that the user has traveled 10%, 20%, etc. of the way are found by ST_LineInterpolatePoints(<linestring>, 0.1).
ST_PointAtDistance (WL#14178) This work by Lise Hove implements a new function, ST_PointAtDistance(linestring, distance), that takes a linestring and a distance in the length unit of the spatial reference system and returns the point along that linestring at that distance from the starting point. For example one can use ST_PointAtDistance() to find points along a road or along a recording of a GPS tracked vehicle. The point 400 meters from the start is found by ST_PointAtDistance(<line in SRS using meters as length unit>, 400).
InnoDB
Configuration to control clone donor timeout after network failure (WL#14522) This work by Debarun Banerjee adds the system variable clone_donor_timeout_after_network_failure. The default does not change (5 minutes) but can now be increased up to 30 minutes. It defines the amount of time in minutes the donor allows for the recipient to reconnect and restart a cloning operation after a network failure. During clone, if there is a short network outage between donor and recipient servers, the donor waits for network to restore, the recipient to reconnect and resume cloning. The donor wait time currently is fixed at 5 minutes. It can sometimes help to wait a little longer. This work fixes Bug#102103.
Performance Schema
P_S memory instrumentation for Data dictionary and runtime code (WL#14079) This work by Sivert Sørumgård makes some additions and changes to the memory instrumentation.
It adds two new memory instruments to account for memory allocated to data dictionary infrastructure and database objects (memory/sql/dd::infrastructure and dd::objects). In addition, some instruments were renamed for improved uniformity of instrument naming. Affected instrument names are grouped using a key prefix in the same style as C++ namespaces. For example, error-related instruments use an error:: prefix and partition-related instruments use a Partition:: prefix.
Replication
Make skip-slave-start a global, persistable, read-only system variable (WL#14450) This work by Pedro Figueiredo transforms the referenced command line parameter into a global, persistable, read-only system variable. The purpose is to allow the control over whether or not the replica threads start upon server restart to be extended to MySQL users and MySQL privilege infra-structure.
Group Replication
Make IP Allowlist modifiable while GR is running (WL#14563) This work by Luís Soares allows users to change the group_replication_ip_allowlist on a group member while GR is running. The purpose is to avoid the need for GR restart when the IP allow list is updated.
Router
TLS support in mysql-server-mock (WL#11182) This work by Jan Kneschke extends the mysql-server-mock test framework to allow for testing TLS options. I.e. it now allows to enable TLS support and to set supported ciphers in the test-file. It also allows to detect if a valid X509 certificate was sent and match its CN and it allows to fail authentication.
Accept connections only if destinations are available (WL#13327) This work by Tomasz Stepniak changes the router to only accept connections if the destinations are available. Before this change, the MySQL Router bound the incoming socket at startup and kept it open unconditionally. This made load-balancers believe that the Router was able to handle traffic and forwarded MySQL connections to the Router which then fails because the destinations are not available.
Change default xproto port (WL#14327) This work by Andrzej Religa changes the default port for the X Protocol to ports in the User Ports range.
MTR Testsuite
Migrate optimizer tests from main suite to run with default engine InnoDB (WL#11707 and WL#11708) This work by Mohan Kumar converts Optimizer tests from assuming the MyISAM storage engine to assuming the InnoDB storage engine. This work is part of a larger effort to allow the MTR test suite to run on a server that is built without the MyISAM engine.
Other
Migrate Keyring APIs to Components (WL#13446) This work by Harin Vadodaria converts the keyring functionality from being implemented as plugins (MySQL legacy) to being implemented as components. At present, keyring functionality in MySQL server is available through plugin APIs. MySQL server provides plugin service for plugins to call these APIs. This work aims at converting them to component services.
Make password hash rounds configurable for caching_sha2 (WL#14281) This work by Ivo Roylev introduces a new read-only system variable to specify the number of hash rounds. The new variable called caching_sha2_password_digest_rounds sets the default value for the caching_sha2_password password plugin.
Make the client get a better error message on wait_timeout timeout (WL#12999) This work by Kristofer Älvring improves the error message given back to the client in the case when the server closes the connection due to the configured wait_timeout. The new, improved message is “The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior” (ER_CLIENT_INTERACTION_TIMEOUT). This bug fixes Bug#93240.
Deprecation and Removals
Change named_pipe_full_access_group default on Windows (WL#12671) This work by Daniel Blanchard changes the default for the named_pipe_full_access_group system variable from “everyone” to “no-one” which is secure by default. The original value of ‘*everyone*’ as the default for the named_pipe_full_access_group system variable was chosen in version 8.0.14 to avoid breaking existing third party named pipe connector code, but after deprecating/warning about the use of the ‘everyone’ group as the named_pipe_full_access_group value in 8.0.15, it is now time to make named pipe connections secure by default.
Thank you for using MySQL!