MySQL Shell 9.4 Release Notes
These release notes were created with the assistance of MySQL HeatWave GenAI.
The following, deprecated in previous releases, were removed in this release:
-mc
-ma
-mx
--dba=enableXProtocol
--dba-log-sql
shell.options.outputFormat
.routingOptions()
addInstances
and
removeInstances
were removed from
Cluster
.rescan()
(WL #16922)
dba.deploy_sandbox_instance()
is extended
with the option mysqldPath
. This option
enables you to specify the path to the
mysqld
binary, or MySQL installation root,
to use as the seed instance for your sandbox deployment.
(Bug #25423030)
It was not possible to import a Routing Guideline with
import_routing_guideline()
if the guideline's
name was already used by an existing guideline on the target
topology. Using the force
option overwrote
the existing guideline with the imported guideline.
As of this release, the rename
option is
added to import_routing_guideline()
, enabling
you to define an alternate name for the imported guideline,
which is used in the event of a naming clash.
(Bug #37750932)
failed if the
guideline was defined on a ClusterSet.
(Bug #37739359)RoutingGuideline
.show({"router":
routerId
})
Partitioned tables without a primary key are now reported as
errors when running a dump with the
create_invisible_pks
compatibility option
set, as all columns used in the partitioning expression must be
part of every unique key. Errors are returned similar to the
following:
ERROR: Table `s`.`t`
does not have a
Primary Key, this cannot be fixed automatically because the
table is partitioned (this issue needs to be fixed manually)
(Bug #37892879)
The Dump and Load utilities' ociAuth
option
now supports instance_obo_user
.
(Bug #37781203)
It is now possible to disable collection of host-specific
diagnostics information, with the
collectDiagnostics
utility's
hostInfo
option.
hostInfo
option defaults to
true
. To disable, set to
false
.
(Bug #36391259)
util.dumpInstance returned the following error when run against MySQL HeatWave DB Systems:
ERROR: User 'admin'@'%' is granted restricted privilege: OPTION_TRACKER_OBSERVER (fix this with 'strip_restricted_grants' compatibility option)
The list of privileges has been updated to include
OPTION_TRACKER_OBSERVER
.
(Bug #37958876)
It was not possible to dump data from a MySQL HeatWave DB System running MySQL 8.4, if the Hypergraph Optimizer was enabled. Errors were returned similar to the following:
MySQL Error 3999 (42000): The hypergraph optimizer does not yet support 'EXPLAIN with TRADITIONAL format'
As of this release, queries which chunk or fetch data from MySQL HeatWave-enabled tables now use an optimizer hint which disables offloading to MySQL HeatWave. This also improves dump performance. (Bug #37904121)
The load dump utility failed if the target MySQL instance did not have Performance Schema enabled. An error similar to the following was returned:
ERROR: [Worker006]: Error opening connection to MySQL: MySQL Error 1683 (HY000): 'ps_current_thread_id': The Performance Schema is not enabled.
As of this release, if the call to
ps_current_thread_id()
fails for any reason,
it is logged, but does not cause the load to stop.
(Bug #37867455)
References: See also: Bug #36197620.
A fix introduced in 9.1.0 enabled the dump utilities to compare the server version to the MySQL Shell version and return an error if the server's minor version was greater than MySQL Shell's.
As of this release, an error is returned only if the server has a higher major version. If the minor version is greater, a warning is logged. (Bug #37866205)
References: See also: Bug #36701854.
MySQL Shell logging has been improved for LOAD
DATA
warnings generated by util.importTable and
util.loadDump. Previously, LOAD DATA
warnings
were printed to the terminal and were difficult to locate in the
log. For example:
Warning: schema@table@123.tsv.zst error 1062: Duplicate entry '1234567' for key 'table.PRIMARY'
These messages have been improved, making them easier to find in the log. For example:
Warning: An error has been reported while loading data into `schema`.`table` from 'schema@table@123.tsv.zst' file, error 1062: Duplicate entry '1234567' for key 'table.PRIMARY'
(Bug #37800574)
The MySQL REST Service-specific account, ocirest
, is
automatically excluded when dumping with
ocmids:true
, or loading into MySQL HeatWave DB
Systems.
(Bug #37792183)
If util.copyInstance or util.loadDump connected using an account
without the ALLOW_NONEXISTENT_DEFINER
privilege, and tried to copy a non-view DDL object with a
DEFINER clause set to an account included in the dump, an error
was returned similar to the following:
Error processing schema `<schema>`: Access denied; you need (at least one of) the SUPER or ALLOW_NONEXISTENT_DEFINER privilege(s) for this operation
As of this release, the accounts are created before any other DDL objects and grants are applied before view placeholders are replaced with views. (Bug #37669785)
The Upgrade Checker utility returned a false positive for partial keys in schemas referencing full keys in other schemas. (Bug #37651453)
util.copySchemas()
could hang if a dump was
loaded or copied using an account which lacked the
SELECT
privilege on the Performance Schema.
The operation hung when indexes were rebuilt. Errors were
returned similar to the following:
MySQL Error 1142 (42000): SELECT command denied to user for table 'events_stages_current'
As of this release, error handling is added for this issue. (Bug #37593239)
MySQL Shell session objects now support storing client data, providing an alternative to using global dictionaries tied to session IDs, and improving management of session-specific data for plugins written in Python or JS. Several other improvements were made to session objects as part of this enhancement.
The following changes were made:
setClientData()
and
getClientData()
methods added to the
classic and X session objects.
Added a trackSystemVariable()
method to
the ClassicSession
object to allow
tracking SQL_MODE
.
Added a sqlMode
property to the
ClassicSession
object.
(Bug #37710803)
Shell now supports the storage of generic secrets. You can use the following new functions to manage your secrets:
shell.storeSecret(key, value)
: Stores a
secret with the given key.
shell.readSecret(key)
: Reads a secret
with the given key.
shell.deleteSecret(key)
: Deletes a secret
with the given key.
shell.deleteAllSecrets()
: Deletes all
secrets
shell.listSecrets()
: Lists keys of all
secrets
Secrets stored with this API are not accessible to the credential methods listed here: Working with Credentials, nor can this API cannot access credentials managed by that API.
See Generic Secret Storage for more information. (WL #16958)
Custom SQL Handlers did not correctly handle statements preceded by a full line comment. A syntax error was returned, similar to the following:
mysqlsh.DBError: MySQL Error (1064): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right
syntax to use near 'yourStatement
' at line 2
(Bug #37979837)
MySQL Shell now supports the --local-infile
command-line parameter, similarly to the
mysql
client.
See mysqlsh — The MySQL Shell for more information. (Bug #37960814)
Kerberos authentication is now supported on macOS. The
authentication_kerberos_client
plugin is now
bundled on macOS installations of MySQL Shell.
(Bug #37777584)
MySQL Shell could crash when dumping a table with a functional, or virtual, index.
The following error was returned:
Segmentation fault (core dumped)
(Bug #37770454)
Using placeholders in SQL queries, such as CREATE REST
... OPTIONS { "cache_ttl": ? }
with parameters, could
return a parse error.
(Bug #37196079)
MySQL Shell read all profiles in an AWS config file, including
those which were not properly prefixed with
profile
. Error messages were returned similar
to the following:
Could not obtain credentials to assume role using profile 'default';: Partial AWS credentials found in config file (/path
/.aws/config, profile:nameOfProfile
), missing the value of 'aws_secret_access_key' (RuntimeError);.
As of this release, MySQL Shell correctly handles AWS
configuration profiles by requiring the
profile
prefix, ensuring that only valid
profiles are read.
(Bug #36916939)
The runSql()
method in the X session did not
support !
placeholders. Errors were returned
similar to the following:
MySQL Error (5015): Session.run_sql: Too many arguments
(Bug #34715428)
Connections to invalid SSH URIs were not properly closed, resulting in multiple defunct sshd processes. As of this release, tunnel handling is improved and unused tunnels are closed automatically. (Bug #33564687)
It was not possible to start MySQL Shell on ARM platforms if
PAGE_SIZE
was set to 64K. An error similar to
the following was displayed:
mysqlsh: error while loading shared libraries: libssh.so.4 ELF load command aligment not page-aligned
(Bug #118021, Bug #37854467)