Quantcast
Channel: MySQL Forums - Announcements
Viewing all 1041 articles
Browse latest View live

MySQL Enterprise Backup 3.12.5 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Enterprise Backup v3.12.5, a new version of the online MySQL backup
tool, is now available for download from the My Oracle Support (MOS) website
as our latest GA release. MySQL Enterprise Backup is a commercial
extension to the MySQL family of products.

A brief summary of the changes in MySQL Enterprise Backup (MEB)
version 3.12.5 is given below.

Changes in MySQL Enterprise Backup 3.12.5 (2020-01-24)
Bugs Fixed
     * A restore operation for a TTS backup failed if the
       backed-up server has ANSI_QUOTES
       https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes
       as one of its SQL modes, as specified in its
       system variable sql-mode. (Bug #28979134)


On Behalf of MySQL Release Engineering Team,
Tvarita Jain 

MySQL Enterprise Backup 4.1.4 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Enterprise Backup v4.1.4, a new version of the MySQL backup tool, is
now available for download from the My Oracle Support (MOS) website
as our latest GA release. This release will be available on eDelivery (OSDC)
after the next upload cycle. MySQL Enterprise Backup is a commercial
extension to the MySQL family of products.

MySQL Enterprise Backup 4.1.4 only supports MySQL 5.7.
For MySQL 5.6 and earlier, use MySQL Enterprise Backup 3.12.
For MySQL 8.0, use MySQL Enterprise Backup 8.0.

A brief summary of the changes in MySQL Enterprise Backup (MEB)
version 4.1.4 is given below.

Changes in MySQL Enterprise Backup 4.1.4 (2020-01-24)


* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed


* When mysqlbackup fails to connect to a server, the
warning returned by mysqlbackup now includes the hostname
and port number for TCP connections, and the socket
information for socket connections. This is particularly
helpful for a Group Replication setup, for which
mysqlbackup might attempt to connect to more than one
host. (Bug #30040027)

* Before the current release, when backing up a server that
used the keyring_okv
( https://dev.mysql.com/doc/refman/5.7/en/keyring-okv-plugin.html )
plugin for InnoDB table encryption, mysqlbackup
must not be run by a sudo user of its operating system.
This restriction has now been removed. (Bug #29020232)

* A new option, --lock-wait-retry-count, can now be used to
specify the maximum number of retries to be attempted by
mysqlbackup after the FLUSH TABLES WITH READ LOCK
statement, issued during the final stage of a backup to
temporarily put the database into a read-only state,
fails due to a timeout. See the description of the option
for details. (Bug #26008480)

* The --uncompress option is now supported for the extract
operation: Files from a compressed single-file backup can
now be extracted and uncompressed with a single command.

Bugs Fixed


* A backup failed for a server containing encrypted InnoDB
tables when mysqlbackup was connected to it with --socket
option. It was because mysqlbackup did not pass the value
of --keyring-migration-socket to the keyring migration
server; this fix makes mysqlbackup pass the option
whenever it connects to the server to be backed up with a
Unix socket or Windows named pipe. (Bug #30082039)

* A compressed and encrypted single-file backup was
sometimes corrupted if the backed-up server was
configured with innodb_file_per_table=OFF. (Bug
#29798621)

* Backups on busy servers failed due to redo log
overwrites, even when the redo log size was big. It was
actually caused by a costly but unnecessary check for
relay log overwrites, which has been removed by this fix.
(Bug #29526337)

* When tables were altered in some ways during backup (for
example, renamed, deleted and then replaced by tables of
the same names, and so on), mysqlbackup reported success
for the backup, but the backup could not be restored.
This fix makes sure all those cases of table alterations
are properly handled by mysqlbackup, so the backup can be
restored. (Bug #29462340)

* When backing up a server that used the keyring_okv
( https://dev.mysql.com/doc/refman/5.7/en/keyring-okv-plugin.html )
plugin for InnoDB table encryption, if the
--host, --user, and --port options were not specified
with the mysqlbackup command via the command line or a
configuration file, the backup failed. It was because in
that case, mysqlbackup had no values for those options it
could use to connect to the server that took care of
keyring operations. With this fix, default values are now
set, so that mysqlbackup connects to the server on
localhost as root and on port 3306 for keyring operations
when those options are not specified. (Bug #29015923)

* A restore operation for a TTS backup failed if the
backed-up server has ANSI_QUOTES
( https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes )
as one of its SQL modes, as specified
in its system variable sql-mode. (Bug #28979134)

* Attempts to extract binary log files from a compressed
backup failed with a No such file or directory error when
the size of the binary log files on the backed up server
was greater than 16MB. (Bug #28787312)

* After restoring an incremental backup taken from a MySQL
Community Server with encrypted InnoDB tables, the
keyring file of the restored server became corrupted, so
the server could not be started. (Bug #28422191)

* During the InnoDB buffer pool dump in a backup operation,
mysqlbackup sometimes reported failure for the dump while
it was actually still in progress. The fix prevents the
problem by improving the way mysqlbackup checks for the
status of the dump. (Bug #27185901)

* mysqlbackup tried to connect to a remote host specified
by the --host option, while it was supposed to ignore the
option (see Connection Options
( https://dev.mysql.com/doc/mysql-enterprise-backup/4.1/en/connection-options.html )
for details). With this fix, the option is now ignored.
Note
As a side-effect of this change, on Unix-like platforms,
mysqlbackup command that used the --host option now needs
to use the --protocol=TCP option to indicate explicitly
that mysqlbackup is to connect to localhost using TCP/IP.
(Bug #25911987)

* Backups failed for database containing tables created
with transparent page compression
( https://dev.mysql.com/doc/refman/5.7/en/innodb-page-compression.html ),
with complaints of page corruption. It was
because mysqlbackup did not perform decompression before
data validation, and that has been corrected with this
fix. (Bug #24366571)

* A backup failed at the step when mysqlbackup applied the
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK
statement on all non-InnoDB tables if any table names
contained reserved words or special characters. It was
because mysqlbackup did not enclose table names in
backticks when issuing the statement, and this fix makes
sure that is done. (Bug #19709505, Bug #74144)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/NET 8.0.20 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/NET 8.0.20 is the latest General Availability release of
the MySQL Connector/NET 8.0 series. This version supports .NET Core 3.1
and the X DevAPI, which enables application developers to write code
that combines the strengths of the relational and document models using
a modern, NoSQL-like syntax that does not assume previous experience
writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/index.html. For more
information about how the X DevAPI is implemented in Connector/NET, see
http://dev.mysql.com/doc/dev/connector-net.
NuGet packages provide functionality at a project level. To get the
full set of features available in Connector/NET such as availability
in the GAC, integration with Visual Studio's Entity Framework Designer
and integration with MySQL for Visual Studio, installation through
the MySQL Installer or the stand-alone MSI is required.

Please note that the X DevAPI requires at least MySQL Server version
8.0 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
http://dev.mysql.com/doc/refman/8.0/en/document-store.html.

To download MySQL Connector/NET 8.0.20, see
http://dev.mysql.com/downloads/connector/net/

Installation instructions can be found at
https://dev.mysql.com/doc/connector-net/en/connector-net-installation.html

Changes in MySQL Connector/NET 8.0.20 (2020-04-27, General
Availability)

* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed

* Connector/NET now supports Entity Framework Core 3.1.1 on
all platforms with NET Standard 2.0 support. Microsoft
Entity Framework Core 3.1.1 is not compatible with the
previous versions of EF Core and those previous versions
(2.1, 2.0, 1.1) are not supported by this release of
Connector/NET (see Entity Framework Core Support
( https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html )).
In addition, the MySql.Data.EntityFrameworkCore.Design
NuGet package is deprecated and the functionality
provided by that package now is merged with the
MySql.Data.EntityFrameworkCore package.

* Connector/NET now provides compression of X Protocol
payload data, which can be configured using the new
Compression connection option. The option is set to
preferred mode by default to compress the payload data if
the MySQL server instance also supports compression. For
a description of each option value, see Options for X
Protocol Only
( https://dev.mysql.com/doc/connector-net/en/connector-net-8-0-connection-options.html#connector-net-8-0-connection-options-xprotocol ).

* Document Store: Connector/NET now provides JSON schema
validation for a collection to enforce a certain
structure that documents must adhere to before they are
permitted to be inserted or updated. Schema validation is
performed by the server, which returns an error message
if a document in a collection does not match the schema
definition or if the server does not support validation.
The existing Schema.CreateCollection method now is
overloaded and can be used to pass a
CreateCollectionOptions object with a schema definition
to a MySQL server. The ReuseExistingObject parameter of
the original method is set as an option within
CreateCollectionOptions when using the new overloaded
method. The level of enforcement (off or strict, strict
by default) and schema definition are specified using the
validation option, for example:
var collOptions = CreateCollectionOptions() {
reuseExistingObject = false,
validation = Validation() {
level = ValidationLevel.Strict,
schema = "{\"id\": \"http://json-schema.org/geo\","
+ "\"$schema\": \"http://json-schema.org/draft-06/schema# \","
+ " \"description\": \"A geographical coordinate\", "
+ " \"type\": \"object\","
+ " \"properties\": {"
+ " \"latitude\": {"
+ " \"type\": \"number\""
+ " },"
+ " \"longitude\": {"
+ " \"type\": \"number\""
+ " }"
+ " },"
+ " \"required\": [\"latitude\", \"longitude\"]"
+ " }"
}
};

var coll = schema.CreateCollection("longlang", collOptions);
In addition, a new method permits the schema validation
of an existing collection to be reset. The
Schema.ModifyCollection method passes a
ModifyCollectionOptions object to the server. The
validation collection option must include either a
modified level value or schema value (or both), for
example:
var collOptions = ModifyCollectionOptions() {
validation = Validation() {
level = ValidationLevel.Off
}
};

var coll = schema.ModifyCollection("longlang", collOptions);
The ReuseExistingObject option is not supported for
modifications and returns an error message if it is used.

Bugs Fixed

* A connection made to a named server with multiple DNS
entries pointing to different IP addresses for the same
server generated an exception. Now, only the first
element is returned when multiple elements are found.
(Bug #30970949, Bug #97448)

* The MySQL.Data NuGet package for Connector/NET 8.0.19
included an unsigned version of Ubiety.Dns.Core.dll,
which produced an exception when loaded. (Bug #30798305,
Bug #98204)

* Scaffolding a MySQL database with EF Core 3.0 was not
implemented by Connector/NET and the connector returned
an exception in response to its use. Support for EF Core
3.1.1 in this release adds scaffolding capabilities. (Bug
#30677382, Bug #98011)

* The get_info method was not included in any of the Entity
Framework Core versions (1.1, 2.0, and 2.1) that
Connector/NET supported. Connector/NET now supports EF
Core 3.1.1 and implements the
MySql.Data.EntityFrameworkCore.Infrastructure.MySQLOption
sExtension.Internal.get_info method. (Bug #30347893, Bug
#96990)

* The MySqlDbType.JSON type when used as a parameter in a
prepared statement produced code errors. Connector/NET
now interprets MySqlDbType.JSON as MySqlDbType.VarChar.
No code changes are required to specify a JSON column.
(Bug #29959124, Bug #95984)

* Blank spaces mixed with values in the IN() list of a
SELECT statement generated an error. (Bug #29838254)

* An attempt to read the record of a model class defined to
correspond to a MySQL table with a property of type bool?
(nullable Boolean), using the EF Core database context,
returned an error message. (Bug #29833103, Bug #93028)

* Access to the MySqlDataReader object was restricted when
the parent MySqlCommand object was closed. This fix
modifies MySqlCommand.Dispose() to no longer call the
ResetReader method. (Bug #27441433, Bug #89159)

On Behalf of MySQL Release Engineering Team,
Tvarita Jain

MySQL Workbench 8.0.20 has been released (no replies)

$
0
0
Dear MySQL users,

The MySQL developer tools team announces 8.0.20 as our General Availability
(GA) for MySQL Workbench 8.0.

For discussion, join the MySQL Workbench Forums:
http://forums.mysql.com/index.php?152

The release is now available in source and binary form for a number of
platforms from our download pages at:

http://dev.mysql.com/downloads/tools/workbench/

Enjoy!

Changes in MySQL Workbench 8.0.20 (2020-04-27, General
Availability)

   MySQL Workbench 8.0.20 is a new release of MySQL Workbench.
   Due to a change in the release process, no changes have been
   made for this release.

On Behalf of Oracle/MySQL Release Engineering Team,
Nawaz Nazeer Ahamed

MySQL Cluster 8.0.20 has been released (no replies)

$
0
0

 Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

  - In-Memory storage - Real-time performance (with optional
    checkpointing to disk)
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication

  - 99.999% High Availability with no single point of failure
    and on-line maintenance
  - NoSQL and SQL APIs (including C++, Java, http, Memcached
    and JavaScript/Node.js)

MySQL Cluster 8.0.20 has been released and can be downloaded from

  http://www.mysql.com/downloads/cluster/

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

The release notes are available from

  http://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/index.html

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at

  http://www.mysql.com/products/cluster/

Enjoy !


Changes in MySQL NDB Cluster 8.0.20 (2020-04-27, General Availability)

   MySQL NDB Cluster 8.0.20 is a new release of NDB 8.0, based
   on MySQL Server 8.0 and including features in version 8.0 of
   the NDB storage engine, as well as fixing recently discovered
   bugs in previous NDB Cluster releases.

   Obtaining NDB Cluster 8.0.  NDB Cluster 8.0 source code and
   binaries can be obtained from
   https://dev.mysql.com/downloads/cluster/.

   For an overview of changes made in NDB Cluster 8.0, see What
   is New in NDB Cluster
(https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-what-is-new.html).

   This release also incorporates all bug fixes and changes made
   in previous NDB Cluster releases, as well as all bug fixes
   and feature changes which were added in mainline MySQL 8.0
   through MySQL 8.0.20 (see Changes in MySQL 8.0.20 (2020-04-27, General Availability)
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html)).

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Important Change: It is now possible to divide a backup
       into slices and to restore these in parallel using two
       new options implemented for the ndb_restore utility,
       making it possible to employ multiple instances of
       ndb_restore to restore subsets of roughly the same size
       of the backup in parallel, which should help to reduce
       the length of time required to restore an NDB Cluster
       from backup.
       The --num-slices options determines the number of slices
       into which the backup should be divided; --slice-id
       provides the ID of the slice (0 to 1 less than the number
       of slices) to be restored by ndb_restore.
       Up to 1024 slices are supported.
       For more information, see the descriptions of the
       --num-slices and --slice-id options. (Bug #30383937)

     * Important Change: To increase the rate at which update
       operations can be processed, NDB now supports and by
       default makes use of multiple transporters per node
       group. By default, the number of transporters used by
       each node group in the cluster is equal to the number of
       the number of local data management (LDM) threads. While
       this number should be optimal for most use cases, it can
       be adjusted by setting the value of the
       NodeGroupTransporters data node configuration parameter
       which is introduced in this release. The maximum is the
       greater of the number of LDM threads or the number of TC
       threads, up to an overall maximum of 32 transporters.
       See Multiple Transporters
(https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html#mysql-cluster-multiple-transporters),
       for additional information.

     * NDB Client Programs: Two options are added for the
       ndb_blob_tool utility, to enable it to detect missing
       blob parts for which inline parts exist, and to replace
       these with placeholder blob parts (consisting of space
       characters) of the correct length. To check whether there
       are missing blob parts, use the ndb_blob_tool
       --check-missing option. To replace with placeholders any
       blob parts which are missing, use the program's
       --add-missing option, also added in this release. (Bug
       #28583971)

     * NDB Client Programs: Removed a dependency from the
       ndb_waiter and ndb_show_tables utility programs on the
       NDBT library. This library, used in NDB development for
       testing, is not required for normal use. The visible
       effect for users from this change is that these programs
       no longer print NDBT_ProgramExit - status following
       completion of a run. Applications that depend upon this
       behavior should be updated to reflect this change when
       upgrading to this release.

     * MySQL NDB ClusterJ: A few Java APIs used by ClusterJ are
       now deprecated in recent Java versions. These adjustments
       have been made to ClusterJ:

          + Replaced all Class.newInstance() calls with
            Class.getDeclaredConstructor().newInstance() calls.
            Also updated the exception handling and the test
            cases wherever required.

          + All the Number classes' constructors that
            instantiate an object from a String or a primitive
            type are deprecated. Replaced all such deprecated
            instantiation calls with the corresponding valueOf()
            method calls.

          + The Proxy.getProxyClass() is now deprecated. The
            DomainTypeHandlerImpl class now directly creates a
            new instance using the Proxy.newProxyInstance()
            method; all references to the Proxy class and its
            constructors are removed from the
            DomainTypeHandlerImpl class. SessionFactoryImpl
            class now uses the interfaces underlying the proxy
            object to identify the domain class rather than
            using the Proxy class. Also updated
            DomainTypeHandlerFactoryTest.

          + The finalize() method is now deprecated. This patch
            does not change the overriding finalize() methods,
            but just suppresses the warnings on them. This
            deprecation will be handled separately in a later
            patch.

          + Updated the CMake configuration to treat deprecation
            warnings as errors when compiling ClusterJ.
       (Bug #29931625)

     * MySQL NDB ClusterJ: The minimum Java version ClusterJ
       supports for MySQL NDB Cluster 8.0 is now Java 8. (Bug
       #29931625)

     * MySQL NDB ClusterJ: The unused antlr3 plugin has been
       removed from the ClusterJ pom file. (Bug #29931625)

     * NDB now supports versioning for ndbinfo tables, and
       maintains the current definitions for its tables
       internally. At startup, NDB compares its supported
       ndbinfo version with the version stored in the data
       dictionary. If the versions differ, NDB drops any old
       ndbinfo tables and recreates them using the current
       definitions.

     * Many outer joins and semijoins which previously could not
       be pushed down to the data nodes can now pushed (see
       Engine Condition Pushdown Optimization
(https://dev.mysql.com/doc/refman/8.0/en/condition-pushdown-optimization.html)).
       Outer joins which can now be pushed include those which
       meet the following conditions:

          + There are no unpushed conditions on this table

          + There are no unpushed conditions on other tables in
            the same join nest, or in upper join nests on which
            it depends

          + All other tables in the same join nest, or in upper
            join nests on which it depends are also pushed
       A semijoin using an index scan can now be pushed if it
       meets the the conditions just noted for a pushed outer
       join, and it uses the firstMatch strategy.
       References: See also: Bug #28728603, Bug #28672214, Bug
       #29296615, Bug #29232744, Bug #29161281, Bug #28728007.

     * A new and simplified interface is implemented for
       enabling and configuring adaptive CPU spin. The
       SpinMethod data node parameter, added in this release,
       provides the following four settings:

          + StaticSpinning: Disables adaptive spinning; uses the
            static spinning employed in previous NDB Cluster
            releases

          + CostBasedSpinning: Enables adaptive spinning using a
            cost-based model

          + LatencyOptimisedSpinning: Enables adaptive spinning
            optimized for latency

          + DatabaseMachineSpinning: Enables adaptive spinning
            optimized for machines hosting databases, where each
            thread has its own CPU
       Each of these settings causes the data node to use a set
       of predetermined values, as needed, for one or more of
       the spin parameters listed here:

          + SchedulerSpinTimer: The data node configuration
            parameter of this name.

          + EnableAdaptiveSpinning: Enables or disables adaptive
            spinning; cannot be set directly in the cluster
            configuration file, but can be controlled directly
            using DUMP 104004

          + SetAllowedSpinOverhead: CPU time to allow to gain
            latency; cannot be set directly in the config.ini
            file, but possible to change directly, using DUMP
            104002
       The presets available from SpinMethod should cover most
       use cases, but you can fine-tune the adaptive spin
       behavior using the SchedulerSpinTimer data node
       configuration parameter and the DUMP commands just
       listed, as well as additional DUMP commands in the
       ndb_mgm cluster management client; see the description of
       SchedulerSpinTimer for a complete listing.
       NDB 8.0.20 also adds a new TCP configuration parameter
       TcpSpinTime which sets the time to spin for a given TCP
       connection. This can be used to enable adaptive spinning
       for any such connections between data nodes, management
       nodes, and SQL or API nodes.
       The ndb_top tool is also enhanced to provide spin time
       information per thread; this is displayed in green in the
       terminal window.
       For more information, see the descriptions of the
       SpinMethod and TcpSpinTime configuration parameters, the
       DUMP commands listed or indicated previously, and the
       documentation for ndb_top.

Bugs Fixed


     * Important Change: When lower_case_table_names was set to
       0, issuing a query in which the lettercase of any foreign
       key names differed from the case with which they were
       created led to an unplanned shutdown of the cluster. This
       was due to the fact that mysqld treats foreign key names
       as case insensitive, even on case-sensitive file systems,
       whereas the manner in which the NDB dictionary stored
       foreign key names depended on the value of
       lower_case_table_names, such that, when this was set to
       0, during lookup, NDB expected the lettercase of any
       foreign key names to match that with which they were
       created. Foreign key names which differed in lettercase
       could then not be found in the NDB dictionary, even
       though it could be found in the MySQL data dictionary,
       leading to the previously described issue in NDBCLUSTER.
       This issue did not happen when lower_case_table_names was
       set to 1 or 2.
       The problem is fixed by making foreign key names case
       insensitive and removing the dependency on
       lower_case_table_names. This means that the following two
       items are now always true:

         1. Foreign key names are now stored using the same
            lettercase with which they are created, without
            regard to the value of lower_case_table_names.

         2. Lookups for foreign key names by NDB are now always
            case insensitive.
       (Bug #30512043)

     * Packaging: Removed an unnecessary dependency on Perl from
       the mysql-cluster-community-server-minimal RPM package.
       (Bug #30677589)

     * Packaging: NDB did not compile successfully on Ubuntu
       16.04 with GCC 5.4 due to the use of isnan() rather than
       std::isnan(). (Bug #30396292)
       References: This issue is a regression of: Bug #30338980.

     * OS X: Removed the variable SCHEMA_UUID_VALUE_LENGTH which
       was used only once in the NDB sources, and which caused
       compilation warnings when building on Mac OSX. The
       variable has been replaced with UUID_LENGTH. (Bug
       #30622139)

     * MySQL NDB ClusterJ: When a Date value was read from a NDB
       cluster, ClusterJ sometimes extracted the wrong year
       value from the row. It was because the Utility class,
       when unpacking the Date value, wrongly extracted some
       extra bits for the year. This patch makes ClusterJ only
       extract the required bits. (Bug #30600320)

     * MySQL NDB ClusterJ: When the cluster's
       NdbOperation::AbortOption type had the value of
       AO_IgnoreOnError, when there was a read error, ClusterJ
       took that as the row was missing and returned null
       instead of an exception. This was because with
       AO_IgnoreOnErro, the execute() method always returns a
       success code after each transaction, and ClusterJ is
       supposed to check for any errors in any of the individual
       operations; however, read operations were not checked by
       ClusterJ in the case. With this patch, read operations
       are now checked for errors after query executions, so
       that a reading error is reported as such. (Bug #30076276)

     * The fix for a previous issue in the MySQL Optimizer
       adversely affected engine condition pushdown for the NDB
       storage engine. (Bug #303756135)
       References: This issue is a regression of: Bug #97552,
       Bug #30520749.

     * When restoring signed auto-increment columns, ndb_restore
       incorrectly handled negative values when determining the
       maximum value included in the data. (Bug #30928710)

     * Formerly (prior to NDB 7.6.4) an SPJ worker instance was
       activated for each fragment of the root table of the
       pushed join, but in NDB 7.6 and later, a single worker is
       activated for each data node and is responsible for all
       fragments on that data node.
       Before this change was made, it was sufficient for each
       such worker to scan a fragment with parallelism equal to
       1 for all SPJ workers to keep all local data manager
       threads busy. When the number of workers was reduced as
       result of the change, the minimum parallelism should have
       been increased to equal the number of fragments per
       worker to maintain the degree of parallelism.
       This fix ensures that this is now done. (Bug #30639503)

     * The ndb_metadata_sync system variable is set to true to
       trigger synchronization of metadata between the MySQL
       data dictionary and the NDB dictionary; when
       synchronization is complete, the variable is
       automatically reset to false to indicate that this has
       been done. One scenario involving the detection of a
       schema not present in the MySQL data dictionary but in
       use by the NDB Dictionary sometimes led to
       ndb_metadata_sync being reset before all tables belonging
       to this schema were successfully synchronized. (Bug
       #30627292)

     * When using shared user and grants, all ALTER USER
       statements were distributed as snapshots, whether they
       contained plaintext passwords or not.
       In addition, SHOW CREATE USER did not include resource
       limits (such as MAX_QUERIES_PER_HOUR) that were set to
       zero, which meant that these were not distributed among
       SQL nodes. (Bug #30600321)

     * Two buffers used for logging in QMGR were of insufficient
       size. (Bug #30598737)
       References: See also: Bug #30593511.

     * Removed extraneous debugging output relating to SPJ from
       the node out logs. (Bug #30572315)

     * When performing an initial restart of an NDB Cluster,
       each MySQL Server attached to it as an SQL node
       recognizes the restart, reinstalls the ndb_schema table
       from the data dictionary, and then clears all NDB schema
       definitions created prior to the restart. Because the
       data dictionary was cleared only after ndb_schema is
       reinstalled, installation sometimes failed due to
       ndb_schema having the same table ID as one of the tables
       from before the restart was performed. This issue is
       fixed by ensuring that the data dictionary is cleared
       before the ndb_schema table is reinstalled. (Bug
       #30488610)

     * When the optimizer decides to presort a table into a
       temporary table, before later tables are joined, the
       table to be sorted should not be part of a pushed join.
       Although logic was present in the abstract query plan
       interface to detect such query plans, that this did not
       detect correctly all situations using filesort into
       temporary table. This is changed to check whether a
       filesort descriptor has been set up; if so, the table
       content is sorted into a temporary file as its first step
       of accessing the table, which greatly simplifies
       interpretation of the structure of the join. We now also
       detect when the table to be sorted is a part of a pushed
       join, which should prevent future regressions in this
       interface. (Bug #30338585)

     * When a node ID allocation request failed with NotMaster
       temporary errors, the node ID allocation was always
       retried immediately, without regard to the cause of the
       error. This caused a very high rate of retries, whose
       effects could be observed as an excessive number of Alloc
       node id for node nnn failed log messages (on the order of
       15,000 messages per second). (Bug #30293495)

     * For NDB tables having no explicit primary key,
       NdbReceiverBuffer could be allocated with too small a
       size. This was due to the fact that the attribute bitmap
       sent to NDB from the data nodes always includes the
       primary key. The extra space required for hidden primary
       keys is now taken into consideration in such cases. (Bug
       #30183466)

     * When translating an NDB table created using .frm files in
       a previous version of NDB Cluster and storing it as a
       table object in the MySQL data dictionary, it was
       possible for the table object to be committed even when a
       mismatch had been detected between the table indexes in
       the MySQL data dictionary and those for the same table's
       representation the NDB dictionary. This issue did not
       occur for tables created in NDB 8.0, where it is not
       necessary to upgrade the table metadata in this fashion.
       This problem is fixed by making sure that all such
       comparisons are actually performed before the table
       object is committed, regardless of whether the
       originating table was created with or without the use of
       .frm files to store its metadata. (Bug #29783638)

     * NDB sometimes made the assumption that the list of nodes
       containing index statistics was ordered, but this list is
       not always ordered in the same way on all nodes. This
       meant that in some cases NDB ignored a request to update
       index statistics, which could result in stale data in the
       index statistics tables. (Bug #3044482)

     * An error raised when obtaining cluster metadata caused a
       memory leak. (Bug #97737, Bug #30575163)


On Behalf of MySQL Release Engineering team,
Balasubramanian Kandasamy 

MySQL Community Server 5.7.30 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Server 5.7.30, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.7.30 is
recommended for use on production systems.

For an overview of what's new in MySQL 5.7, please see

  http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html

For information on installing MySQL 5.7.30 on new servers, please see
the MySQL installation documentation at

  http://dev.mysql.com/doc/refman/5.7/en/installing.html

MySQL Server 5.7.30 is available in source and binary form for a number of
platforms from our download pages at

  http://dev.mysql.com/downloads/mysql/

MySQL Server 5.7.30 is also available from our repository for Linux
platforms, go here for details:

  http://dev.mysql.com/downloads/repo/

Windows packages are available via the Installer for Windows or .ZIP
(no-install) packages for more advanced needs. The point and click
configuration wizards and all MySQL products are available in the
unified Installer for Windows:

  http://dev.mysql.com/downloads/installer/

5.7.30 also comes with a web installer as an alternative to the full
installer.

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.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

  http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 5.7 since
the release of MySQL 5.7.29. It may also be viewed
online at

  http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-30.html

Enjoy!

Changes in MySQL 5.7.30 (2020-04-27, General Availability)

JSON Notes


     * The rapidjson library included with MySQL has been
       upgraded to the GitHub snapshot of 16 January 2020. A fix
       for a compiler error encountered when building from the
       snapshot on Mac OS X has been added. (Bug #30898701)

Packaging Notes


     * Binary packages that include curl rather than linking to
       the system curl library have been upgraded to use curl
       7.69.0. (Bug #30866333)

     * The bundled libedit library was upgraded to version 3.1.

Bugs Fixed


     * InnoDB: The row_upd_clust_rec_by_insert function, which
       marks a clustered index record as deleted and inserts an
       updated version of the record into the clustered index,
       passed an incorrect n_ext value (the total number of
       external fields) to lower level functions, causing an
       assertion failure. (Bug #30437378)

     * InnoDB: An operation performed with the
       innodb_buffer_pool_evict debug variable set to
       uncompressed caused an assertion failure. (Bug #30405531)

     * InnoDB: An add column operation caused an assertion
       failure. The failure was due to a dangling pointer. (Bug
       #29866408)
       References: This issue is a regression of: Bug #28491099.

     * InnoDB: Updating certain InnoDB system variables that
       take string values raised invalid read errors during
       Valgrind testing. (Bug #29717909, Bug #95215)

     * InnoDB: An insert statement on a table with a spatial
       index raised a record type mismatch assertion due to a
       tuple corruption. (Bug #29465567)

     * InnoDB: A function that calculates undo log record size
       could calculate an incorrect length value in the case of
       a corrupted undo log record, resulting in a malloc
       failure. Assertion code was added to detect incorrect
       calculations. (Bug #29448406, Bug #82734)

     * Replication: While an SQL statement was in the process of
       being rewritten for the binary log so that sensitive
       information did not appear in plain text, if a SHOW
       PROCESSLIST statement was used to inspect the query, the
       query could become corrupted when it was written to the
       binary log, causing replication to stop. The process of
       rewriting the query is now kept private, and the query
       thread is updated only when rewriting is complete. (Bug
       #30569003, Bug #97531, Bug #30654405)

     * Replication: When a GRANT or REVOKE statement is only
       partially executed, an incident event is logged in the
       binary log, which makes the replication slave's applier
       thread stop so that the slave can be reconciled manually
       with the master. Previously, if a failed GRANT or REVOKE
       statement was the first statement executed in the
       session, no GTID was applied to the incident event
       (because the cache manager did not yet exist for the
       session), causing an error on the replication slave.
       Also, no incident event was logged in the situation where
       a GRANT statement created a user but then failed because
       the privileges had been specified incorrectly, again
       causing an error on the replication slave. Both these
       issues have now been fixed. (Bug #30566518, Bug
       #30324661)

     * Replication: When a replication slave has a generated
       column that the master does not have in that table, with
       a secondary index on the generated column, the generated
       expression should be evaluated and the value stored by
       the storage engine in the secondary index. When row-based
       binary logging is in use, the replication slave assigns
       default values to any fields that are not in the master's
       definition of the table. In the case of a generated
       column, which does not have a default value, the slave
       was previously assigning a null or a zero value to the
       column. This value was then stored by the storage engine
       in the secondary index, causing both the table and the
       index to become corrupted. To fix this issue, generated
       columns in a table on a replication slave are now
       re-evaluated before the values are sent to the storage
       engine. (Bug #30034874)

     * Replication: In the event of an unplanned disconnection
       of a replication slave from the master, the reference to
       the master's dump thread might not be removed from the
       list of registered slaves, in which case statements that
       accessed the list of slaves would fail. The issue has now
       been fixed. (Bug #29915479)

     * Replication: With the settings binlog_format=MIXED,
       tx_isolation=READ-COMMITTED, and binlog_row_image=FULL,
       an INSERT ... SELECT query involving a transactional
       storage engine omitted any columns with a null value from
       the row image written to the binary log. This happened
       because when processing INSERT ... SELECT statements, the
       columns were marked for inserts before the binary logging
       format was selected. The issue has now been fixed. (Bug
       #29110804, Bug #93423)

     * The -libs-compat RPM package is now built with system
       zlib to avoid problems with unrestricted export of
       symbols in libmysqlclient.so.18. (Bug #30722389, Bug
       #98130)

     * The Event Scheduler had a memory leak. (Bug #30628268)

     * Under certain circumstances, a memcached command could
       result in reading an uninitialized memory buffer, causing
       a failure. (Bug #30592346)

     * Using ALTER USER to reset an account MAX_USER_CONNECTIONS
       value did not take effect until all current account
       connections terminated, if there were any. (Bug
       #30578217, Bug #97735)

     * A materialized subquery including a condition in which a
       column value was used as input to a nondeterministic
       function produced incorrect results. (Bug #30368937)

     * CONCAT() and CONCAT_WS() could produce incorrect results
       in rare cases due to incorrect substring handling. (Bug
       #30350206, Bug #96950)

     * Scheduling of events could be disturbed by removing
       events. (Bug #30301356, Bug #96849)

     * Client programs could load authentication plugins from
       outside the plugin library. (Bug #30191834, Bug
       #30644258)

     * The server did not handle correctly a UNION in which one
       of the queries contained a subquery that used ORDER BY.
       (Bug #29952565)

     * A query with a WHERE clause whose predicate contained a
       numeric value in scientific notation was not handled
       correctly.
       In addition, attempting to insert a particular integer
       specified as a string caused a server exit when the
       string-to-integer conversion was not successful. (Bug
       #29723340, Bug #30441969)

     * Previously, mysqlpump read the [mysql_dump] and [client]
       groups from option files. mysqlpump now additionally
       reads the [mysqlpump] group. The [mysql_dump] group is
       still accepted but is deprecated. (Bug #24733245, Bug
       #83144)

     * A multi-table UPDATE statement which updated a table
       joined to a derived table that joined two other tables
       was not optimized properly as it had been in MySQL 5.6,
       instead being treated as if STRAIGHT_JOIN had been used
       with the subquery creating the derived table. (Bug
       #97418, Bug #30488700)

On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/Node.js 8.0.20 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, version 8.0.20, is a maintenance release of the
MySQL Connector/Node.js 8.0 series.

The X DevAPI enables application developers to write code that combines
the strengths of the relational and document models using a modern,
NoSQL-like syntax that does not assume previous experience writing
traditional SQL.

MySQL Connector/Node.js can be downloaded through npm (see
  https://www.npmjs.com/package/@mysql/xdevapi for details) or from
  https://dev.mysql.com/downloads/connector/nodejs/.

To learn more about how to write applications using the X DevAPI, see
  http://dev.mysql.com/doc/x-devapi-userguide/en/.
For more information about how the X DevAPI is implemented in MySQL
Connector/Node.js, and its usage, see
  http://dev.mysql.com/doc/dev/connector-nodejs/.

Please note that the X DevAPI requires at least MySQL Server version
8.0 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
  http://dev.mysql.com/doc/refman/8.0/en/document-store.html.


Changes in MySQL Connector/Node.js 8.0.20 (2020-04-27, General Availability)

Functionality Added or Changed


     * Added two new connection options that evaluate during the
       TLS handshake to restrict the negotiated TLS protocols
       and ciphers; along with those configured on the server
       that can further restrict the final choices. These new
       options are tls-versions to define the allowed TLS
       protocol versions, and tls-ciphersuites for the allowed
       cipher suites. These definitions are comma-separated, and
       accepted by the getSession() and getClient() methods.
       tls-versions: accepts one or more of the following:
       TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3. Other values
       generate an error.
       tls-ciphersuites: accepts IANA cipher suite names, as
       listed on IANA's TLS Cipher Suites
https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4
       page. Unsupported or unknown values are ignored.
       Example usage demonstrating both plain JavaScript and
       JSON configuration object formats:
# tls versions:
mysqlx.getSession('mysqlx://root@localhost?tls-versions=[TLSv1,TLSv1.1
,TLSv1.2,TLSv1.3]')

mysqlx.getSession({ user: 'root', tls: { versions: ['TLSv1', 'TLSv1.1'
, 'TLSv1.2', 'TLSv1.3'] } })

# tls ciphersuites
mysqlx.getSession('mysqlx://root@localhost?tls-ciphersuites=[DHE-RSA-A
ES128-GCM-SHA256,DHE-RSA-AES256-SHA256]')

mysqlx.getSession({ user: 'root', tls: { ciphersuites: ['DHE-RSA-AES12
8-GCM-SHA256', 'DHE-RSA-AES256-SHA256'] } })


     * For X DevAPI applications, when creating a new
       connection, if the connection data contains several
       target hosts that have no explicit priority assigned, the
       behavior of the failover logic now is the same as if all
       those target hosts have the same priority. That is, the
       next candidate for making a connection is chosen randomly
       from the remaining available hosts. If two hosts have the
       same priority then one is chosen at random.
			 
On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL Community Server 5.6.48 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Server 5.6.48, a new version of the popular Open Source Database
Management System, has been released. MySQL 5.6.48 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.48 on new servers or upgrading
to MySQL 5.6.48 from previous MySQL releases, please see

http://dev.mysql.com/doc/refman/5.6/en/installing.html

MySQL Server 5.6.48, is available in source and binary form for a number
of platforms from our download pages at

http://dev.mysql.com/downloads/mysql

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc:

http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 5.6 since the release
of MySQL 5.6.47. It may also be viewed online at

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-48.html

Enjoy!

Changes in MySQL 5.6.48 (2020-04-27, General Availability)

Bugs Fixed


     * InnoDB: A tablespace import operation that failed due to
       the source and destination tables being defined with different
       DATA DIRECTORY clauses reported an insufficiently descriptive
       schema mismatch error.  Moreover, if a .cfg file was not present,
       the same operation would raise an assertion failure. A more
       informative error message is now reported in both cases before
       the import operation is terminated due to the data directory
       mismatch. (Bug #30190199, Bug #30190227, Bug #20644698, Bug
       #76142)

     * InnoDB: Updating certain InnoDB system variables that
       take string values raised invalid read errors during Valgrind
       testing. (Bug #29717909, Bug #95215)

     * Replication: In the event of an unplanned disconnection
       of a replication slave from the master, the reference to the
       master's dump thread might not be removed from the list of
       registered slaves, in which case statements that accessed the
       list of slaves would fail. The issue has now been fixed. (Bug
       #29915479)

     * Replication: With the settings binlog_format=MIXED,
       tx_isolation=READ-COMMITTED, and binlog_row_image=FULL, an INSERT
       ... SELECT query involving a transactional storage engine omitted
       any columns with a null value from the row image written to the
       binary log. This happened because when processing INSERT ...
       SELECT statements, the columns were marked for inserts before the
       binary logging format was selected. The issue has now been fixed.
       (Bug #29110804, Bug #93423)

     * The Event Scheduler had a memory leak. (Bug #30628268)

     * Under certain circumstances, a memcached command could
       result in reading an uninitialized memory buffer, causing a
       failure. (Bug #30592346)

     * CONCAT() and CONCAT_WS() could produce incorrect results
       in rare cases due to incorrect substring handling. (Bug
       #30350206, Bug #96950)

     * Scheduling of events could be disturbed by removing
       events. (Bug #30301356, Bug #96849)

     * Client programs could load authentication plugins from
       outside the plugin library. (Bug #30191834, Bug #30644258)

     * A query with a WHERE clause whose predicate contained a
       numeric value in scientific notation was not handled correctly.
       In addition, attempting to insert a particular integer specified
       as a string caused a server exit when the string-to-integer
       conversion was not successful. (Bug #29723340, Bug #30441969)

     * The client library could dereference a null pointer while
       fetching result set metadata from the server. (Bug #29597896, Bug
       #30689251)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/J 8.0.20 has been released (no replies)

$
0
0



Dear MySQL users,

MySQL Connector/J 8.0.20 is the latest General Availability release of
the MySQL Connector/J 8.0 series.  It is suitable for use with MySQL
Server versions 8.0, 5.7, and 5.6.  It supports the Java Database
Connectivity (JDBC) 4.2 API, and implements the X DevAPI.

This release includes the following new features and changes, also
described in more detail on

https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-20.html

As always, we recommend that you check the "CHANGES" file in the
download archive to be aware of changes in behavior that might affect
your application.

To download MySQL Connector/J 8.0.20 GA, see the "General Availability
(GA) Releases" tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!

Changes in MySQL Connector/J 8.0.20 (2020-04-27, General Availability)



     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


      * X DevAPI: Connector/J now supports data compression for X
       Protocol connections
       ( https://dev.mysql.com/doc/refman/8.0/en/x-plugin-connection-compression.html ). 
       See Connection Compression Using X DevAPI
       ( https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connection-compression-xdevapi.html ) 
       for details.

     * A new method, getElapsedTime(), has been added to
       Connector/J 's implementation of the Statement interface,
       to expose the elapsed time for a query. Thanks to Matti
       Sillanpää for contributing the code. (Bug #30570249, Bug
       #97714)

Bugs Fixed

      * When a custom Calendar was used in the setDate method for
       a PreparedStatement, it was being used by subsequent
       calls of the same method that did not use the same
       calendar, resulting in the wrong date being set. It was
       because the SimpleDateFormat object created internally
       with the custom calendar was cached and reused. With this
       fix, the object is no longer cached. (Bug #30877755)

     * Setting the connection property clientInfoProvider
       without using the fully qualified class name for
       ClientInfoProviderSP caused a NullPointerException. This
       was due to some wrong exception handling, which has been
       corrected by this fix. (Bug #30832513)

     * Authentication failed when a client tried to connect to a
       server that used Windows Authentication Plugin and the
       Kerberos protocol. It was because the implementation of
       the NativeAuthenticationProvider class by Connector/J did
       not interact correctly with a custom-made Kerberos
       authentication plugin, and this patch fixes the issue.
       (Bug #30805426)

     * Methods from the ResultSetUtil class are no longer used
       in Connector/J 8.0.20; the class has therefore been
       removed. (Bug #30636056)

     * A NullPointerException was returned when the connection
       had cacheResultSetMetadata=true and a query containing
       any SET statements was executed. This fix corrects the
       issue by adding the missing variable assignment, and also
       a null check. (Bug #30584907, Bug #97757)

     * A DataConversionException was thrown when an application
       tried to store a string starting with "d." [d was any
       digit] into a VARCHAR column. It was due to a parsing
       error in the AbstractNumericValueFactory, which has been
       fixed by this patch. Thanks to Nick Pollett for
       contributing the code. (Bug #30570721, Bug #97724)

     * When creating a Statement, the specification for the
       resultSetType parameter was not honored, so that the
       ResultSet type was always set to
       ResultSet.TYPE_FORWARD_ONLY. With this fix, the
       resultSetType parameter is now honored. Also, type
       validation has been added so that calling the methods
       beforeFirst, afterLast, first, last, absolute, relative,
       or previous results in an exception if the ResultSet type
       is ResultSet.TYPE_FORWARD_ONLY. (Bug #30474158)

     * When a Calendar was not used, a java.sql.Date value could
       not always be stored into and then retrieved from a MySQL
       server consistently. It was because Connector/J always
       converted a Date value to the server's time zone when
       storing it on the server as a MySQL DATE; but since a
       MySQL DATE does not have any time value, the hour,
       minute, and second parts of the original date was
       effectively lost. If the converted value is one day ahead
       of or behind the original value, when the value was
       retrieved through Connector/J and converted back to the
       local time zone, there was no time value for adjusting
       the date back to its original value, resulting in a
       one-day error. With this fix, any Date value is converted
       to MySQL DATE value using the JVM's time zone, so that
       the value is always consistent when being stored and then
       read back.
       Also, the cacheDefaultTimezone connection property,
       previously removed from Connector/J 8.0, has now been
       restored so that when it is set to false, Connector/J
       becomes aware of the time zone changes of the JVM during
       runtime and converts dates with the updated time zone.
       (Bug #28125069, Bug #91112)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Shell 8.0.20 for MySQL Server 8.0 and 5.7 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Shell 8.0.20 is a maintenance release of MySQL Shell 8.0 Series (a
component of the MySQL Server). The MySQL Shell is provided under
Oracle's dual-license.

MySQL Shell 8.0 is highly recommended for use with MySQL Server 8.0 and
5.7. Please upgrade to MySQL Shell 8.0.20.

MySQL Shell is an interactive JavaScript, Python and SQL console
interface, supporting development and administration for the MySQL
Server. It provides APIs implemented in JavaScript and Python that
enable you to work with MySQL InnoDB cluster and use MySQL as a document
store.

The AdminAPI enables you to work with MySQL InnoDB cluster and InnoDB
ReplicaSet, providing integrated solutions for high availability and scalability
using InnoDB based MySQL databases, without requiring advanced MySQL
expertise.  For more information about how to configure and work with
MySQL InnoDB cluster and MySQL InnoDB ReplicaSet see

https://dev.mysql.com/doc/refman/en/mysql-innodb-cluster-userguide.html

The X DevAPI enables you to create "schema-less" JSON document
collections and perform Create, Update, Read, Delete (CRUD) operations
on those collections from your favorite scripting language.  For more
information about how to use MySQL Shell and the MySQL Document Store
support see

https://dev.mysql.com/doc/refman/en/document-store.html

For more information about the X DevAPI see

https://dev.mysql.com/doc/x-devapi-userguide/en/

If you want to write applications that use the the CRUD based X DevAPI
you can also use the latest MySQL Connectors for your language of
choice. For more information about Connectors see

https://dev.mysql.com/doc/index-connectors.html

For more information on the APIs provided with MySQL Shell see

https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/8.0/

and

https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/

Using MySQL Shell's SQL mode you can communicate with servers using the
legacy MySQL protocol. Additionally, MySQL Shell provides partial
compatibility with the mysql client by supporting many of the same
command line options.

For full documentation on MySQL Server, MySQL Shell and related topics,
see

https://dev.mysql.com/doc/mysql-shell/8.0/en/

For more information about how to download MySQL Shell 8.0.20, see the
"General Availability (GA) Releases" tab at

http://dev.mysql.com/downloads/shell/

We welcome and appreciate your feedback and bug reports, see

http://bugs.mysql.com/

Enjoy and thanks for the support!


Changes in MySQL Shell 8.0.20 (2020-04-27, General Availability)

     * AdminAPI Added or Changed Functionality

     * AdminAPI Bugs Fixed

     * Functionality Added or Changed

     * Bugs Fixed

AdminAPI Added or Changed Functionality

     * MySQL Shell now enables you to create and configure the
       MySQL user accounts required by InnoDB cluster, InnoDB
       ReplicaSet, and MySQL Router using AdminAPI operations.
       Previously, accounts required by InnoDB cluster and
       InnoDB ReplicaSet had to be configured using the
       clusterAdmin option, and accounts required by MySQL
       Router had to be configured manually using SQL. The
       following AdminAPI operations are now available:

          + use Cluster.setupAdminAccount(user, [options]) and
            Replicaset.setupAdminAccount(user, [options]) to
            configure a MySQL user account with the necessary
            privileges to administer an InnoDB cluster or InnoDB
            ReplicaSet.

          + use Cluster.setupRouterAccount(user, [options]) and
            Replicaset.setupRouterAccount(user, [options]) to
            create a MySQL user account or upgrade an existing
            account so that it that can be used by MySQL Router
            to operate on an InnoDB cluster or InnoDB
            ReplicaSet. This is now the recommended method of
            adding MySQL Router accounts to use with InnoDB
            cluster and InnoDB ReplicaSet.

     * AdminAPI now uses a locking mechanism to avoid different
       operations from performing changes on an InnoDB
       ReplicaSet simultaneously. Previously, different
       instances of MySQL Shell could connect to an InnoDB
       ReplicaSet at the same time and execute AdminAPI
       operations simultaneously. This could lead to
       inconsistent instance states and errors, for example if
       ReplicaSet.addInstance() and ReplicaSet.setPrimary() were
       executed in parallel.
       Now, the InnoDB ReplicaSet operations have the following
       locking:

          + dba.upgradeMetadata() and dba.createReplicaSet() are
            globally exclusive operations. This means that if
            MySQL Shell executes these operations on an InnoDB
            ReplicaSet, no other operations can be executed
            against the InnoDB ReplicaSet or any of its
            instances.

          + ReplicaSet.forcePrimaryInstance() and
            ReplicaSet.setPrimaryInstance() are operations that
            change the primary. This means that if MySQL Shell
            executes these operations against an InnoDB
            ReplicaSet, no other operations which change the
            primary, or instance change operations can be
            executed until the first operation completes.

          + ReplicaSet.addInstance(),
            ReplicaSet.rejoinInstance(), and
            ReplicaSet.removeInstance() are operations that
            change an instance. This means that if MySQL Shell
            executes these operations on an instance, the
            instance is locked for any further instance change
            operations. However, this lock is only at the
            instance level and multiple instances in an InnoDB
            ReplicaSet can each execute one of this type of
            operation simultaneously. In other words, at most
            one instance change operation can be executed at a
            time, per instance in the InnoDB ReplicaSet.

          + dba.getReplicaSet() and ReplicaSet.status() are
            InnoDB ReplicaSet read operations and do not require
            any locking.
       References: See also: Bug #30349849.

     * Use the --replicaset option to configure MySQL Shell to
       work with an InnoDB ReplicaSet at start up. You must
       specify a connection to a replica set instance for this
       option to work correctly. If a replica set is found, this
       option populates the rs global object, which can then be
       used to work with the InnoDB ReplicaSet. As part of this
       addition, the --redirect-primary and --redirect-secondary
       options have been updated to also work with InnoDB
       ReplicaSet.
       When running MySQL Shell, use the
       shell.connectToPrimary([connectionData, password]) to
       check whether the target instance belongs to an InnoDB
       cluster or InnoDB ReplicaSet. If so, MySQL Shell opens a
       new session to the primary, sets the global session to
       the established session and returns it. If no
       connectionData is provided, the current global session is
       used.

AdminAPI Bugs Fixed

     * During distributed recovery which is using MySQL Clone,
       the instance restarts after the data files are cloned,
       but if the instance has to apply a large back log of
       transactions to finish the recovery process, then the
       restart process could take longer than the default 1
       minute timeout. Now, when there is a large back log use
       the dba.restartWaitTimeout option to configure a longer
       timeout to ensure the apply process has time to process
       the transactions. (Bug #30866632)

     * The dba.deleteSandboxInstance() operation did not provide
       an error if you attempted to delete a sandbox which did
       not exist. Now, in such a situation the
       dba.deleteSandboxInstance() operation throws a
       runtimeError. (Bug #30863587)

     * The Cluster.forceQuorumUsingPartitionOf() operation was
       not stopping Group Replication on any reachable instances
       that were not part of the visible membership of the
       target instance, which could lead to undefined behavior
       if any of those instances were automatically rejoining
       the cluster. The fix stops Group Replication on any
       reachable instances that are not included in the new
       forced quorum membership. (Bug #30739252)

     * It was possible for AdminAPI to select an invalidated
       instance as the latest primary, despite it having a lower
       view_id. This was because the process of getting the
       primary of the InnoDB ReplicaSet was incorrectly
       reconnecting to an invalidated member if it was the last
       instance in the InnoDB ReplicaSet. (Bug #30735124)

     * When a cluster that was created with a MySQL Shell
       version lower than 8.0.19 was offline (for example after
       a server upgrade of the instances), if you then used
       MySQL Shell 8.0.19 to connect to the cluster,
       dba.upgradeMetadata() and
       dba.rebootClusterFromCompleteOutage() blocked each other.
       You could not run dba.upgradeMetadata() because it
       requires dba.rebootClusterFromCompleteOutage() to be run
       first to bring the cluster back online. And you could not
       run dba.rebootClusterFromCompleteOutage() because
       dba.upgradeMetadata() had not been run. To avoid this
       problem please upgrade to MySQL Shell 8.0.20, where the
       preconditions for dba.rebootClusterFromCompleteOutage()
       and dba.forceQuorumUsingPartitionOf() have been updated
       to ensure they are compatible with clusters created using
       earlier versions. In other words, they are available even
       if the metadata was created using an older MySQL Shell
       version. (Bug #30661129)

     * Using MySQL Clone as the distributed recovery method to
       add an instance to an InnoDB ReplicaSet resulted in a
       segmentation fault if the target instance did not support
       RESTART. Now, the ReplicaSet.addInstance() operation
       aborts in such a situation and reverts changes after the
       connection timeout limit is reached. This is because the
       add operation needs to connect to the target instance to
       finish the operation. In such a situation, if it is not
       possible to upgrade the instance to a version of MySQL
       which supports RESTART, you have to restart the server
       manually, and then issue ReplicaSet.addInstance() again
       to retry. The retry can then use incremental recovery,
       which does not trigger the clone and the subsequent
       restart. (Bug #30657911)

     * Cluster.addInstance() normally fails if there are errant
       GTIDs in the added instance, but if MySQL Clone is being
       used for distributed recovery, that check is bypassed
       because the cloning process fixes the problem. However,
       if all members are using IPv6, MySQL Clone cannot be
       used, so incremental recovery is used instead. In such a
       situation, the instance was being added to the cluster
       without errors, but the errant transaction persisted.
       Now, if all of the cluster's online instances are using
       IPv6 addresses and the operation tries to use MySQL Clone
       for distributed recovery, an error is thrown. (Bug
       #30645697)

     * When an InnoDB cluster or InnoDB ReplicaSet is using the
       MySQL Clone plugin, AdminAPI ensures the
       performance_schema.clone_status table is cleared out when
       the clone process starts. However, in some rare and very
       specific scenarios a race condition could happen and the
       clone operation was considered to be running before
       actually clearing out the table. In this situation, the
       MySQL Shell clone monitoring could result in an
       unexpected halt.
       As part of this fix, a potential infinite loop in the
       clone monitoring phase that could happen very rarely when
       the cloning process was extremely fast has also been
       fixed. (Bug #30645665)

     * Group Replication system variable queries were being
       executed early, without considering whether the Group
       Replication plugin was installed yet. Now, the reboot
       operation has been fixed so that if system variable
       queries fail with ER_UNKNOWN_SYSTEM_VARIABLE then the
       Group Replication plugin is installed automatically. (Bug
       #30531848)

     * The Cluster.removeInstance(instance) operation was not
       correctly handling the following cases:

          + if the instance had report_host set to a different
            value from the instance_name in the metadata,
            specifying the instance using its IP failed.

          + if the instance was unreachable, it was not possible
            to remove it if the given address did not match the
            address in the metadata.

          + when an instance was OFFLINE but reachable (for
            example because Group Replication stopped but the
            server was still running),
            Cluster.removeInstance(instance) failed. Now, in
            such a situation, if you are sure it is safe to
            remove the instance, use the force=true option,
            which means that synchronization is no longer
            attempted as part of the remove operation.

          + if the instance was OFFLINE but reachable, removing
            the instance through an address that did not match
            what was in the metadata would make the operation
            appear to succeed but the instance was not actually
            removed from the metadata.
       (Bug #30501628, Bug #30625424)

     * After operations such as removing an instance or
       dissolving a cluster, the group_replication_recovery and
       group_replication_applier replication channels were not
       being removed. (Bug #29922719, Bug #30878446)

     * The default location of the MySQL option file, for
       example /etc/my.cnf, stopped being detected by the
       dba.configureInstance() operation on some platforms
       (Debian and so on). This was a regression. The fix
       ensures that the predefined paths to option files matches
       the defaults, such as /etc/my.cnf and /etc/mysql/my.cnf.
       (Bug #96490, Bug #30171324)

Functionality Added or Changed

     * A new method shell.openSession is provided in the shell
       global object to let you create and return a session
       object, rather than set it as the global session for
       MySQL Shell.

     * You can now request compression for MySQL Shell
       connections that use X Protocol, as well as those that
       use classic MySQL protocol. For X Protocol connections,
       the default is that compression is requested, and
       uncompressed connections are allowed if the negotiations
       for a compressed connection do not succeed. For classic
       MySQL protocol connections, the default is that
       compression is disabled. After the connection has been
       made, the MySQL Shell \status command shows whether or
       not compression is in use for a session.
       New compression controls in MySQL Shell let you specify
       in the connection parameters whether compression is
       required, preferred, or disabled, select compression
       algorithms for the connection, and specify a numeric
       compression level for the algorithms.

Bugs Fixed

     * When you create an extension object for MySQL Shell, the
       options key is no longer required when you specify a
       parameter of the data type "dictionary". If you do define
       options for a dictionary, MySQL Shell validates the
       options specified by the end user and raises an error if
       an option is passed to the function that is not in this
       list. If you create a dictionary with no list of options,
       any options that the end user specifies for the
       dictionary are passed directly through to the function by
       MySQL Shell with no validation. (Bug #30986260)

     * A bug in MySQL Shell 8.0.19, affecting classic MySQL
       protocol connections only, meant that access was denied
       if a user had stored the connection's password with MySQL
       Shell and afterwards changed it. The password store now
       removes invalid passwords and presents the user with a
       password prompt as expected. (Bug #30912984, Bug #98503)

     * When MySQL Shell's \source command was used in
       interactive mode to execute code from a script file,
       multi-line SQL statements in the script file could cause
       MySQL Shell to enter a loop of repeatedly executing the
       script. The issue has now been fixed. (Bug #30906751, Bug
       #98625)

     * If a stored procedure was called in MySQL Shell but its
       result was not used, any subsequent SQL statement
       returned a result set error, and exiting MySQL Shell at
       that point resulted in an incorrect shutdown. MySQL Shell
       cleared the first result set retrieved by a stored
       procedure in order to run a subsequent SQL statement, but
       did not check for any additional result sets that had
       been retrieved, which were left behind and caused the
       error. This check is now carried out and the additional
       result sets are discarded before another statement is
       executed. (Bug #30825330)

     * Due to a regression in MySQL Shell 8.0.19, the upgrade
       checker utility checkForServerUpgrade() did not accept
       any runtime options if connection data was not provided
       as the first argument. The issue has been fixed and the
       utility's argument checking has been enhanced. (Bug
       #30689606)

     * MySQL Shell, which now bundles Python 3.7.4, could not be
       built from source with Python 3.8. The incompatibilities
       have now been corrected so Python 3.8 may be used. (Bug
       #30640012)

     * MySQL Shell's upgrade checker utility
       checkForServerUpgrade() did not flag removed system
       variables that were specified using hyphens rather than
       underscores. The utility also now continues with its
       sequence of checks if a permissions check cannot be
       performed at the required time. (Bug #30615030, Bug
       #97855)

     * MySQL Shell's \status command showed that a connection
       was compressed if the connection had been created while
       starting MySQL Shell, but not if it was created after
       starting MySQL Shell. Compression is now shown in both
       cases. (Bug #29006903)


On Behalf of Oracle/MySQL Release Engineering Team,
Sreedhar S 

MySQL Connector/ODBC 8.0.20 has been released (no replies)

$
0
0


Dear MySQL users,

MySQL Connector/ODBC 8.0.20 is a new version in the MySQL Connector/ODBC
8.0 series, the ODBC driver for the MySQL Server.

The available downloads include both a Unicode driver and an ANSI driver
based on the same modern codebase. Please select the driver type you
need based on the type of your application - Unicode or ANSI.
Server-side prepared statements are enabled by default.  It is suitable
for use with the latest MySQL server version 8.0.

This release of the MySQL ODBC driver is conforming to the ODBC 3.8
specification.  It contains implementations of key 3.8 features,
including self-identification as a ODBC 3.8 driver, streaming of out for
binary types only), and support of the SQL_ATTR_RESET_CONNECTION
connection attribute (for the Unicode driver only).

The release is now available in source and binary form for a number of
platforms from our download pages at

   https://dev.mysql.com/downloads/connector/odbc/

For information on installing, please see the documentation at

https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Enjoy and thanks for the support!

==============================================================================

Changes in MySQL Connector/ODBC 8.0.20 (2020-04-27, General Availability)

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * On Debian, DEB packages are now released instead of TGZ
       files. The file base names are mysql-connector-odbc-*
       (driver package) and mysql-connector-odbc-setup (setup
       package). The setup package contains the GUI
       configuration widget library (libmyodbc8S.so) and depends
       on the driver package. The driver package depends on the
       unixODBC libraries (libodbc, libodbcinst); and does not
       conflict with the official Debian package (libmyoodbc).

Bugs Fixed


     * When using SQL_C_WCHAR with SQLGetData, binary data was
       not returned correctly as its hexacecimal representation.
       Related, using SQL_C_CHAR with SQLGetData did return
       binary data as hex. (Bug #28864788, Bug #92429)

     * When binding an SQL_BIT type column to the SQL_C_CHAR
       type, SQLFetchScroll would return the values as an
       integer instead of a char. (Bug #28484784, Bug #91904)


On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Community Server 8.0.20 has been released (part 1/2) (no replies)

$
0
0
[ Due to size limitation, this announcement is split in two.
This is part 1 ]

Dear MySQL users,

MySQL Server 8.0.20, a new version of the popular Open Source
Database Management System, has been released. MySQL 8.0.20 is
recommended for use on production systems.

For an overview of what's new in MySQL 8.0, please see

http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

For information on installing MySQL 8.0.20 on new servers, please see
the MySQL installation documentation at

http://dev.mysql.com/doc/refman/8.0/en/installing.html

MySQL Server 8.0.20 is available in source and binary form for a number of
platforms from our download pages at

http://dev.mysql.com/downloads/mysql/

MySQL Server 8.0.20 is also available from our repository for Linux
platforms, go here for details:

http://dev.mysql.com/downloads/repo/

Windows packages are available via the Installer for Windows:

http://dev.mysql.com/downloads/installer/

along with .ZIP (no-install) packages for more advanced needs.

8.0.20 also comes with a web installer as an alternative to the full
installer.

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.

Downgrade from MySQL 8.0 to MySQL 5.7, or from a MySQL 8.0 release to
a previous MySQL 8.0 release, is not supported. The only supported
alternative is to restore a backup taken before upgrading. It is
therefore imperative that you backup your data before starting the
upgrade process.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 8.0 since
the release of MySQL 8.0.19. It may also be viewed
online at

http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html

Enjoy!

==============================================================================
Changes in MySQL 8.0.20 (2020-04-27, General Availability)


     * Account Management Notes

     * Compilation Notes

     * Deprecation and Removal Notes

     * JSON Notes

     * Logging Notes

     * Optimizer Notes

     * Packaging Notes

     * Performance Schema Notes

     * Pluggable Authentication

     * SQL Syntax Notes

     * Test Suite Notes

     * X Plugin Notes

     * Functionality Added or Changed

     * Bugs Fixed

Account Management Notes


     * Previously, for a user to access definitions of routines
       the user did not define, the user was required to have
       the global SELECT privilege, which is very broad. The new
       SHOW_ROUTINE privilege may be granted instead as a
       privilege with a more restricted scope that permits
       access to routine definitions. (That is, an administrator
       can rescind global SELECT from users that do not
       otherwise require it and grant SHOW_ROUTINE instead.)
       This enables an account to back up stored routines
       without requiring a broad privilege.
       SHOW_ROUTINE provides access to:

          + The contents of the INFORMATION_SCHEMA.ROUTINES
            table.

          + The SHOW CREATE FUNCTION and SHOW CREATE PROCEDURE
            statements.

          + The SHOW FUNCTION CODE and SHOW PROCEDURE CODE
            statements.

          + The SHOW FUNCTION STATUS and SHOW PROCEDURE STATUS
            statements.
       For upgrades from an older version of MySQL, any user who
       has the global SELECT privilege is granted SHOW_ROUTINE,
       if there is not already some user who has SHOW_ROUTINE.

Compilation Notes


     * Solaris: Clang and GCC now can be used for compiling
       MySQL on Solaris, although both are experimental and
       cannot currently be used for production code. (Bug
       #30562248)

     * On EL7 and EL8, CMake configuration was adjusted to look
       for GCC 9 before GCC 8. Because libmysqlclient ships with
       MySQL distributions, client applications built against
       libmysqlclient on those platforms are affected and may
       need to be recompiled. (Bug #30722756)

     * On Windows, the CMake compiler-version check for Visual
       Studio was updated to indicate that Visual Studio 2019 is
       the currently supported version. (The version check can
       be bypassed by running CMake with
       -DFORCE_UNSUPPORTED_COMPILER=1.) (Bug #30688403)

Deprecation and Removal Notes


     * JSON: Previously, it was possible to specify ON EMPTY and
       ON ERROR clauses in either order when invoking the
       JSON_TABLE() function. This runs counter to the SQL
       standard, which stipulates that when ON EMPTY is
       specified, it must always come before any ON ERROR
       clause. For this reason, specifying ON ERROR before ON
       EMPTY is now deprecated, and trying to do so causes the
       server to issue a warning. Support for the nonstandard
       syntax will be removed in a future version of MySQL.

     * The max_length_for_sort_data system variable is now
       deprecated due to optimizer changes that make it obsolete
       and of no effect.
       References: See also: Bug #30473261.

     * The use of VALUES() to access new row values in INSERT
       ... ON DUPLICATE KEY UPDATE statements is now deprecated,
       and is subject to removal in a future MySQL release.
       Instead, you should use aliases for the new row and its
       columns as implemented in MySQL 8.0.19 and later.
       For example, the statement shown here uses VALUES() to
       access new row values:
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
       Henceforth, you should instead use a statement similar to
       the following, which uses an alias for the new row:
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) AS new
  ON DUPLICATE KEY UPDATE c = new.a+new.b;
       Alternatively, you can employ aliases for both the new
       row and each of its columns, as shown here:
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) AS new(m,n,p)
  ON DUPLICATE KEY UPDATE c = m+n;
       For more information and examples, see INSERT ... ON
       DUPLICATE KEY UPDATE Statement
       (https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html).

JSON Notes


     * The rapidjson library included with MySQL has been
       upgraded to the GitHub snapshot of 16 January 2020. A fix
       for a compiler error encountered when building from the
       snapshot on Mac OS X has been added. (Bug #30898701)

Logging Notes


     * Sending a SIGHUP signal to the server no longer causes it
       to write a status report to the error log. Other actions
       performed by the server in response to SIGHUP continue to
       be done. See Unix Signal Handling in MySQL
(https://dev.mysql.com/doc/refman/8.0/en/unix-signal-response.html).
       (Bug #30578923)

     * The JSON-format error log writer now includes a ts
       (timestamp) in log messages. The value is an integer
       indicating milliseconds since the epoch ('1970-01-01
       00:00:00' UTC). See Error Log Message Format
       (https://dev.mysql.com/doc/refman/8.0/en/error-log-format.html).

Optimizer Notes


     * Hash joins are now used any time a nested block loop
       would be employed. This means that hash joins can be used
       for the following types of queries:

          + Inner non-equi-joins

          + Semijoins

          + Antijoins

          + Left outer joins

          + Right outer joins
       This builds on work done for MySQL 8.0.18, and removes a
       limitation in the implementation such that a hash join
       could be used only with a query having at least one
       equi-join condition. In addition, both inner and outer
       joins (including semijoins and antijoins) can now employ
       batched key access (BKA), which allocates join buffer
       memory incrementally so that individual queries need not
       use up large amounts of resources that they do not
       actually require for resolution. For more information,
       see Batched Key Access Joins
(https://dev.mysql.com/doc/refman/8.0/en/bnl-bka-optimization.html#bka-optimization).
       This fix completes the task of replacing the executor
       used in previous versions of MySQL with the iterator
       executor, including replacement of the old index subquery
       engines that governed queries of the form WHERE value IN
       (SELECT column FROM table WHERE condition) for those IN
       queries which have not been converted into semijoins, as
       well as queries materialized into the same form, which
       depended on internals from the old executor.
       For more information and examples, see Hash Join
       Optimization
       (https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html).
       (Bug #30528604, Bug #30473261, Bug #30912972)

     * This release implements several new index-level optimizer
       hints, which function much like existing index hints that
       employ SQL keywords such as FORCE INDEX and IGNORE INDEX.
       These are intended to replace the equivalent index hints,
       which will be deprecated in a future MySQL release (and
       eventually removed). The new hints are listed here, along
       with a brief description of each:

          + JOIN_INDEX: Forces MySQL to use the specified index
            or indexes for any available access method, such as
            ref, range, index_merge, and so on. This is
            equivalent to the FORCE INDEX FOR JOIN index hint.
            NO_JOIN_INDEX: Causes the server to ignore the
            specified index or indexes for any access method.
            The equivalent index hint is IGNORE INDEX FOR JOIN.

          + GROUP_INDEX: Makes the server use the specified
            index or indexes for index scans for GROUP BY
            operations. Equivalent to FORCE INDEX FOR GROUP BY.
            NO_GROUP_INDEX: Forces MySQL to ignore the specified
            index or indexes for index scans for GROUP BY
            operations. The equivalent index hint is IGNORE
            INDEX FOR GROUP BY.

          + ORDER_INDEX: Causes MySQL to use the specified index
            or indexes for sorting rows. It is equivalent to
            FORCE INDEX FOR ORDER BY.
            NO_ORDER_INDEX: Keeps the server from using the
            specified index or indexes for performing row sorts.
            Equivalent to IGNORE INDEX FOR ORDER BY.

          + INDEX: Acts as the combination of JOIN_INDEX,
            GROUP_INDEX, and ORDER_INDEX, forcing the server to
            use the specified index or indexes for any and all
            scopes. Equivalent to FORCE INDEX.
            NO_INDEX: Acts as the combination of NO_JOIN_INDEX,
            NO_GROUP_INDEX, and NO_ORDER_INDEX; that is, it
            forces MySQL to ignore the specified index or
            indexes for any and all scopes. It is equivalent to
            the index hint IGNORE INDEX.
       Consider the following query using index hints on a table
       having the indicated columns and index:
SELECT a,b FROM t1 USE INDEX FOR ORDER BY (i_ab) ORDER BY a;
       Using the index-level optimizer hints introduced in this
       release, this query can be rewritten as shown here:
SELECT /*+ ORDER_INDEX(t1 i_ab) */ a,b FROM t1 ORDER BY a;
       The new index-level optimizer hints can be used with
       SELECT, UPDATE, and DELETE statements. (This is unlike
       index hints using FORCE INDEX or IGNORE INDEX, which can
       be used only with SELECT and UPDATE.) Thus, statements
       like the following are possible:
UPDATE /*+ INDEX(t1 i_ab) */ t1 SET d = 1
    WHERE a = 1 AND b = 2 AND c = 3;

DELETE /*+ INDEX(t1 i_a,i_c) */ FROM t1
    WHERE a = 1 AND b = 2 AND c = 3;
       Multiple hints can be specified within the same comment,
       like this:
DELETE /*+ INDEX(t1 i_a) JOIN_INDEX(t1 i_c) */
    FROM t1 WHERE a = 1 AND b = 2 AND c = 3;
       Index-level optimizer hints can be used concurrently with
       other optimizer hints. When you do so, the index-level
       hints apply first; the effects of any other optimizer
       hints are limited to the set of indexes permitted by the
       index-level hints.
       Index-level hints can also be used when creating views,
       as shown here:
CREATE VIEW v1 AS
    SELECT /*+ NO_INDEX(t1 i_a,i_b) */ a FROM t1
    WHERE b IN
        (SELECT /*+ NO_INDEX(t1 i_ab,i_b) */ a FROM t1 WHERE a > 3)
    ORDER BY a;
       If these index-level optimizer hints are used in the same
       statement as index hints, the index hints are ignored.
       The new index-level optimizer hints are equivalent to
       FORCE INDEX rather than USE INDEX; in other words, using
       one or more of the index-level optimizer hints means that
       a table scan is used only if there is no way to use one
       of the named indexes to find rows in the table. To cause
       MySQL to use the same index or set of indexes as with a
       given instance of USE INDEX, you can use NO_INDEX,
       NO_JOIN_INDEX, NO_GROUP_INDEX, NO_ORDER_INDEX, or some
       combination of these.
       For more information and examples, see Index-Level
       Optimizer Hints
(https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-index-level).

Packaging Notes


     * Binary packages that include curl rather than linking to
       the system curl library have been upgraded to use curl
       7.69.0. (Bug #30866333)

     * For RPM packages, the comp_err utility has been moved to
       the -test subpackage and marked as a test component. (Bug
       #30716034)

     * The bundled LZ4 library was upgraded to version 1.9.2.
       This fixes certain issues such as Bug #30369643 producing
       a mysqlpump runtime error.
       References: See also: Bug #30369643.

     * The bundled libedit library was upgraded to version 3.1.

Performance Schema Notes


     * The Performance Schema collected session-related
       statistics for errors that can occur only globally and
       not per session. This is no longer done, reducing memory
       overhead for error instrumentation. Additionally, rows
       for global errors are no longer included in error
       summaries reported per thread, account, user, or host.
       (Bug #30311574)

Pluggable Authentication


     * An LDAP server can be configured to delegate LDAP
       searches to another LDAP server, a functionality known as
       LDAP referral. However, enabling LDAP referral can cause
       searches to fail with LDAP operation errors under certain
       conditions. To enable the MySQL Enterprise Edition LDAP
       authentication plugins to avoid referral errors, the new
       authentication_ldap_simple_referral and
       authentication_ldap_sasl_referral system variables are
       available. These variables enable each plugin to control
       whether the LDAP server should use referral during MySQL
       authentication. See LDAP Search Referral
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-ldap-referral).

     * The MySQL Enterprise Edition SASL LDAP authentication
       plugin now supports GSSAPI/Kerberos as an authentication
       method for MySQL clients and servers on Linux. This is
       useful in Linux environments where applications access
       LDAP using Microsoft Active Directory, which has Kerberos
       enabled by default. See LDAP Authentication Methods
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-auth-methods).
       This feature is available for all RPM and DEB packages
       for Linux, but not for the TAR archive packages.

SQL Syntax Notes


     * Previously, the INTO clause for SELECT statements could
       appear at either of two positions:

          + Before FROM:
SELECT * INTO OUTFILE 'file_name' FROM table_name;


          + Before a trailing locking clause:
SELECT * FROM table_name INTO OUTFILE 'file_name' FOR UPDATE;

       INTO now can appear in a third position, at the end of
       SELECT statements:
SELECT * FROM table_name FOR UPDATE INTO OUTFILE 'file_name';

       Placing INTO at the end is the preferred position. The
       position before a locking clause is now deprecated and
       support for it will be removed in a future MySQL version.
       In other words, INTO after FROM but not at the end of the
       SELECT produces a warning.
       Additionally, some changes have been made for UNION with
       respect to INTO. These UNION variants containing INTO are
       syntactically correct and produce the same result:
... UNION SELECT * FROM table_name INTO OUTFILE 'file_name';
... UNION (SELECT * FROM table_name) INTO OUTFILE 'file_name';
... UNION SELECT * INTO OUTFILE 'file_name' FROM table_name;
... UNION (SELECT * INTO OUTFILE 'file_name' FROM table_name);

       However, the last two variants are confusing, as if they
       collect information from the named table rather than the
       entire query expression (the UNION). Those two UNION
       variants containing INTO now are deprecated and support
       for them will be removed in a future MySQL version. Thus:

          + In the trailing query block of a query expression,
            use of INTO before FROM produces a warning.

          + In a parenthesized trailing block of a query
            expression, use of INTO (regardless of its position
            relative to FROM) produces a warning.
       The deprecations apply to all INTO forms: INTO OUTFILE,
       INTO DUMPFILE, and INTO var_list.

Test Suite Notes


     * The perfschema.idx_compare_replication_applier_status
       test case was updated to store the old value of number of
       transaction retries and compare it with the new value of
       number of transaction retries. Thanks to Facebook for the
       contribution. (Bug #30810627, Bug #98389)

X Plugin Notes


     * If the MySQL Server instance's client connections limit,
       as specified by the max_connections server system
       variable, was reached while X Plugin was starting up, X
       Plugin was unable to create a session to get the server
       configuration, so failed to start. X Plugin now creates
       an administrative session (using the mysql_admin_session
       service) during startup, which is not subject to the
       client connections limit. (Bug #30894981)

     * When an X Protocol session could not be initialized
       because there were too many X Protocol connections
       already, the error code 5011 Could not open session was
       returned. The more relevant error code 1040 Too many
       connections is now returned in this situation. (Bug
       #30753637)

     * An issue with validating JSON references caused an error
       when creating a collection with a validation schema. (Bug
       #30733330)

     * During shutdown of a MySQL Server instance with X
       Protocol connections to clients, a race condition in X
       Plugin could cause invalid client connections to be
       accepted for processing. Because invalid clients were
       ignored for client timeout verification during shutdown,
       these clients blocked shutdown until the timeout set by
       the mysqlx_wait_timeout system variable was reached,
       which defaults to 8 hours. To prevent this issue, client
       timeout verification now includes clients that are in an
       invalid state. (Bug #30702685)

     * When connecting to a MySQL 8.0 server, X Plugin set a
       different collation for the session to that used by the
       mysql client, which could cause issues with queries that
       depended on the collation. X Plugin now uses the
       utf8mb4_0900_ai_ci collation, which is the default for
       the utf8mb4 characterset. (Bug #30516849)

     * The worker threads for X Protocol connections were
       identified as system threads on creation, and assigned to
       the SYS_default resource group. This identification meant
       they could not be assigned to user resource groups for
       resource management purposes. They are now identified as
       user threads and assigned to the USR_default resource
       group. Note that X Protocol does not currently support
       CREATE, ALTER, DROP, and SET RESOURCE GROUP statements,
       but these statements can operate on X Protocol connection
       threads using classic MySQL protocol connections. (Bug
       #30059288)

     * X Plugin can now access the MySQL system variables as
       soon as initialization starts, so the plugin install
       thread can set up the required connectivity itself rather
       than starting a separate thread. (Bug #29127302)

Functionality Added or Changed


     * Important Change: Previously, including any column of a
       blob type larger than TINYBLOB or BLOB as the payload in
       an ordering operation caused the server to revert to
       sorting row IDs only, rather than complete rows; this
       resulted in a second pass to fetch the rows themselves
       from disk after the sort was completed. Since JSON and
       GEOMETRY columns are implemented internally as LONGBLOB,
       this caused the same behavior with these types of columns
       even though they are almost always much shorter than the
       4GB maximum for LONGBLOB (or even the 16 MB maximum for
       MEDIUMBLOB). The server now converts columns of these
       types into packed addons in such cases, just as it does
       TINYBLOB and BLOB columns, which in testing showed a
       significant performance increase. The handling of
       MEDIUMBLOB and LONGBLOB columns in this regard remains
       unchanged.
       One effect of this enhancement is that it is now possible
       for Out of memory errors to occur when trying to sort
       rows containing very large (multi-megabtye) JSON or
       GEOMETRY column values if the sort buffers are of
       insufficient size; this can be compensated for in the
       usual fashion by increasing the value of the
       sort_buffer_size system variable. (Bug #30400985, Bug
       #30804356)

     * InnoDB: The Contention-Aware Transaction Scheduling
       (CATS) algorithm, which prioritizes transactions that are
       waiting for locks, was improved. Transaction scheduling
       weight computation is now performed a separate thread
       entirely, which improves computation performance and
       accuracy.
       The First In First Out (FIFO) algorithm, which had also
       been used for transaction scheduling, was removed. The
       FIFO algorithm was rendered redundant by CATS algorithm
       enhancements. Transaction scheduling previously performed
       by the FIFO algorithm is now performed by the CATS
       algorithm.
       A TRX_SCHEDULE_WEIGHT column was added to the
       INFORMATION_SCHEMA.INNODB_TRX table, which permits
       querying transaction scheduling weights assigned by the
       CATS algorithm.
       The following INNODB_METRICS counters were added for
       monitoring code-level transaction scheduling events:

          + lock_rec_release_attempts
            The number of attempts to release record locks.

          + lock_rec_grant_attempts
            The number of attempts to grant record locks.

          + lock_schedule_refreshes
            The number of times the wait-for graph was analyzed
            to update transaction schedule weights.

     * InnoDB: The storage area for the doublewrite buffer was
       moved from the system tablespace to doublewrite files.
       Moving the doublewrite buffer storage area out of the
       system tablespace reduces write latency, increases
       throughput, and provides flexibility with respect to
       placement of doublewrite buffer pages. The following
       system variables were introduced for advanced doublewrite
       buffer configuration:

          + innodb_doublewrite_dir
            Defines the doublewrite buffer file directory.

          + innodb_doublewrite_files
            Defines the number of doublewrite files.

          + innodb_doublewrite_pages
            Defines the maximum number of doublewrite pages per
            thread for a batch write.

          + innodb_doublewrite_batch_size
            Defines the number of doublewrite pages to write in
            a batch.
       For more information, see Doublewrite Buffer
(https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html).

     * EXPLAIN ANALYZE can now be stopped during execution using
       KILL QUERY or CTRL-C. (Bug #30787515)

     * EXPLAIN FORMAT=TREE now displays inversion information
       for windowing functions. (Bug #30770631)

     * EXPLAIN FORMAT=TREE output has been improved to provide
       more information about evaluated window functions, and to
       match that supplied for regular aggregates. (Bug
       #30573446, Bug #30582782)

     * EXPLAIN ANALYZE now supports the FORMAT option.
       Currently, TREE is the only supported format. (Bug
       #30315224)

     * Configuring with the -DWITH_LTO=1 CMake option now works
       on macOS. (Bug #30125902)

     * From MySQL 8.0.20, you can enable binary log transaction
       compression on a MySQL server instance. When binary log
       transaction compression is enabled, transaction payloads
       are compressed using the zstd algorithm, and then written
       to the server's binary log file as a single event (a
       Transaction_payload_event). Compressed transaction
       payloads remain in a compressed state while they are sent
       in the replication stream to replication slaves, other
       Group Replication group members, or clients such as
       mysqlbinlog. They are not decompressed by receiver
       threads, and are written to the relay log still in their
       compressed state. Binary log transaction compression
       therefore saves storage space both on the originator of
       the transaction and on the recipient (and for their
       backups), and saves network bandwidth when the
       transactions are sent between server instances.
       You can enable binary log transaction compression on a
       MySQL server instance using the
       binlog_transaction_compression system variable, which
       defaults to OFF. You can also use the
       binlog_transaction_compression_level_zstd system variable
       to set the level for the zstd algorithm that is used for
       compression. This value determines the compression
       effort, from 1 (the lowest effort) to 22 (the highest
       effort).

     * A new option for the CHANGE MASTER TO statement,
       REQUIRE_TABLE_PRIMARY_KEY_CHECK, enables a replication
       slave to select its own policy for primary key checks.
       When the option is set to ON for a replication channel,
       the slave always uses the value ON for the
       sql_require_primary_key system variable in replication
       operations, requiring a primary key. When the option is
       set to OFF, the slave always uses the value OFF for the
       sql_require_primary_key system variable in replication
       operations, so that a primary key is never required, even
       if the master required one. When the
       REQUIRE_TABLE_PRIMARY_KEY_CHECK option is set to STREAM,
       which is the default, the slave uses whatever value is
       replicated from the master for each transaction.

          + For multisource replication, setting
            REQUIRE_TABLE_PRIMARY_KEY_CHECK to ON or OFF enables
            a slave to normalize behavior across the replication
            channels for different masters, and keep a
            consistent setting for the sql_require_primary_key
            system variable. Using ON safeguards against the
            accidental loss of primary keys when multiple
            masters update the same set of tables. Using OFF
            allows masters that can manipulate primary keys to
            work alongside masters that cannot.

          + When PRIVILEGE_CHECKS_USER is set to apply
            replication privilege checks to the channel, setting
            REQUIRE_TABLE_PRIMARY_KEY_CHECK to ON or OFF means
            that the user account does not need session
            administration level privileges to set restricted
            session variables, which are required to change the
            value of sql_require_primary_key to match the
            master's setting for each transaction.

     * Since MySQL 8.0.19, compression has been supported for
       messages sent over X Protocol connections. Connections
       can be compressed if the server and the client agree on a
       compression algorithm to use. By default, the server
       permits the Deflate, LZ4, and zstd compression
       algorithms, or you can set the
       mysqlx_compression_algorithms system variable to include
       only the ones you permit. In MySQL 8.0.19, X Protocol
       uses the library default compression level for each
       algorithm, and the client cannot negotiate this.
       From MySQL 8.0.20, the client can request a specific
       compression level during capability negotiations for an X
       Protocol connection. X Protocol sets a maximum
       compression level for each algorithm, which prevents the
       server from agreeing to high compression levels that are
       requested by clients if that would consume too much
       resource on the server. The maximum compression levels
       are initially set to 5 for Deflate, 8 for LZ4, and 11 for
       zstd. You can adjust these settings using the new
       mysqlx_deflate_max_client_compression_level,
       mysqlx_lz4_max_client_compression_level, and
       mysqlx_zstd_max_client_compression_level system
       variables.
       New default compression levels for X Protocol have also
       been selected through performance testing as being a good
       trade-off between compression time and network transit
       time. These defaults are not necessarily the same as the
       library default for each algorithm. They are applied if
       the client does not request a compression level for the
       algorithm. The default compression levels are initially
       set to 3 for Deflate, 2 for LZ4, and 3 for zstd. You can
       adjust these settings using the new
       mysqlx_deflate_default_compression_level,
       mysqlx_lz4_default_compression_level, and
       mysqlx_zstd_default_compression_level system variables.

MySQL Community Server 8.0.20 has been released (part 2/2) (no replies)

$
0
0
[ This is part 2 of the announcement ]

Bugs Fixed


     * Performance: Certain queries against tables with spatial
       indexes were not performed as efficiently following an
       upgrade from MySQL 5.7 to MySQL 8.0. (Bug #94655, Bug
       #29488350)
       References: See also: Bug #89551, Bug #27499984.

     * NDB Cluster: NDB defines one SPJ worker per node owning a
       primary partition of the root table. If this table used
       read from any replica, DBTC put all SPJ workers in the
       same DBSPJ instance, which effectively removed the use of
       some SPJ workers. (Bug #30639165)

     * NDB Cluster: Executing the SHOW command using an ndb_mgm
       client binary from NDB 8.0.16 or earlier to access a
       management node running NDB 8.0.17 or later produced the
       error message Unknown field: is_single_user. (Bug
       #30599413)
       References: See also: Bug #16275500.

     * InnoDB: A CREATE UNDO TABLESPACE operation that specified
       an undo data file name without specifying a path removed
       an existing undo data file of the same name from the
       directory specified by innodb_undo_directory variable.
       The file name conflict check was performed on the data
       directory instead of the directory specified by the
       innodb_undo_directory variable. (Bug #30908328, Bug
       #98628)

     * InnoDB: In debug builds, a regression introduced in MySQL
       8.0.19 slowed down mutex and rw-lock deadlock debug
       checks. (Bug #30886393)
       References: This issue is a regression of: Bug #30628872.

     * InnoDB: Valgrind testing raised an error indicating that
       a conditional jump or move depends on an uninitialized
       value. The error was a false-positive due to invalid
       validation logic. (Bug #30837136)

     * InnoDB: Missing barriers in rw_lock_debug_mutex_enter()
       (in source file sync0debug.cc) could cause a thread to
       wait without ever being woken up. (Bug #30819167)

     * InnoDB: To improve server initialization speed,
       fallocate() is now used to allocate space for redo log
       files. (Bug #30804431)

     * InnoDB: A data dictionary table open function was
       implemented with incorrect lock ordering. (Bug #30782103,
       Bug #97825)

     * InnoDB: Changes to parallel read threads functionality
       introduced in MySQL 8.0.17 caused a degradation in SELECT
       COUNT(*) performance. Pages were read from disk
       unnecessarily. (Bug #30766089)

     * InnoDB: DDL logging was not performed for SQL operations
       executed by the bootstrap thread using the init_file
       startup variable, causing files to be left behind that
       should have been removed during a post-DDL stage. (Bug
       #30721214)

     * InnoDB: Adding an index on a column cast as a JSON array
       on a table with a specific number of records failed with
       an "Incorrect key file for table" error. (Bug #30709525,
       Bug #98098)

     * InnoDB: A Valgrind error reported that an uninitialized
       lock->writer_thread value was used in a conditional jump.
       (Bug #30694177)

     * InnoDB: An internal buffer pool statistics counter
       (n_page_gets) was partitioned by page number to avoid
       contention when accessed by multiple threads. (Bug
       #30604841, Bug #97822)

     * InnoDB: A tablespace import operation failed with a
       schema mismatch error due to the .cfg file and the data
       dictionary both containing default values for a column
       that was added using ALGORITHM=INSTANT. An error should
       only occur if default values differ. (Bug #30561144)

     * InnoDB: A slow shutdown failed to flush some GTIDs,
       requiring recovery of unflushed GTIDs from the undo log.
       (Bug #30548229)

     * InnoDB: A broken alignment requirement in the code that
       allocates a prefix in memory for Performance Schema
       memory allocations caused a failure on MySQL builds
       optimized for macOS and FreeBSD. (Bug #30530857)

     * InnoDB: Adding a virtual column raised an assertion
       failure due to data that was missing from the new data
       dictionary object created for the table. (Bug #30524263)

     * InnoDB: A required latch was not taken when checking the
       mode of an undo tablespace. A required latch was also not
       taken when checking whether an undo tablespace is empty.
       (Bug #30509134)

     * InnoDB: Allocating an update undo log segment to an XA
       transaction for persisting a GTID value before the
       transaction performed any data modifications caused a
       failure. (Bug #30456328)

     * InnoDB: A query executed on a partitioned table with a
       discarded tablespace raised an assertion failure. (Bug
       #30437407, Bug #97271)

     * InnoDB: The row_upd_clust_rec_by_insert function, which
       marks a clustered index record as deleted and inserts an
       updated version of the record into the clustered index,
       passed an incorrect n_ext value (the total number of
       external fields) to lower level functions, causing an
       assertion failure. (Bug #30437378)

     * InnoDB: During a cloning operation, writes to the data
       dictionary buffer table at shutdown were too late,
       causing a failure. Newly generated dirty pages were not
       being flushed. (Bug #30427369, Bug #30405535, Bug
       #30405535)

     * InnoDB: An operation performed with the
       innodb_buffer_pool_evict debug variable set to
       uncompressed caused an assertion failure. (Bug #30405531)

     * InnoDB: Read-write lock code (rw_lock_t) that controls
       ordering of access to the boolean recursive flag and the
       writer thread ID using GCC builtins or os_mutex when the
       builtins are not available, was revised to use C++
       std::atomic in some instances.
       Thanks to Yibo Cai from ARM for the contribution. (Bug
       #30401416, Bug #97150)

     * InnoDB: A failure occurred while upgrading from MySQL 5.7
       to MySQL 8.0. A server data dictionary object was missing
       information about the FTS_DOC_ID column and
       FTS_DOC_ID_INDEX that remain after dropping a FULLTEXT
       index. (Bug #30357954)

     * InnoDB: Unnecessary messages about parallel scans were
       printed to the error log. (Bug #30330448)

     * InnoDB: During upgrade from MySQL 5.7 to MySQL 8.0,
       clustered indexes named GEN_CLUST_INDEX are renamed to
       PRIMARY, which resulted in duplicate entries for the
       clustered indexes being added to the
       mysql.innodb_index_stats table. (Bug #30330448)

     * InnoDB: Various internal functions computed write event
       slots in an inconsistent manner. (Bug #30228108, Bug
       #96519)

     * InnoDB: Under specific circumstances, it was possible
       that tablespace encryption key information would not be
       applied during the redo log apply phase of crash
       recovery. (Bug #30209760)

     * InnoDB: A file operation failure caused the page tracking
       archiver to fail, which in turn caused the main thread to
       hang, resulting in an assertion failure. Also,
       incorrectly, the page tracking archiver remained enabled
       in innodb_read_only mode. (Bug #30202643)

     * InnoDB: An index corruption error was reported when
       attempting to import a tablespace containing a table
       column that was added using ALGORITHM=INSTANT. The error
       was due to missing metadata associated with the instantly
       added column. (Bug #30191523, Bug #96477)

     * InnoDB: A transaction attempting to fetch an LOB record
       encountered a null LOB reference, causing an assertion
       failure. However, the null LOB reference was valid in
       this particular scenario because the LOB value was not
       yet fully written. (Bug #30144303)

     * InnoDB: During a parallel read operation, the rollback of
       a table load operation while autocommit was disabled
       resulted in a server to exit due to assertion code that
       did not account for the possibility of tree structure
       changes during a parallel read. (Bug #30060690)

     * InnoDB: The current size value maintained in a rollback
       segment memory object was found to be invalid, causing an
       assertion failure in function trx_purge_free_segment(). A
       validation routine (trx_rseg_t::validateCurrSize()) was
       added to verify the current size value. (Bug #29947027)

     * InnoDB: A prepared statement executed with invalid
       parameter values raised an assertion failure. (Bug
       #29880907)

     * InnoDB: An add column operation caused an assertion
       failure. The failure was due to a dangling pointer. (Bug
       #29866408)
       References: This issue is a regression of: Bug #28491099.

     * InnoDB: Updating certain InnoDB system variables that
       take string values raised invalid read errors during
       Valgrind testing. (Bug #29717909, Bug #95215)

     * InnoDB: Redo log records for modifications to undo
       tablespaces increased in size in MySQL 8.0 due to a
       change in undo tablespace ID values, which required
       additional bytes. The change in redo log record size
       caused a performance regression in workloads with heavy
       write I/O. To address this issue, the redo log format was
       modified to reduce redo log record size for modifications
       to undo tablespaces. (Bug #29536710)

     * InnoDB: Additional information about InnoDB file writes,
       including progress data, is now printed to the error log.
       (Bug #29472295, Bug #94634)

     * InnoDB: An insert statement on a table with a spatial
       index raised a record type mismatch assertion due to a
       tuple corruption. (Bug #29465567)

     * InnoDB: A function that calculates undo log record size
       could calculate an incorrect length value in the case of
       a corrupted undo log record, resulting in a malloc
       failure. Assertion code was added to detect incorrect
       calculations. (Bug #29448406, Bug #82734)

     * Replication: The thread used by Group Replication's
       message service was not correctly registered by the
       Performance Schema instrumentation, so the thread actions
       were not visible in Performance Schema tables. (Bug
       #30824676)

     * Replication: Group Replication initiates and manages
       cloning operations for distributed recovery, but group
       members that have been set up to support cloning may also
       participate in cloning operations that a user initiates
       manually. In releases before MySQL 8.0.20, you could not
       initiate a cloning operation manually if the operation
       involved a group member on which Group Replication was
       running. From MySQL 8.0.20, you can do this, provided
       that the cloning operation does not remove and replace
       the data on the recipient. The statement to initiate the
       cloning operation must therefore include the DATA
       DIRECTORY clause if Group Replication is running. (Bug
       #30798640)

     * Replication: For Group Replication channels, issuing the
       CHANGE MASTER TO statement with the PRIVILEGE_CHECKS_USER
       option while Group Replication was running caused the
       channel's relay log files to be deleted. Transactions
       that had been received and queued in the relay log, but
       not yet applied, could be lost in this situation. The
       CHANGE MASTER TO statement can now only be issued when
       Group Replication is not running. (Bug #30655369)

     * Replication: Group Replication's failure detection
       mechanism raises a suspicion if a server stops sending
       messages, and the member is eventually expelled provided
       that a majority of the group members are still
       communicating. However, the failure detection mechanism
       did not take into account the situation where one or more
       of the group members in the majority had actually already
       been marked for expulsion, but had not yet been removed
       from the group. Where the network was unstable and
       members frequently lost and regained connection to each
       other in different combinations, it was possible for a
       group to end up marking all its members for expulsion,
       after which the group would cease to exist and have to be
       set up again.
       Group Replication's Group Communication System (GCS) now
       tracks the group members that have been marked for
       expulsion, and treats them as if they were in the group
       of suspect members when deciding if there is a majority.
       This ensures at least one member remains in the group and
       the group can continue to exist. When an expelled member
       has actually been removed from the group, GCS removes its
       record of having marked the member for expulsion, so that
       the member can rejoin the group if it is able to. (Bug
       #30640544)

     * Replication: While an SQL statement was in the process of
       being rewritten for the binary log so that sensitive
       information did not appear in plain text, if a SHOW
       PROCESSLIST statement was used to inspect the query, the
       query could become corrupted when it was written to the
       binary log, causing replication to stop. The process of
       rewriting the query is now kept private, and the query
       thread is updated only when rewriting is complete. (Bug
       #30569003, Bug #97531, Bug #30654405)

     * Replication: When a GRANT or REVOKE statement is only
       partially executed, an incident event is logged in the
       binary log, which makes the replication slave's applier
       thread stop so that the slave can be reconciled manually
       with the master. Previously, if a failed GRANT or REVOKE
       statement was the first statement executed in the
       session, no GTID was applied to the incident event
       (because the cache manager did not yet exist for the
       session), causing an error on the replication slave.
       Also, no incident event was logged in the situation where
       a GRANT statement created a user but then failed because
       the privileges had been specified incorrectly, again
       causing an error on the replication slave. Both these
       issues have now been fixed. (Bug #30566518, Bug
       #30324661)

     * Replication: Compression is now triggered for the
       mysql.gtid_executed table when the
       thread/sql/compress_gtid_table thread is launched after
       the server start, and the effects are visible when the
       compression process is complete. (Bug #30541799)

     * Replication: Performance Schema tables could not be
       accessed on a MySQL server with Group Replication that
       was running under high load conditions. (Bug #30112711,
       Bug #30675790)

     * Replication: Internal queries from Group Replication to
       the Performance Schema for statistics on local group
       members failed if they occurred simultaneously with
       changes to the group's membership. Locking for the
       internal queries has been improved to fix the issue. (Bug
       #30049349, Bug #30791583, Bug #30963553)

     * Replication: In the event of an unplanned disconnection
       of a replication slave from the master, the reference to
       the master's dump thread might not be removed from the
       list of registered slaves, in which case statements that
       accessed the list of slaves would fail. The issue has now
       been fixed. (Bug #29915479)

     * Replication: When a partitioned table was involved, the
       server did not correctly handle the situation where a row
       event could not be written to the binary log due to a
       lack of cache space. An appropriate error is now returned
       in this situation. (Bug #29848931)

     * Replication: During Group Replication's distributed
       recovery process, if a joining member is unable to
       complete a remote cloning operation with any donor from
       the group, it uses state transfer from a donor's binary
       log to retrieve all of the required data. However, if the
       last attempted remote cloning operation was interrupted
       and left the joining member with incomplete or no data,
       an attempt at state transfer immediately afterwards could
       also fail. Before attempting state transfer following a
       failed remote cloning operation, Group Replication now
       checks that the remote cloning operation did not reach
       the stage of removing local data from the joining member.
       If data was removed, the joining member leaves the group
       and takes the action specified by the
       group_replication_exit_state_action system variable. (Bug
       #29669099, Bug #29944828)

     * Replication: With the settings binlog_format=MIXED,
       tx_isolation=READ-COMMITTED, and binlog_row_image=FULL,
       an INSERT ... SELECT query involving a transactional
       storage engine omitted any columns with a null value from
       the row image written to the binary log. This happened
       because when processing INSERT ... SELECT statements, the
       columns were marked for inserts before the binary logging
       format was selected. The issue has now been fixed. (Bug
       #29110804, Bug #93423)

     * Replication: Before taking certain actions, Group
       Replication checks what transactions are running on the
       server. Previously, the service used for this check did
       not count transactions that were in the commit phase,
       which could result in the action timing out. Now,
       transactions that are in the commit phase are included in
       the set of currently ongoing transactions. (Bug
       #28327838)

     * JSON: When JSON_TABLE() was used as part of an INSERT
       statement in strict mode, conversion errors handled by
       any ON ERROR clause could cause the INSERT to be
       rejected. Since errors are handled by an ON ERROR clause,
       the statement should not be rejected unless ERROR ON
       ERROR is actually specified.
       This issue is fixed by ignoring warnings when converting
       values to the target type if NULL ON ERROR or DEFAULT ...
       ON ERROR has been specified or is implied. (Bug
       #30628330)

     * JSON: The output from JSON_TABLE() was not always correct
       when used in views. This fix corrects the following
       issues:

          + Column names were not quoted, causing syntax errors
            when quoting was needed for these.

          + Some column types were misreported.

          + Some column type attributes such as UNSIGNED were
            lost.

          + Column character set and collation were lost.
       (Bug #30263373)

     * JSON: The functions JSON_SCHEMA_VALID() and
       JSON_SCHEMA_VALIDATION_REPORT() formerly checked to
       ensure that their arguments were convertible to JSON each
       time a prepared statement including these was executed,
       which was neither efficient nor necessary. Now in such
       cases, the check is performed only once, when the
       statement is prepared. (Bug #97878, Bug #30622327)

     * Privilege requirements were checked incorrectly for
       stored objects with a DEFINER that has the SYSTEM_USER
       privilege. (Bug #31077699)

     * A number of errors reported by Clang in the documentation
       generated from the MySQL sources have been corrected.
       (Bug #30956093)

     * On FreeBSD, the krb5 package is a now a dependency. (Bug
       #30887620)

     * If a query contained multiple references to the same
       common table expression (CTE) and a pseudo-comment
       crossed borders of the CTE definition, the parser failed
       with confusing syntax error messages. (Bug #30871301)

     * For installation using Debian packages, the
       /var/run/mysqld directory was not created. (Bug
       #30855015, Bug #98484)

     * mysqlslap did not shut down its threads properly when SQL
       statements returned an error. This could result in
       attempts to free already freed memory. (Bug #30850310)

     * When X Plugin was attempting to add a document to a
       collection as either an insertion or an update in the
       case of a duplicate key, in the case where the document
       failed a unique key constraint in a field other than the
       primary key, the error returned by X Plugin did not state
       that this was the cause of the issue. The appropriate
       error is now returned. (Bug #30843865)

     * An integer value generated by transformations in the
       resolver was supplied to a test which expected a boolean.
       (Bug #30837240)

     * A query using an IN expression that accessed one or more
       columns holding large string values could lead to a
       memory leak. (Bug #30814171)

     * Statements did not work properly when the target of a
       DELETE was a common table expression. (Bug #30796015, Bug
       #98330)

     * Starting the server with create_admin_listener_thread
       enabled and without admin_address enabled caused an
       abnormal exit during the server shutdown process. (Bug
       #30785609)

     * When a table had both a primary key and a secondary key
       on the same column, but for different lengths, the range
       optimizer chose the wrong key part in the secondary index
       for comparing range values. (Bug #30783011)

     * In some cases, errors caused when DISTINCT was used with
       an aggregate function whose argument was of an incorrect
       type were not propagated correctly. (Bug #30782687)

     * For replication using compression, the slave could raise
       an assertion if the master was restarted. (Bug #30774692)

     * For debug builds, the server could exit trying to print
       an optimizer trace. (Bug #30773218, Bug #98258)

     * The mysql_real_connect_nonblocking() C API function
       exhibited blocking behavior. (Bug #30771233)

     * With LOCK TABLES active, while processing
       INFORMATION_SCHEMA queries, the server could attempt to
       lock internal temporary tables (which need no locks),
       causing an assertion to be raised. (Bug #30764651, Bug
       #98221)

     * The mysqldump internal network timeout was increased from
       700 to 86400 seconds to accommodate connecting to busy or
       unresponsive servers. (Bug #30755992, Bug #98203)

     * Configuring with -DWITH_SASL=path/to/custom/installation
       inadvertently caused libsasl to be linked into the
       daemon_memcached plugin. (Bug #30755301)

     * After deleting the temporary table associated with a
       window function's frame buffer, the temporary table
       parameter for the frame buffer was not cleaned up,
       causing string buffers associated with copy fields not to
       be freed properly. (Bug #30752366)

     * The -libs-compat RPM package is now built with system
       zlib to avoid problems with unrestricted export of
       symbols in libmysqlclient.so.18. (Bug #30722389, Bug
       #98130)

     * The server exited histogram sampling prematurely, causing
       an assertion failure. An unnecessary boolean variable
       that marked the completion of a sampling operation was
       removed. (Bug #30717778)

     * When removing a WHERE condition because one of the
       participating conditions was always false, a materialized
       derived table was not cleaned up properly, resulting in a
       memory leak. (Bug #30712243)

     * Multiple comparisons with the same GEOMETRY value were
       not always handled correctly. (Bug #30697042)
       References: See also: Bug #30306306.

     * MIN() and MAX() could return an incorrect value for some
       queries if a WHERE clause containing an IN () subquery
       was added. (Bug #30691682, Bug #98047)

     * Server startup failed if MySQL Enterprise Firewall was
       enabled at startup but the whitelist and user tables were
       missing. (Bug #30690181)

     * For prepared statements, re-execution could cause a
       server exit if a cleaned-up materialized temporary table
       was still being referred to. (Bug #30674598)

     * The ER_WARN_DEPRECATED_SQL_CALC_FOUND_ROWS and
       ER_WARN_DEPRECATED_FOUND_ROWS error messages were
       incorrectly categorized in the range of messages meant to
       be written to the error log. They are now correctly
       categorized as messages meant to be sent to clients. The
       old errors are now designated as
       OBSOLETE_ER_WARN_DEPRECATED_SQL_CALC_FOUND_ROWS and
       OBSOLETE_ER_WARN_DEPRECATED_FOUND_ROWS in the range of
       error-log messages. (Bug #30673043)

     * Some joins within subqueries where an outer query used
       EXISTS or NOT EXISTS were not always handled correctly.
       (Bug #30671329)

     * Queries using ORDER BY constant are permitted but an
       ORDER BY clause of this sort should not have any effect
       on the result; such queries were not always handled
       correctly. (Bug #30669493)

     * A missing out-of-bounds check in wild_case_match() caused
       a pointer to read out of bounds. (Bug #30668886)

     * The strconvert() function was not safe for conversions
       between filename and utf8_general_ci strings. (Bug
       #30668847)

     * Some filesorts using keys of fixed length were not always
       handled correctly. (Bug #30665034)

     * When performing a hash join on two string columns that
       were potentially very large (in particular, BLOB columns
       with PAD SPACE collations), MySQL stored the entire sort
       key in the row, which impacted performance by requiring
       large amounts of memory. Now only a collation-aware hash
       is stored, with an added equality comparison prevent a
       wrong answer, even in the event of a 64-bit hash
       collision. (Bug #30664831)

     * When at least two tables were joined to at least two
       other tables using a semijoin, and the join optimizer
       chose to use a loose scan, it was possible to place both
       of the left tables below the deduplicating nested loop
       iterator, leading to excessive deduplication. We fix this
       by treating a loose scan across multiple tables as a
       separate internal structure. (Bug #30659810)

     * In unions of a const table and zero or more known-zero
       expressions, derived tables of exactly one row could be
       read incorrectly as having zero rows. (Bug #30655712, Bug
       #97967)

     * A MySQL 8.0.19 patch set an invalid INFORMATION_SCHEMA
       and data dictionary version number. Assertion code was
       added to prevent future version information errors. (Bug
       #30645158, Bug #97948)
       References: This issue is a regression of: Bug #29871530.

     * When setting up the iterator tree, the optimizer now
       filters away and subsequently ignores conditions which
       are known to be trivially true. (Bug #30644591)

     * Under some conditions, SHOW COLUMNS on a temporary MERGE
       table could raise an assertion or cause a server exit.
       (Bug #30640463)
       References: This issue is a regression of: Bug #28811287,
       Bug #92834.

     * The Event Scheduler had a memory leak. (Bug #30628268)

     * Using the asynchronous C API functions could result in
       freeing already freed memory. (Bug #30596999, Bug #97805)

     * (Bug #30594613)

     * On tables containing a CHECK constraint, certain simple
       queries were inefficient due to excessive memory
       allocation and Performance Schema calls. (Bug #30594613)

     * Under certain circumstances, a memcached command could
       result in reading an uninitialized memory buffer, causing
       a failure. (Bug #30592346)

     * A race condition could occur between InnoDB issuing
       requests for schema and table metadata while filling
       INFORMATION_SCHEMA.INNODB_TABLES, and the schema being
       dropped, leading to user queries on INNODB_TABLES
       reporting an error. (Bug #30591967)

     * Using ALTER USER to reset an account MAX_USER_CONNECTIONS
       value did not take effect until all current account
       connections terminated, if there were any. (Bug
       #30578217, Bug #97735)

     * When the optimizer sets up a weedout, it notifies all
       tables that are part of the weedout that they should
       provide row IDs. For confluent weedouts (weedouts
       returning at most one row), the optimizer expects that
       the executor handles the weedout without row IDs. In the
       iterator executor, confluent weedouts are implemented
       using LIMIT 1; the normal weedout iterator does not
       handle confluent weedouts, and thus always expects row
       IDs. In the case of a confluent weedout on the right side
       of an outer join, the confluent weedout was processed as
       a normal weedout, causing the iterator executor to ask
       for row IDs where the tables did not supply them. Now in
       such cases, the LIMIT 1 optimization is also applied.
       (Bug #30566549, Bug #30282693)

     * SET PERSIST could fail due to attempting to persist
       variables to the wrong directory. (Bug #30561982)

     * Within a stored program with an error handler defined for
       the error condition of accessing a nonexistent table, the
       handler was not invoked if the table was nonexistent
       because it was named in a nonexistent database. (Bug
       #30561920, Bug #97682)

     * The duplicate weedout optimization strategy employed by
       MySQL (see Optimizing IN and EXISTS Subquery Predicates
       with Semijoin Transformations
       (https://dev.mysql.com/doc/refman/8.0/en/semijoins.html))
       uses an internal table of row IDs which it has already
       seen, with a unique index on the column containing these
       IDs. When the key for the unique index became too large,
       which could happen with very large row IDs, the server
       reverted to deduplication by hash key instead, with a
       separate index (not unique) over the hash field only, as
       with other temporary tables. Because the latter index was
       not properly initialized, affected queries were not
       executed properly and could lead to a premature exit.
       (Bug #30556257)

     * For debug builds, under LOCK TABLES, the server could
       mishandle materialized temporary tables and raise an
       assertion. (Bug #30476213, Bug #97404)

     * The internal array of materialized query blocks
       SELECT_LEX_UNIT::m_query_blocks_to_materialize was not
       reset between executions, which meant that it pointed to
       objects which were no longer valid when a prepared
       statement was executed a second time, causing the second
       execution to fail. (Bug #30438038)

     * Altering column collations did not affect unique indexes
       until a server restart. (Bug #30386119, Bug #97103)

     * When using roles, the EXECUTE privilege for stored
       functions was treated as a privilege for stored
       procedures. As a result, it was not possible to use
       EXECUTE as a role privilege for functions. (Bug
       #30376231)

     * A materialized subquery including a condition in which a
       column value was used as input to a nondeterministic
       function produced incorrect results. (Bug #30368937)

     * Several fixes were applied to the InnoDB memcached
       plugin. The fixes addressed potential deadlock issues,
       issues related to connection list latches, and removal of
       an obsolete flush mutex. (Bug #30354225)

     * Strings that used the utf8mb4_0900_bin collation could
       not be compared with utf8mb4 strings that used a
       different collation. Now the comparison is done by using
       utf8mb4_0900_bin for both strings. (Bug #30350111)

     * During optimization, MySQL removes conditions in which
       all arguments are considered equal; for example, 1 <> 1
       is removed and replaced with false. In doing so,
       conditions containing non-deterministic arguments were
       also removed, which caused a condition such as RAND() <
       RAND() to be considered an impossible condition. Now, the
       optimizer no longer removes conditions containing
       nondeterministic arguments. (Bug #30311271)

     * Scheduling of events could be disturbed by removing
       events. (Bug #30301356, Bug #96849)

     * The Event Scheduler reported warnings for Valgrind
       builds. (Bug #30301340)

     * Shutting down the server while using the clone plugin
       raised a Valgrind error. (Bug #30248419)

     * If the mysqld-auto.cnf file was malformed, the server did
       not start (expected), but did not report any error
       (unexpected). (Bug #30169731, Bug #96501)

     * UPDATE statements could give an inconsistent number of
       rows matched (found rows) in cases where not all matched
       rows were updated, depending on the reason for rows not
       being updated. For example, rows not updated due to being
       updated through a view with a WITH CHECK OPTION clause
       were not counted as matching rows, whereas rows not
       updated due to a failing CHECK CONSTRAINT were counted.
       For consistency, rows that fail a WITH CHECK OPTION
       clause now are counted as matching rows. (Bug #30158954)

     * When restarting the MySQL server on a cloned directory,
       InnoDB reported an error indicating that it could not
       find a tablespace file for a statistics table that was
       dropped by the server previously. (Bug #30093799)

     * The server did not handle correctly a UNION in which one
       of the queries contained a subquery that used ORDER BY.
       (Bug #29952565)

     * For INFORMATION_SCHEMA queries, a race condition could
       result in multiple attempts to insert a key when updating
       the dynamic statistics tables, producing a duplicate-key
       error. (Bug #29948755, Bug #95929)

     * SHOW CREATE VIEW could fail with an illegal mix of
       collations for views defined on a function that returns a
       string. (Bug #29904087)

     * A query with a WHERE clause whose predicate contained a
       numeric value in scientific notation was not handled
       correctly.
       In addition, attempting to insert a particular integer
       specified as a string caused a server exit when the
       string-to-integer conversion was not successful. (Bug
       #29723340, Bug #30441969)

     * An internal interface was added for retrieving and
       parsing errors that occur on the donor MySQL server
       instance (ER_CLONE_DONOR errors) and for checking if data
       on the recipient has been dropped. (Bug #29682642)

     * It was not possible to drop any columns from a table when
       the DEFAULT value. (Bug #29661106)

     * For the CONNECTION_CONTROL plugin, the Performance Schema
       instrumentation used keys that were not discoverable to
       the Performance Schema unless the associated code
       actually executed. (Bug #29539976)

     * For a nullable column c, the optimizer now recognizes
       when the conditions c < c, c > c, and c <> c are always
       false and need not be evaluated for every row. Thanks to
       Daniel Black for the contribution. (For nonnullable
       columns, the optimizer already recognized always-false
       conditions.) (Bug #29115386, Bug #93642)

     * Reinitialization of character sets from Index.xml could
       cause a use-after-free error. (Bug #28956360, Bug #93276)

     * An earlier change to reduce Performance Schema memory
       instrumentation overhead had the unintended effect of
       causing Group Replication performance degradation. (Bug
       #28719976)
       References: This issue is a regression of: Bug #27500610.

     * The sys schema ps_setup_reset_to_default() procedure used
       MySQL 5.7 defaults, not MySQL 8.0 defaults. (Bug
       #27636611)

     * Some connection encryption ciphers did not work. (Bug
       #27045306)

     * Previously, mysqlpump read the [mysql_dump] and [client]
       groups from option files. mysqlpump now additionally
       reads the [mysqlpump] group. The [mysql_dump] group is
       still accepted but is deprecated. (Bug #24733245, Bug
       #83144)

     * For a query of the form SELECT DISTINCT ... ORDER BY ...,
       when the ORDER BY was pushed down onto the first table in
       the join, the result was not always sorted in the correct
       order. (Bug #98217, Bug #30760534)

     * The NULL indicator was not properly written for items
       used as variable-length keys, such that all such items
       were assumed to be not NULL, which was considered equal
       to the empty string when using certain collations. One
       visible effect of this issue was that ordering by an
       expression using a nullable string was sometimes not
       performed correctly. An example of such a query, where
       column c1 contains both NULL and empty string values, is
       shown here:
SELECT c1, SUBSTR(c1, 1) AS c2 FROM t ORDER BY c2;
       (Bug #98035, Bug #30687020)

     * A query returned inaccurate results when an expression in
       a GROUP BY clause used a column name differing in case
       from that used for the name of the column when the table
       containing this column was created. An example of this
       would be when the query used GROUP BY id although the
       column name as shown in the original CREATE TABLE
       statement was ID.
       This occurred because, the server performed
       case-sensitive comparisons of column names in expressions
       with names of columns in tables. This issue is fixed by
       ensuring that such comparisons are performed in a
       case-insensitive fashion as expected. (Bug #97628, Bug
       #98222, Bug #30541701, Bug #30761372)

     * A multi-table UPDATE statement which updated a table
       joined to a derived table that joined two other tables
       was not optimized properly as it had been in MySQL 5.6,
       instead being treated as if STRAIGHT_JOIN had been used
       with the subquery creating the derived table. (Bug
       #97418, Bug #30488700)

     * EXPLAIN now uses hash join instead of block nested loop,
       since the latter no longer exists and is replaced by a
       hash join in nearly all cases. (Bug #97299, Bug
       #30444550)

     * The execution plan for a query that filtered on the first
       column of a composite hash index wrongly used this index,
       producing erroneous results. (Bug #94737, Bug #29527115)

     * References to columns from tables of outer query blocks
       in an ON condition of a JOIN did not work, and could be
       used only in a WHERE. The fix for this problem means that
       a query such as this one now works correctly:
SELECT o.order_date FROM orders o
WHERE o.order_date IN  ( SELECT c.contact_name FROM customers c
                    INNER JOIN order_details od
                    ON o.order_id = od.discount );
       Previously this had to be rewritten as as shown here:
SELECT o.order_date FROM orders o
WHERE o.order_date IN  ( SELECT c.contact_name FROM customers c
                    INNER JOIN order_details od
                    ON 1
                    WHERE o.order_id = od.discount );
       References to other tables of the same FROM clause as the
       JOIN, as in the query SELECT * FROM t1 CROSS JOIN (t2
       LEFT JOIN t3 ON t1.c=3), are not outer references and
       remain forbidden. In this case, a lateral join is
       required, like this: SELECT * FROM t1 JOIN LATERAL
       (SELECT * FROM t2 LEFT JOIN t3 ON t1.c=3). (Bug #35242,
       Bug #96946, Bug #11748138, Bug #30350696)

     * There could be a mismatch between the version of OpenSSL
       used to build the server and the version used for other
       parts of MySQL such as libraries or plugins. This could
       cause certain features not to work, such as the LDAP
       authentication plugins. Now the same version of OpenSSL
       is used for building everything.

     * Previous work in MySQL 8.0 to optimize impossible
       expressions such as a=b AND FALSE as FALSE could make for
       less efficient execution when such expressions appeared
       as outer join conditions, due to the fact that the join
       was interpreted as a Cartesian product followed by a
       filter. (Bug #8202, Bug #89739, Bug #97552, Bug
       #11745046, Bug #27581277, Bug #30520749)
       References: See also: Bug #98206, Bug #30756135.

MySQL Enterprise Backup 8.0.20 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Enterprise Backup 8.0.20, a new version of the online MySQL backup
tool, is now available for download from the My Oracle Support (MOS) website
as our latest GA release. This release will be available on eDelivery (OSDC)
after the next upload cycle. MySQL Enterprise Backup is a commercial
extension to the MySQL family of products.

MySQL Enterprise Backup 8.0.20 supports only the MySQL Server 8.0.20.
For earlier versions of MySQL 8.0, use the MySQL Enterprise Backup
version with the same version number as the server. For MySQL server
5.7, please use MySQL Enterprise Backup 4.1, and for MySQL Server 5.6,
please use MySQL Enterprise Backup 3.12.

A brief summary of the changes in MySQL Enterprise Backup (MEB)
since the previous version is given below.

-----

Changes in MySQL Enterprise Backup 8.0.20 (2020-04-27, General
Availability)

Functionality Added or Changed


     * The tablespace_tracker
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-files-backed-up-summary.html#meb_file_tablespace-tracker)
       file has been simplified: it now contains only two
       fields for each external tablespace: server_file_path and
       space_id. mysqlbackup no longer relies on the file for
       information on the backup_file_path and the tablespace
       type, which means that users no longer need to update the
       tablespace_tracker
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-files-backed-up-summary.html#meb_file_tablespace-tracker)
       file when they move a directory backup to a new location.

     * Table-Level Recovery (TLR) is a new feature of MySQL
       Enterprise Backup that allows selective restores of
       tables or schemas from full backups; see Table-Level
       Recovery (TLR)
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/restore.partial.html)
       for details.

     * The legacy option --include is now deprecated. A
       deprecation warning is now issued by mysqlbackup whenever
       the option is used. The --include-tables and
       --exclude-tables options should be used instead for
       partial backups and restores.

Bugs Fixed


     * A backup failed with ERROR: Bad table space file header
       when the server had more than one system tablespace
       files. It was because mysqlbackup looked for the
       tablespace file header at the wrong place, and this patch
       corrects the problem. (Bug #30983009)

     * During an incremental backup, mysqlbackup simply repeated
       the Server Repository Options when trying to print the
       Backup Configuration Options in its output. (Bug
       #30948251)

     * Backups failed when the server used a keyring plugin and
       its sql_mode was set to ANSI_QUOTES. It was because
       mysqlbackup used the wrong kind of quotes in the
       situation when querying the server, and that has been
       fixed by this patch. (Bug #30920140)

     * An incremental optimistic image backup failed when the
       server was started with a non-default
       innodb_data_file_path value containing more than one
       InnoDB system tablespace file. It was because mysqlbackup
       could not handle the situation in which the two different
       files had the same space ID, and this patch fixes the
       problem. (Bug #30914039)

     * A partial restore of a TTS backup failed when the file
       path specified with the --datadir option contained extra
       slashes (/) when compared with the data directory file
       path the server was started with. With this fix, such
       extra slashes for the --datadir option are ignored. (Bug
       #30834688)

     * During a backup operation, if any tablespace's encryption
       status was changed (for example, from encrypted to
       unencrypted or vice versa, and even if the table was
       eventually changed back to its original encryption
       status), mysqlbackup reported success, but it quit
       unexpectedly during the restore operation of the backup
       because of its inconsistency. With this fix, the
       encryption statuses of tablespaces are properly tracked
       throughout the backup operation, so that the tables are
       consistently backed up. (Bug #30599476)

     * When the --src-entry option was used with the extract
       command, a trailing slash in its value (for example, in
       foo/) was ignored, so that instead of extracting from the
       backup only those directories whose names ended with the
       value (for example, datadir/foo/), mysqlbackup also
       extracted all files whose paths contained the value (for
       example, datadir/bar/foo.sdi). With this fix, the
       trailing slash is honored, and it only causes folders
       whose names end with the value to be extracted.
       It is also clarified in the documentation that the value
       of the --src-entry option is actually used to match any
       files or non-empty folders that contain the value in
       their names, and a trailing slash is interpreted as
       described in the last paragraph. (Bug #30461403)

     * When there was a user-created mysql.backup_progress table
       on a server that was being backed up, mysqlbackup
       finished the backup successfully, but also printed error
       messages and recorded a backup failure in the
       backup_history table. With this fix, the backup is
       finished as normal with a warning. (Bug #30351172)

     * The binary log basename appeared as an empty string in
       the progress report of a copy-back-and-apply-log
       operation. (Bug #29936558)

     * When a data tablespace had the same name as an undo
       tablespace on the server, a compressed backup containing
       the tablespace could be created by mysqlbackup, but the
       backup could not be restored due to the filename
       conflict. With this fix, the backup fails in the
       situation. (Bug #29881640)

     * A backup failed when it involved encrypted InnoDB tables
       and the --skip-unused-pages option was used. (Bug
       #29861298)

     * When a compressed backup was created with the
       backup-and-apply-log command and then restored using the
       copy-back-and-apply-log command, the redo log were
       missing from the restored server, causing an InnoDB error
       when the server was started. (Bug #29851603)

     * A backup failed when the --skip-unused-pages and
       --optimistic-busy-tables options were used together. (Bug
       #29840923)

     * When the server to be backed up has super_read_only=ON,
       mysqlbackup gave the warning that the backup operation
       could not be logged even if the --no-history-logging
       option has already been used with the backup command.
       This patch removes the unnecessary warning. (Bug
       #29742011)

     * A backup-and-apply-log operation failed for a TTS backup
       if the --compress option was used. (Bug #29639871)

     * An extract operation for the file
       meta/backup_variables.txt failed with mysqlbackup
       complaining that the value of the option --src-entry did
       not match any table in the backup. With this fix,
       mysqlbackup no longer throws an eorrr in the situation,
       but prints the message "The src-entry
       'backup_variables.txt' is by default extracted to
       backup-dir". (Bug #29519710)

     * During a backup operation, mysqlbackup printed messages
       regarding the encryption keyring even though the server
       did not utilize InnoDB table encryption. With this patch,
       mysqlbackup stops printing such messages in the
       situation. (Bug #29151380)

MySQL Router 8.0.20 for MySQL Server 8.0 and 5.7 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Router 8.0.20 is a new release for MySQL Router 8.0 series.

MySQL Router 8.0 is highly recommended for use with MySQL Server 8.0 and 5.7.
Please upgrade to MySQL Router 8.0.20.

The MySQL Router is a new building block for high availability solutions
based on MySQL InnoDB clusters.

By taking advantage of the new Group Replication technology, and
combined with the MySQL Shell, InnoDB clusters provide an integrated
solution for high availability and scalability for InnoDB based MySQL
databases, that does not require advanced MySQL expertise.

The deployment of applications with high availability requirements is
greatly simplified by MySQL Router. MySQL client connections are
transparently routed to online members of a InnoDB cluster, with MySQL
server outages and cluster reconfigurations being automatically handled
by the Router.

To download MySQL Router 8.0.20, see the "General Availability (GA)
Releases" tab at http://dev.mysql.com/downloads/router. Package
binaries are available for several platforms and also as a source code
download.

Documentation for MySQL Router can be found at
http://dev.mysql.com/doc/mysql-router/en/

Enjoy!

------------------------------------------
Changes in MySQL Router 8.0.20 (2020-04-27)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added additional functionality to configure the PID file
       location. This adds the --pid-file (command-line) and
       pid_file (configuration file) options. Setting the
       ROUTER_PID environment variable remains as the other
       option.
       The PID file cannot be set while executing the
       --bootstrap option. (Bug #30510827)

     * Added metadata_cache support for [http_auth_backend]; set
       backend=metadata_cache to use it. Also added the optional
       auth_cache_refresh_interval and auth_cache_ttl options to
       configure its use.

     * Added two new log levels: "system", which is higher than
       "error", and "note", which is between "info" and "debug".

Bugs Fixed


     * Router's default data directory on Debian
       (/var/run/mysqlrouter) was not preserved between system
       resets. Both the keyring and state.json files were stored
       here, so Router could not function after a system reset.
       Now /var/lib/mysqlrouter is used instead. In addition,
       the installation process now detects and moves an
       existing configuration file to the new location. (Bug
       #31029334, Bug #98914)

     * Routing failed for an InnoDB Cluster using metadata 2.0
       (Shell 8.0.19+) when the primary was removed using
       Shell/AdminAPI cluster.remove_instance(). Routing failed
       because Router flushed the routing table as a precaution.
       (Bug #30733189)

     * Added missing raise statement when queue is full. Thanks
       to Rastislav Masaryk for the patch. (Bug #30643277, Bug
       #97938)

     * Internal metadata queries were affected by global MySQL
       Server settings; but now Router explicitly sets session
       parameters to make metadata queries and updates
       consistent. These settings are
       group_replication_consistency, autocommit, sql_mode,
       character_set_client, character_set_results, and
       character_set_connection. (Bug #30631442, Bug #97764)

     * Router renamed its main thread from "mysqlrouter" to
       "main" to make debugging easier, but this meant executing
       "killall mysqlrouter" would not find the process; and
       instead "killall main" did. The process is no longer
       renamed. (Bug #30611421)

     * Reviewed help text and error messages throughout MySQL
       Router's interface; and improved readability. (Bug
       #30523166, Bug #30889974, Bug #29138501, Bug #29132761,
       Bug #30895659, Bug #29428293, Bug #29132728, Bug
       #29361447)

     * Group Replication notifications (use_gr_notifications)
       would log warnings about a missing mysqlx_wait_timeout
       MySQL system variable when used against MySQL 5.7 as this
       variable was added in MySQL 8.0. This warning is no
       longer present. (Bug #30478016, Bug #97414)

     * With apparmor active (Ubuntu/Debian), bootstrap failed as
       it could not write a temporary (state) file as Router's
       apparmor profile didn't allow writing to
       (var)/run/mysqlrouter. The apparmor profile was updated
       accordingly.
       With apparmor active (Ubuntu/Debian), Router ignored the
       global SSL configuration; the apparmor profile was
       updated to read /etc/ssl/openssl.conf. (Bug #30339399)

     * The MySQL Router configuration file required a trailing
       newline. (Bug #28970487)

     * Improved error reporting when handling dissolved
       clusters. For example, the error text "The provided
       server contains an unsupported InnoDB cluster metadata."
       was changed to "Expected the metadata server to contain
       configuration for one cluster, found none." (Bug
       #28365867)

MySQL Connector/C++ 8.0.20 has been released (no replies)

$
0
0

Dear MySQL users,

MySQL Connector/C++ 8.0.20 is a new release version of the MySQL
Connector/C++ 8.0 series.

Connector/C++ 8.0 can be used to access MySQL implementing Document
Store or in a traditional way, using SQL queries. It allows writing
both C++ and plain C applications using X DevAPI and X DevAPI for C.
It also supports the legacy API of Connector/C++ 1.1 based on JDBC4.

To learn more about how to write applications using X DevAPI, see
"X DevAPI User Guide" at

  https://dev.mysql.com/doc/x-devapi-userguide/en/

See also "X DevAPI Reference" at

  https://dev.mysql.com/doc/dev/connector-cpp/devapi_ref.html

and "X DevAPI for C Reference" at

  https://dev.mysql.com/doc/dev/connector-cpp/xapi_ref.html

For generic information on using Connector/C++ 8.0, see

  https://dev.mysql.com/doc/dev/connector-cpp/

For general documentation about how to get started using MySQL
as a document store, see

  http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/C++ 8.0.20, see the "General Availability (GA)
Releases" tab at

  https://dev.mysql.com/downloads/connector/cpp/

Changes in MySQL Connector/C++ 8.0.20 (2020-04-27, General Availability)

Connection Management Notes

     * For connections made using X Plugin, Connector/C++ now
       provides control over the use of compression to minimize
       the number of bytes sent over connections to the server.
       Connection URIs and SessionSettings objects permit
       explicitly specifying a compression option:

          + URI strings permit a compression option with
            permitted values of DISABLED, PREFERRED, and
            REQUIRED (not case-sensitive). Examples:
            mysqlx://user:password@host:port/db?compression=DISABLED
            mysqlx://user:password@host:port/db?compression=PREFERRED
            mysqlx://user:password@host:port/db?compression=REQUIRED

          + SessionSettings object permit a
            SessionOption::COMPRESSION option with permitted
            values of CompressionMode::DISABLED,
            CompressionMode::PREFERRED, and
            CompressionMode::REQUIRED. Example:
            mysqlx::Session sess(SessionOption::PORT, "user_name",
                                 SessionOption::USER, "password",
                                 SessionOption::COMPRESSION,
                                 CompressionMode::PREFERRED);

       These rules apply:

          + If compression is disabled, the connection is
            uncompressed.

          + If compression is preferred, Connector/C++
            negotiates with the server to find a compression
            algorithm supported in common on the server and
            client sides. If no common algorithm is available,
            the connection is uncompressed.

          + If compression is required, compression algorithm
            negotiation occurs as with compression preferred. If
            no common algorithm is available, the connection
            terminates with an error.
       To avoid CPU inefficiency, data packets are not
       compressed even when compression is enabled unless they
       exceed a threshold size (currently 1000 bytes; this is
       subject to change).
       See also Connection Compression with X Plugin
       (https://dev.mysql.com/doc/refman/8.0/en/x-plugin-connection-compression.html).


Packaging Notes

     * Previously, Connector/C++ binary distributions were
       compatible with projects built using MSVC 2019 (using
       either dynamic or static connector libraries) or MSVC
       2017 (using dynamic connector libraries only). Binary
       distributions now are also compatible with MSVC 2017
       using the static X DevAPI connector library. This means
       that binary distributions are fully compatible with MSVC
       2019, and fully compatible with MSVC 2017 with the
       exception of the static legacy (JDBC) connector library.


Bugs Fixed

     * For connections made using X Plugin, the last byte was
       removed from DATETIME values fetched as raw bytes. (Bug
       #30838230)

     * In X DevAPI expressions, Connector/C++ treated the JSON
       ->> operator the same as ->, rather than applying an
       additional JSON_UNQUOTE() operation. (Bug #29870832)

     * Comparison of JSON values from query results failed due
       to an extra \0 character erroneously being added to the
       end of such values. (Bug #29847865)

     * For connections made using X Plugin, warnings sent
       following result sets were not captured, and were thus
       unavailable to getWarnings(). (Bug #28047970)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison

MySQL Connector/Python 8.0.20 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/Python 8.0.20 is the latest GA release version of the
MySQL Connector Python 8.0 series. The X DevAPI enables application
developers to write code that combines the strengths of the relational
and document models using a modern, NoSQL-like syntax that does not
assume previous experience writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see

  http://dev.mysql.com/doc/x-devapi-userguide/en/

For more information about how the X DevAPI is implemented in MySQL
Connector/Python, and its usage, see

  http://dev.mysql.com/doc/dev/connector-python

Please note that the X DevAPI requires at least MySQL Server version 8.0
or higher with the X Plugin enabled. For general documentation about how
to get started using MySQL as a document store, see

  http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/Python 8.0.20, see the "General Availability
(GA) Releases" tab at

  http://dev.mysql.com/downloads/connector/python/

Enjoy!

==============================================================================

Changes in MySQL Connector/Python 8.0.20 (2020-04-27, General Availability)

Functionality Added or Changed

 * For X DevAPI applications, when creating a new
   connection, if the connection data contains several
   target hosts that have no explicit priority assigned, the
   behavior of the failover logic now is the same as if all
   those target hosts have the same priority. That is, the
   next candidate for making a connection is chosen randomly
   from the remaining available hosts. Alternatively, the
   new priority attribute optionally sets the priority for
   each host. If two hosts have the same priority then one
   is chosen at random.

Bugs Fixed

 * The fetchmany() method failed to function properly when
   the last fetch was not a full batch; and would hang.
   Thanks to Bruce Feng for the patch.
   (Bug#30608703, Bug#97830)

On Behalf of Oracle/MySQL Engineering Team
Kent Boortz

MySQL Cluster 7.4.28 has been released (no replies)

$
0
0
Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

- In-Memory storage - Real-time performance
- Transparent Auto-Sharding - Read & write scalability
- Active-Active/Multi-Master geographic replication
- 99.999% High Availability with no single point of failure
and on-line maintenance
- NoSQL and SQL APIs (including C++, Java, http, Memcached
and JavaScript/Node.js)

MySQL Cluster 7.4 makes significant advances in performance;
operational efficiency (such as enhanced reporting and faster restarts
and upgrades) and conflict detection and resolution for active-active
replication between MySQL Clusters.

MySQL Cluster 7.4.28 has been released and can be downloaded from

http://www.mysql.com/downloads/cluster/

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

The release notes are available from

http://dev.mysql.com/doc/relnotes/mysql-cluster/7.4/en/index.html

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at
http://www.mysql.com/products/cluster/


Changes in MySQL NDB Cluster 7.4.28 (5.6.48-ndb-7.4.28) (2020-04-28, General Availability)

MySQL NDB Cluster 7.4.28 is a new release of MySQL NDB
Cluster 7.4, based on MySQL Server 5.6 and including features
in version 7.4 of the NDB storage engine, as well as fixing
recently discovered bugs in previous NDB Cluster releases.

Obtaining MySQL NDB Cluster 7.4. MySQL NDB Cluster 7.4
source code and binaries can be obtained from
https://dev.mysql.com/downloads/cluster/.

For an overview of changes made in MySQL NDB Cluster 7.4, see
What is New in NDB Cluster 7.4
( https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-what-is-new-7-4.html ).

This release also incorporates all bug fixes and changes made
in previous NDB Cluster releases, as well as all bug fixes
and feature changes which were added in mainline MySQL 5.6
through MySQL 5.6.48 (see Changes in MySQL 5.6.48 (2020-04-27, General Availability)
( https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-48.html )) .

* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed


* NDB Client Programs: Removed a dependency from the
ndb_waiter and ndb_show_tables utility programs on the
NDBT library. This library, used in NDB development for
testing, is not required for normal use. The visible
effect for users from this change is that these programs
no longer print NDBT_ProgramExit - status following
completion of a run. Applications that depend upon this
behavior should be updated to reflect this change when
upgrading to this release.

* Added the --ndb-log-fail-terminate option for mysqld.
When used, this causes the SQL node to terminate if it is
unable to log all row events. (Bug #21911930)

Bugs Fixed


* When a node ID allocation request failed with NotMaster
temporary errors, the node ID allocation was always
retried immediately, without regard to the cause of the
error. This caused a very high rate of retries, whose
effects could be observed as an excessive number of Alloc
node id for node nnn failed log messages (on the order of
15,000 messages per second). (Bug #30293495)

* For NDB tables having no explicit primary key,
NdbReceiverBuffer could be allocated with too small a
size. This was due to the fact that the attribute bitmap
sent to NDB from the data nodes always includes the
primary key. The extra space required for hidden primary
keys is now taken into consideration in such cases. (Bug
#30183466)

On Behalf of MySQL Release Engineering Team,
Tvarita Jain

MySQL Cluster 7.6.14 has been released (no replies)

$
0
0
Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

  - In-Memory storage - Real-time performance (with optional
    checkpointing to disk)
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication
  - 99.999% High Availability with no single point of failure
    and on-line maintenance
  - NoSQL and SQL APIs (including C++, Java, http, Memcached
    and JavaScript/Node.js)

MySQL Cluster 7.6.14 has been released and can be downloaded from

  https://www.mysql.com/downloads/cluster/

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

MySQL Cluster 7.6 is also available from our repository for Linux
platforms, go here for details:

  https://dev.mysql.com/downloads/

The release notes are available from

  https://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/en/

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at

  https://www.mysql.com/products/cluster/

Enjoy !

==============================================================================

Changes in MySQL NDB Cluster 7.6.14 (5.7.30-ndb-7.6.14) (2020-04-28, General Availability)

   MySQL NDB Cluster 7.6.14 is a new release of NDB 7.6, based
   on MySQL Server 5.7 and including features in version 7.6 of
   the NDB storage engine, as well as fixing recently discovered
   bugs in previous NDB Cluster releases.

   Obtaining NDB Cluster 7.6.  NDB Cluster 7.6 source code and
   binaries can be obtained from
   https://dev.mysql.com/downloads/cluster/.

   For an overview of changes made in NDB Cluster 7.6, see What
   is New in NDB Cluster 7.6
(https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-6.html).

   This release also incorporates all bug fixes and changes made
   in previous NDB Cluster releases, as well as all bug fixes
   and feature changes which were added in mainline MySQL 5.7
   through MySQL 5.7.30 (see Changes in MySQL 5.7.30 (2020-04-27, General Availability)
(https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-30.html)).

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * NDB Client Programs: Two options are added for the
       ndb_blob_tool utility, to enable it to detect missing
       blob parts for which inline parts exist, and to replace
       these with placeholder blob parts (consisting of space
       characters) of the correct length. To check whether there
       are missing blob parts, use the ndb_blob_tool
       --check-missing option. To replace with placeholders any
       blob parts which are missing, use the program's
       --add-missing option, also added in this release. (Bug
       #28583971)

     * NDB Client Programs: Removed a dependency from the
       ndb_waiter and ndb_show_tables utility programs on the
       NDBT library. This library, used in NDB development for
       testing, is not required for normal use. The visible
       effect for users from this change is that these programs
       no longer print NDBT_ProgramExit - status following
       completion of a run. Applications that depend upon this
       behavior should be updated to reflect this change when
       upgrading to this release.

     * MySQL NDB ClusterJ: A few Java APIs used by ClusterJ are
       now deprecated in recent Java versions. These adjustments
       have been made to ClusterJ:

          + Replaced all Class.newInstance() calls with
            Class.getDeclaredConstructor().newInstance() calls.
            Also updated the exception handling and the test
            cases wherever required.

          + All the Number classes' constructors that
            instantiate an object from a String or a primitive
            type are deprecated. Replaced all such deprecated
            instantiation calls with the corresponding valueOf()
            method calls.

          + The Proxy.getProxyClass() is now deprecated. The
            DomainTypeHandlerImpl class now directly creates a
            new instance using the Proxy.newProxyInstance()
            method; all references to the Proxy class and its
            constructors are removed from the
            DomainTypeHandlerImpl class. SessionFactoryImpl
            class now uses the interfaces underlying the proxy
            object to identify the domain class rather than
            using the Proxy class. Also updated
            DomainTypeHandlerFactoryTest.

          + The finalize() method is now deprecated. This patch
            does not change the overriding finalize() methods,
            but just suppresses the warnings on them. This
            deprecation will be handled separately in a later
            patch.

          + Updated the CMake configuration to treat deprecation
            warnings as errors when compiling ClusterJ.
       (Bug #29931625)

     * MySQL NDB ClusterJ: The minimum Java version ClusterJ
       supports for MySQL NDB Cluster 8.0 is now Java 8. (Bug
       #29931625)

     * MySQL NDB ClusterJ: The unused antlr3 plugin has been
       removed from the ClusterJ pom file. (Bug #29931625)

     * It now possible to consolidate data from separate
       instances of NDB Cluster into a single target NDB Cluster
       when the original datasets all use the same schema. This
       is supported when using backups created using START
       BACKUP in ndb_mgm and restoring them with ndb_restore,
       using the --remap-column option implemented in this
       release (along with --restore-data and possibly other
       options). --remap-column can be employed to handle cases
       of overlapping primary, unique, or both sorts of key
       values between source clusters, and you need to make sure
       that they do not overlap in the target cluster. This can
       also be done to preserve other relationships between
       tables.
       When used together with --restore-data, the new option
       applies a function to the value of the indicated column.
       The value set for this option is a string of the format
       db.tbl.col:fn:args, whose components are listed here:

          + db: Database name, after performing any renames.

          + tbl: Table name.

          + col: Name of the column to be updated. This column
            must use of one of the MySQL integer types (see
            Integer Types (Exact Value) - INTEGER, INT,
            SMALLINT, TINYINT, MEDIUMINT, BIGINT
(https://dev.mysql.com/doc/refman/5.7/en/integer-types.html)).

          + fn: Function name; currently, the only supported
            name is offset.

          + args: The size of the offset to be added to the
            column value by offset. The range of the argument is
            that of the signed variant of the column's type;
            thus, negative offsets are supported.
       You can use --remap-column for updating multiple columns
       of the same table and different columns of different
       tables, as well as combinations of multiple tables and
       columns. Different offset values can be employed for
       different columns of the same table.
       As part of this work, two new options are also added to
       ndb_desc in this release:

          + --auto-inc (short form -a): Includes the the next
            auto-increment value in the output, if the table has
            an AUTO_INCREMENT column.

          + --context (short form -x): Provides extra
            information about the table, including the schema,
            database name, table name, and internal ID.
       These options may be useful for obtaining information
       about NDB tables when planning a merge, particularly in
       situations where the mysql client may not be readily
       available.
       For more information, see the descriptions for
       --remap-column, --auto-inc, and --context. (Bug
       #30383950)

     * ndb_restore now supports different primary key
       definitions for source and target tables when restoring
       from an NDB native backup, using the --allow-pk-changes
       option introduced in this release. Both increasing and
       decreasing the number of columns making up the original
       primary key are supported. This may be useful when it is
       necessary to accommodate schema version changes while
       restoring data, or when doing so is more efficient or
       less time-consuming than performing ALTER TABLE
       statements involving primary key changes on a great many
       tables following the restore operation.
       When extending a primary key with additional columns, any
       columns added must not be nullable, and any values stored
       in any such columns must not change while the backup is
       being taken. Changes in the values of any such column
       while trying to add it to the table's primary key causes
       the restore operation to fail. Due to the fact that some
       applications set the values of all columns when updating
       a row even if the values of one or more of the columns
       does not change, it is possible to override this behavior
       by using the --ignore-extended-pk-updates option which is
       also added in this release. If you do this, care must be
       taken to insure that such column values do not actually
       change.
       When removing columns from the table's primary key, it is
       not necessary that the columns dropped from the primary
       key remain part of the table afterwards.
       For more information, see the description of the
       --allow-pk-changes option in the documentation for
       ndb_restore. (Bug #26435136, Bug #30383947, Bug
       #30634010)

     * Added the --ndb-log-fail-terminate option for mysqld.
       When used, this causes the SQL node to terminate if it is
       unable to log all row events. (Bug #21911930)

Bugs Fixed


     * MySQL NDB ClusterJ: When a Date value was read from a NDB
       cluster, ClusterJ sometimes extracted the wrong year
       value from the row. It was because the Utility class,
       when unpacking the Date value, wrongly extracted some
       extra bits for the year. This patch makes ClusterJ only
       extract the required bits. (Bug #30600320)

     * MySQL NDB ClusterJ: When the cluster's
       NdbOperation::AbortOption type had the value of
       AO_IgnoreOnError, when there was a read error, ClusterJ
       took that as the row was missing and returned null
       instead of an exception. This was because with
       AO_IgnoreOnErro, the execute() method always returns a
       success code after each transaction, and ClusterJ is
       supposed to check for any errors in any of the individual
       operations; however, read operations were not checked by
       ClusterJ in the case. With this patch, read operations
       are now checked for errors after query executions, so
       that a reading error is reported as such. (Bug #30076276)

     * When restoring signed auto-increment columns, ndb_restore
       incorrectly handled negative values when determining the
       maximum value included in the data. (Bug #30928710)

     * When processing a CSV file, ndb_import did not accept
       trailing field terminators at the ends of lines that were
       accepted by mysqlimport. (Bug #30434663)

     * When a node ID allocation request failed with NotMaster
       temporary errors, the node ID allocation was always
       retried immediately, without regard to the cause of the
       error. This caused a very high rate of retries, whose
       effects could be observed as an excessive number of Alloc
       node id for node nnn failed log messages (on the order of
       15,000 messages per second). (Bug #30293495)

     * For NDB tables having no explicit primary key,
       NdbReceiverBuffer could be allocated with too small a
       size. This was due to the fact that the attribute bitmap
       sent to NDB from the data nodes always includes the
       primary key. The extra space required for hidden primary
       keys is now taken into consideration in such cases. (Bug
       #30183466)

On Behalf of MySQL Release Engineering Team
Piotr Obrzut 

MySQL Cluster 7.5.18 has been released (no replies)

$
0
0

Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

  - In-Memory storage - Real-time performance (with optional
    checkpointing to disk)
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication

  - 99.999% High Availability with no single point of failure
    and on-line maintenance
  - NoSQL and SQL APIs (including C++, Java, http, Memcached
    and JavaScript/Node.js)

MySQL Cluster 7.5.18 has been released and can be downloaded from

  http://www.mysql.com/downloads/cluster/

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

The release notes are available from

  http://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/index.html

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at

  http://www.mysql.com/products/cluster/

Enjoy !


Changes in MySQL NDB Cluster 7.5.18 (5.7.30-ndb-7.5.18) (2020-04-28, General Availability)

   MySQL NDB Cluster 7.5.18 is a new release of MySQL NDB
   Cluster 7.5, based on MySQL Server 5.7 and including features
   in version 7.5 of the NDB
   (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)
   storage engine, as well as fixing recently discovered bugs in
   previous NDB Cluster releases.

   Obtaining MySQL NDB Cluster 7.5.  MySQL NDB Cluster 7.5
   source code and binaries can be obtained from
   https://dev.mysql.com/downloads/cluster/.

   For an overview of changes made in MySQL NDB Cluster 7.5, see
   What is New in NDB Cluster 7.5
   (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-5.html).

   This release also incorporates all bug fixes and changes made
   in previous NDB Cluster releases, as well as all bug fixes
   and feature changes which were added in mainline MySQL 5.7
   through MySQL 5.7.30 (see Changes in MySQL 5.7.30
   (2020-04-27, General Availability)
   (https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-30.html)).


Functionality Added or Changed


     * NDB Client Programs: Two options are added for the
       ndb_blob_tool utility, to enable it to detect missing
       blob parts for which inline parts exist, and to replace
       these with placeholder blob parts (consisting of space
       characters) of the correct length. To check whether there
       are missing blob parts, use the
       ndb_blob_tool --check-missing
       (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-missing)
       option. To replace with placeholders any blob parts
       which are missing, use the program's --add-missing
       (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_add-missing)
       option, also added in this release. (Bug #28583971)

     * NDB Client Programs: Removed a dependency from the
       ndb_waiter and ndb_show_tables utility programs on the
       NDBT library. This library, used in NDB
       (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)
       development for testing, is not required for normal
       use. The visible effect for users from this change is
       that these programs no longer print NDBT_ProgramExit -
       status following completion of a run. Applications that
       depend upon this behavior should be updated to reflect
       this change when upgrading to this release.

     * MySQL NDB ClusterJ: A few Java APIs used by ClusterJ are
       now deprecated in recent Java versions. These adjustments
       have been made to ClusterJ:

          + Replaced all Class.newInstance() calls with
            Class.getDeclaredConstructor().newInstance() calls.
            Also updated the exception handling and the test
            cases wherever required.

          + All the Number classes' constructors that
            instantiate an object from a String or a primitive
            type are deprecated. Replaced all such deprecated
            instantiation calls with the corresponding valueOf()
            method calls.

          + The Proxy.getProxyClass() is now deprecated. The
            DomainTypeHandlerImpl class now directly creates a
            new instance using the Proxy.newProxyInstance()
            method; all references to the Proxy class and its
            constructors are removed from the
            DomainTypeHandlerImpl class. SessionFactoryImpl
            class now uses the interfaces underlying the proxy
            object to identify the domain class rather than
            using the Proxy class. Also updated
            DomainTypeHandlerFactoryTest.

          + The finalize() method is now deprecated. This patch
            does not change the overriding finalize() methods,
            but just suppresses the warnings on them. This
            deprecation will be handled separately in a later
            patch.

          + Updated the CMake configuration to treat deprecation
            warnings as errors when compiling ClusterJ.
       (Bug #29931625)

     * MySQL NDB ClusterJ: The minimum Java version ClusterJ
       supports for MySQL NDB Cluster 8.0 is now Java 8. (Bug
       #29931625)

     * MySQL NDB ClusterJ: The unused antlr3 plugin has been
       removed from the ClusterJ pom file. (Bug #29931625)

     * Added the --ndb-log-fail-terminate
       (https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#option_mysqld_ndb-log-fail-terminate)
       option for mysqld. When used, this causes the SQL node
       to terminate if it is unable to log all row events.
       (Bug #21911930)


Bugs Fixed

     * MySQL NDB ClusterJ: When a Date value was read from a NDB
       cluster, ClusterJ sometimes extracted the wrong year
       value from the row. It was because the Utility class,
       when unpacking the Date value, wrongly extracted some
       extra bits for the year. This patch makes ClusterJ only
       extract the required bits. (Bug #30600320)

     * MySQL NDB ClusterJ: When the cluster's
       NdbOperation::AbortOption
       (https://dev.mysql.com/doc/ndbapi/en/ndb-ndboperation-abortoption.html)
       type had the value of AO_IgnoreOnError,
       when there was a read error, ClusterJ took that as the
       row was missing and returned null instead of an
       exception. This was because with AO_IgnoreOnErro, the
       execute() method always returns a success code after each
       transaction, and ClusterJ is supposed to check for any
       errors in any of the individual operations; however, read
       operations were not checked by ClusterJ in the case. With
       this patch, read operations are now checked for errors
       after query executions, so that a reading error is
       reported as such. (Bug #30076276)

     * When restoring signed auto-increment columns, ndb_restore
       incorrectly handled negative values when determining the
       maximum value included in the data. (Bug #30928710)

     * When a node ID allocation request failed with NotMaster
       temporary errors, the node ID allocation was always
       retried immediately, without regard to the cause of the
       error. This caused a very high rate of retries, whose
       effects could be observed as an excessive number of Alloc
       node id for node nnn failed log messages (on the order of
       15,000 messages per second). (Bug #30293495)

     * For NDB tables having no explicit primary key,
       NdbReceiverBuffer could be allocated with too small a
       size. This was due to the fact that the attribute bitmap
       sent to NDB from the data nodes always includes the
       primary key. The extra space required for hidden primary
       keys is now taken into consideration in such cases. (Bug
       #30183466)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison

Viewing all 1041 articles
Browse latest View live