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 3.12.5 has been released (no replies)
↧
MySQL Enterprise Backup 4.1.4 has been released (no replies)
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 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)
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 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)
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)
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)
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)
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)
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)
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)
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)
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)
[ 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!
==============================================================================
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)
[ 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)
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.
-----
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)
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!
------------------------------------------
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)
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)
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)
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 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)
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)
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
↧