MySQL Shell Release Notes  /  Changes in MySQL Shell 8.4.1 (2024-07-01, LTS Release)

Changes in MySQL Shell 8.4.1 (2024-07-01, LTS Release)

AdminAPI Bugs Fixed

  • MySQL Shell closed unexpectedly when calling certain AdminAPI functions on EL7 platforms. (Bug #36651010)

  • dba.reboot_cluster_from_complete_outage() disabled super_read_only on the primary member of an INVALIDATED Cluster. As a result, clients continued to perform updates and introduce errant transactions.

    As of this release, dba.reboot_cluster_from_complete_outage() enables super_read_only on the primary member and disables the Group Replication action mysql_disable_super_read_only_if_primary. (Bug #36562916)

  • If an attempt to create a Replica Cluster failed due to a timeout and the revert also failed due to a timeout, the Replica Cluster could be left in an inconsistent state; ONLINE, but not associated with the ClusterSet's metadata. This specific issue was caused by low values for wait_timeout and interactive_timeout.

    The following changes were made:

    • wait_timeout is checked and, if set to a value lower than the default of 8 hours, is set to 8 hours.

    • Cluster.rescan() is extended with a new option, repairMetadata which can be enabled to resolve inconsistencies in the Cluster's metadata.

    • Cluster.dissolve() can now be used on Clusters in this inconsistent state.

    (Bug #36495756)

Utilities Added or Changed Functionality

  • The following check was added to the Upgrade Checker utility:

    • foreignKeyReferences: Checks for foreign keys referencing non-unique and partial indexes.

    (Bug #36553868)

Utilities Bugs Fixed

  • The formatting of the report returned by the Upgrade Checker utility's invalidPrivilege check is improved in this release. Instead of returning a message for each user, the users are grouped with the message. (Bug #36613895)

  • As of this release, all failed connections to the supported object storage platforms are retried three times, with a 1 second delay between retries.

    If a failure occurs 10 minutes after the connection was created, the delay is changed to an exponential back-off strategy:

    • First delay: 3-6 seconds

    • Second delay: 18-36 seconds

    • Third delay: 40-80 seconds

    (Bug #36597063, Bug #36256053)

    References: See also: Bug #35396788.

  • restrict_fk_on_non_standard_key, introduced in MySQL 8.4.0, prohibits creation of foreign keys which reference only part of a composite key when enabled. This system variable is enabled by default on MySQL HeatWave Service and resulted in errors loading dumps which contained such keys when detected by the Upgrade Checker utility's foreignKeyReferences check.

    As of this release, a new compatibility option is added the dump utilities, force_non_standard_keys. This disables checks for non-standard foreign keys, and cause the loader to set the session value of restrict_fk_on_non_standard_key to OFF. (Bug #36553849)

  • Primary keys defined on an ENUM column were reported as missing for dumps with ocimds:true. This was caused by a fix in an earlier version which instructed the dump utility to ignore primary keys or unique indexes which contain one or more ENUM columns when selecting an index for chunking.

    As of this release, information about the index selected for chunking and whether the table has a primary key is separated. (Bug #36493316)

    References: See also: Bug #35180061.

  • It was not possible to run the Upgrade Checker utility against an MySQL HeatWave Service DB System. An error was returned relating to missing RELOAD privileges. RELOAD is not granted to MySQL HeatWave Service users.

    RELOAD is not required by the Upgrade Checker when run against MySQL HeatWave Service DB Systems, it is only required against MySQL 5.7.x. As such, the requirement is removed in this release. (Bug #36361159)

  • The Upgrade Checker utility did not validate the value of the configPath parameter.

    As of this release, the value of configPath is validated before running the upgrade checks. (Bug #36332625)

  • The Upgrade Checker utility behaved inconsistently in the absence of certain privileges. Sometimes returning an error and sometimes attempting to run its checks. (Bug #36332031)

  • The Upgrade Checker utility's sysvarAllowedValues did not take into account empty strings as valid values for certain variables, such as ssl_cipher, resulting in false negative errors in the report. (Bug #36298612)

  • It was not possible to use the Copy utilities with certain MySQL-compatible databases. SQL syntax errors were returned. (Bug #36297963)

  • util.collect_diagnostics() failed with an AttributeError when run against an InnoDB Cluster on which the Group Replication plugin was uninstalled from one or more members. The utility attempted to retrieve values for Group Replication system variables which did not exist because the plugin was uninstalled.

    Thanks to Ioannis Androulidakis for the contribution. (Bug #114707, Bug #36589677)

  • Under certain circumstances, the Upgrade Checker utility's reserved keywords check did not generate warnings for the FULL and INTERSECT keywords. (Bug #114423, Bug #36424093)

  • Fixed an issue with non-ASCII character handling in the Upgrade Checker utility's schemaInconsistency check.

    Thanks to Daniel Lenski and Amazon for the contribution. (Bug #114127, Bug #36340714)

Bugs Fixed

  • MySQL Shell closed unexpectedly if a native Python object was passed to a Python plugin function. (Bug #36502096)

  • MySQL Shell did not prompt for a password if -p was specified on the command line without an argument. (Bug #36433418)

  • Under certain circumstances, a password prompt was not returned although no password was provided on the command line or defined in a configuration file. (Bug #36422502, Bug #36422492)

  • --no-password did not work if a password was defined in the server's configuration file or if it was provided earlier in the command line. (Bug #36422408)

  • If logSql was set to ERROR, MySQL Shell logged the SQL without filtering for unsafe statements. As of this release, the pattern defined in logSql.ignorePatternUnsafe is used to filter unsafe SQL from the log.

    Also, the pattern which triggered the filter is logged. (Bug #36014067)

  • Special characters, such as tab or newline, were not supported in utility calls from the command line. For example, in the following command, \t was not properly handled:

     > mysqlsh root@localhost -- util import-table sample_us.tsv --schema=test --table=samples --fieldsTerminatedBy="\t"

    (Bug #34887426)

  • Upgrading MySQL Shell 8.0.35, or higher, on Windows platforms, resulted in multiple installations instead of overwriting the existing installation. (Bug #113732, Bug #36259270)