Dear MySQL users, This is the second development release version of MySQL Shell 8.0 (a component of the MySQL Server). The MySQL Shell is provided under Oracle's dual-license.
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, providing an integrated solution 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 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 http://dev.mysql.com/doc/refman/en/ For more information about how to download MySQL Shell 8.0.3 dmr, see the "Development Releases" tab at http://dev.mysql.com/downloads/shell/ We welcome and appreciate your feedback and bug reports, see http://bugs.mysql.com/ Enjoy! Changes in MySQL Shell 8.0.3 (2017-09-29, Development Milestone) MySQL Shell now synchronizes the first digit of its version number with the (highest) MySQL server version it supports. This change makes it easy and intuitive to decide which client version to use for which server version. MySQL Shell now uses the same version number as MySQL Server. MySQL Shell 8.0.3 is the first release to use the new numbering. It is the successor to MySQL Shell 8.0.0. * Functionality Added or Changed * Bugs Fixed Functionality Added or Changed * MySQL Shell now handles user interrupts, such as SIGINT, correctly. For example on Linux pressing Control-C when MySQL Shell is not executing anything exits the application. In SQL mode, interruption sends a KILL QUERY statement to the active MySQL Shell session from a new temporary session, resulting in the server interrupting the query and returning an error (or in an early return with no error in some cases, like the sleep() function). In JavaScript or Python scripting modes, how interruption behaves depends on the specific function being executed. If what is being executed is language code (such as a while loop and other normal script code), an exception is generated in the active language, which causes the code to stop executing. The exception may be caught by the script, but if not, the execution control returns to MySQL Shell. (Bug #24757361) * Since MySQL server version 8.0.2, whenever Group Replication stops the 'super_read_only' variable is set to 'OFF' to ensure no writes are made to the instance. To ensure that AdminAPI supports instances running MySQL 8.0.2 and later, the following functions have been modified: + dba.configureLocalInstance() + dba.createCluster() + dba.rebootClusterFromCompleteOutage() + dba.dropMetadataSchema() Now, if any of these functions is issued against an instance which has "super_read_only=ON", in interactive mode you are given the choice to set "super_read_only=OFF". To force the function to set "super_read_only=OFF" in a script, pass the 'clearReadOnly' option set to true. For example dba.configureLocalInstance({clearReadOnly: true}). * MySQL Shell now includes a history function that stores the code which you issue. The history can be saved, searched, and filtered. A new mechanism to customize the MySQL Shell prompt has been added. Information such as the current mode (SQL, JavaScript, or Python), session information (host, uri, port and so on), the current active schema and others can be included in the prompt through variables. The customization information is self-contained in JSON theme files, which can be shared between users. MySQL Shell now supports unicode if the terminal used to run MySQL Shell supports it. Similarly if the terminal supports color, MySQL Shell can be configured to use colors in the theme. * The connection options passed to MySQL Shell, such as sslMode and so on, have been changed to use dashes and no longer be case sensitive. The options are now: + sslMode is now ssl-mode + sslCa is now ssl-ca + sslCaPath is now ssl-capath + sslCert is now ssl-cert + sslKey is now ssl-key + sslCrl is now ssl-crl + sslCrlPath is now ssl-crlpath + sslCiphers is now ssl-ciphers + sslTlsVersion is now tls-version + authMethod is now auth-method * The types of session available have been simplified. XSession and NodeSession have been consolidated into Session. This has caused the following changes: + The following command options have been deprecated: --node, --sqln, --classic + The following command options have been introduced to replace the deprecated ones: -ma, --mysqlx (-mx), --mysql (-mc), --sqlx + The "\connect" MySQL Shell command no longer supports the arguments -c, and -n. Now the "\connect" command supports the argument --mysqlx(-mx) for creating X Protocol connections, and --mysql(-mc) for creating MySQL protocol connections. Bugs Fixed * In MySQL Shell, the Schema.getCollectionAsTable() function and the select() method could not be used in the same Python statement. (Bug #26552804) * When using the clusterAdmin option, the created account did not have all of the correct privileges. (Bug #26523629) * MySQL Shell returned some elements of DATE and DATETIME values incorrectly, including month values and fractional seconds. (Bug #26428636) * The month was incorrectly incremented on insertion of a timestamp in a table using MySQL Shell. (Bug #26423177) * For columns with the ZEROFILL attribute, NULL was also returned padded with zeroes. (Bug #26406214) * The output of the MySQL Shell "\status" command was enhanced with additional information. (Bug #26403909) * The MySQL Shell help for the "\connect" command indicated that a connection name could be used instead of a URI string, which was incorrect. (Bug #26392676) * When using the multiMaster option with dba.createCluster(), the warning displayed in interactive mode was not being logged. (Bug #26385634) * When making cluster topology or membership changes, AdminAPI was not taking into consideration the value of 'group_replication_group_name', which could lead to incorrect, non-deterministic results in scenarios such as a split brain. Now, the following commands validate the InnoDB cluster Metadata and the corresponding instance's 'group_replication_group_name' value: + dba.getCluster() + Cluster.rejoinInstance() + Cluster.forceQuorumUsingPartitionOf() If the values of 'group_replication_group_name' do not match, the commands abort with an error. dba.rebootClusterFromCompleteOutage() was also updated to ensure that the 'group_replication_group_name' variable has not been changed before rejoining the instance. (Bug #26159339) * AdminAPI now always uses the active user value for the current mysqlsh session, whether the value was explicitly specified by the user or is the result of an implicit default used by mysqlsh. (Bug #26132527) * The checks performed by the AdminAPI upon issuing dba.rebootClusterFromCompleteOutage() were more strict than those required by Group Replication. Now, the AdminAPI considers tables with a Primary Key Equivalent (such as a Non Null Unique Key) as compatible, matching the current requirement for Group Replication. (Bug #25974689) * The MySQL Shell command "\use" did not attempt to reconnect if the connection to the global session was lost. (Bug #25974014, Bug #86118) * The short form -? can now be used as an alias for the --help command-line option in MySQL Shell. (Bug #25813228) * The MySQL Shell command history displayed the commands that were used to automatically import the mysql and mysqlx API modules when MySQL Shell started. (Bug #25739185) * The randomly generated passwords used by internal users were not compatible with instances running the Password Validation plugin. (Bug #25714751) * The MySQL Shell command history displayed the contents of scripts that were run using the "\source" MySQL Shell command. (Bug #25676495) * It is no longer possible to use the adoptFromGr option with the multiMaster option. When adopting an existing group to an InnoDB cluster, the group is adopted based on whether it is running as multi-primary or single-primary. Therefore there is no use for the multiMaster option when adapting a group. (Bug #25664700) * Issuing configureLocalInstance() when using a URI that contained a user without the correct privileges resulted in an incorrect new user being created. Now, if the user in configureLocalInstance() URI does not have enough privileges to grant all the necessary privileges for the new user chosen during the interactive wizard configuration the user is not created. (Bug #25614855) * The mysqlx.getNodeSession() function in MySQL Shell now returns an error if an unrecognized connection option is provided. (Bug #25552033) * Issuing Cluster.rescan() resulted in non-determinstic behavior which could produce incorrect JSON output, showing an instance that was already part of the cluster as belonging to the newlyDiscoveredInstances[] list and to the unavailableInstances[] list. This also resulted in MySQL Shell prompting to add or remove the instance from the cluster. (Bug #25534693) * AdminAPI functions now accept the standard connection parameters as used by shell.connect. New validations have been added for when 'require_secure_transport' is ON, now it is not possible to to create a cluster with "memberSslMode:DISABLED" or to add an instance with "require_secure_transport=ON" to a cluster where "memberSslMode:DISABLED". (Bug #25532298) * The parsing of account names, for example when passing the clusterAdmin option to dba.configureLocalInstance() has been improved. (Bug #25528695) * The file permissions of option files created by AdminAPI did not match those of options files created by MySQL install. (Bug #25526248) * Issuing configureLocalInstance() twice could fail. (Bug #25519190) * When passing the rejoinInstances[] option to dba.rebootClusterFromCompleteOutage(), if no rejoinInstances[] option was specified then members were being incorrectly handled during the rebuild. Now, instances that are eligible to be added to the rejoinInstances[] list but that are specified in the removeInstances[] list are skipped by the interactive wizard that tries to automatically build a rejoinInstances[] list if one was not provided. This fix also ensures that both interactive and non-interactive use of MySQL Shell correctly verify the rejoinInstances[] list does not contain a unreachable instance. (Bug #25516390) * The error messages issued when the SSL mode used by the cluster and the one specified when issuing addInstance() command do not match have been improved. (Bug #25495056) * The --ssl option has been deprecated, use the --ssl-mode option. Now, if you use the --ssl option a deprecation warning is generated and the --ssl-mode option is set to either DISABLED or REQUIRED based on the value used with the --ssl option. (Bug #25403945) * When creating a sandbox instance using the dba.deploySandboxInstance() function in MySQL Shell, pressing Ctrl + C at the prompt for a MySQL root password for the instance did not cancel the deployment. (Bug #25316811) * MySQL Shell did not exit gracefully when the user did not have a valid and accessible home directory. (Bug #25298480) * MySQL Shell created a logger but did not deallocate it on exiting the shell. (Bug #25238576) * Issuing removeInstance() on the last member of a cluster, and particularly the seed member, was resulting in a cluster that could not be dissolved. Now, issuing removeInstance() on the last member of a cluster results in an error, and you must use dissolve() on that instance to ensure the cluster is correctly dissolved. (Bug #25226130) * The output of cluster.status() now includes the ssl parameter, which shows whether secure connections are required by the cluster or disabled. (Bug #25226117) * MySQL Shell could hang when Ctrl + C was used to exit the shell. (Bug #25180850, Bug #84022) * Attempting to create a multi-primary cluster in interactive mode failed unless you passed in the {force: true} option. Now when you confirm that you understand the impact of using multi-primary mode the command correctly creates a multi-primary cluster. (Bug #25034951) * The removeInstance() was not working on stopped instances and it was not possible to remove an unavailable instance from the cluster. The fix adds a new option force to the removeInstance() command to enable you to remove instances from the metadata that are permanently not available, avoiding obsolete data from being kept in the metadata of the cluster. In addition the error message provided when not using the force option has been improved and the online help for the removeInstance() was also updated accordingly. (Bug #24916064) * Unsigned data could be incorrectly read from the database. (Bug #24912358) * The parsing of Unix sockets provided as part of a URI has been improved. (Bug #24905066) * The error messages generated by issuing dba.deployLocalInstance() against an unsuitable or incompatible instance have been improved. (Bug #24598272) * The dba.createCluster(), dba.getCluster(), and dba.rebootClusterFromCompleteOutage() functions have been updated to validate the cluster name, using the following rules: + Name must start with a letter or the '_' character + Name can only contain alphanumeric characters and the '_' character + Cannot be longer than 40 characters + Cannot be empty The Cluster.addInstance() function has been updated to validate the label used on an instance in the cluster, using the following rules: + Label can only contain alphanumerics or the '_' character + Cannot be longer than 256 characters + Cannot be empty (Bug #24565242) * MySQL Shell now accepts Unicode characters as input. (Bug #23151666, Bug #81176) On Behalf of the MySQL/ORACLE RE Team Kent Boortz -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql