Balasubramanian Kandasamy MySQL Shell 1.0.10 GA has been released
Jul 28, 2017; 16:50
MySQL Shell 1.0.10 GA has been released
Dear MySQL Users,
A new GA (general availability) version of MySQL Shell (a component of the MySQL Server) has been made available: MySQL Shell 1.0.10 GA. The MySQL Shell is provided under Oracle's dual-license.
The AdminAPI provides an integrated solution for high availability and scalability using InnoDB based MySQL databases, without requiring advanced MySQL expertise.
The Document Store DevAPI enables developers and DBAs to create "schema-less" JSON document collections and perform Create, Update, Read, Delete (CRUD) operations on those collections with little to no knowledge of the SQL language.
Additionally, MySQL Shell provides partial compatibility with the mysql command line client by supporting many of the same command line options. As with the mysql command line, MySQL Shell can also be used to connect to and send SQL commands to pre-5.7.12 versions of the MySQL server using the standard MySQL network protocol.
For more information about how to configure and work with an InnoDB cluster see https://dev.mysql.com/doc/refman/en/mysql-innodb-cluster-userguide.html
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 full documentation on MySQL Server, MySQL Shell and related topics, see http://dev.mysql.com/doc/refman/en/
If you want to write applications that use the the CRUD based X DevAPI use the latest MySQL Connectors for your language of choice. You can also find documentation about Connectors in the MySQL documentation site.
For more information about how to download MySQL Shell, see http://dev.mysql.com/downloads/shell/
We welcome and appreciate your feedback and bug reports, see http://bugs.mysql.com/
Changes in MySQL Shell 1.0.10 (2017-07-28, General Availability)
* Security Fix: The linked OpenSSL library for MySQL Shell Commercial has been updated to version 1.0.2l. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. This change does not affect Oracle-produced MySQL Community builds of MySQL Shell, which use the yaSSL library instead. (Bug #26284262)
* Security Fix: Running queries on servers using MySQL 8 against a table with a text column caused an unexpected halt.
Functionality Added or Changed
* The clusterAdminType option of the dba.createCluster() was unused and has been removed. (Bug #25585027)
* The --help message now displays all short-form options. The --help message now displays complete information for the --json option. shell.help('options') now returns usable information about mysqlsh options. cluster.help('checkInstanceState') now reports correct information. cluster.help('addInstance') and cluster.help('rejoinInstance') now report complete information. help() now reports complete information for all AdminAPI and Shell commands. (Bug #24841493, Bug #24910540, Bug #24841749, Bug #25701345, Bug #24977542, Bug #25268410, Bug #25266846)
* Calling the modify() or remove() function without a parameter caused the function to be executed against the whole collection, which could cause unexpected results such as deleting all rows in a table. To avoid this and make the behavior consistent with update() and delete(), a client-side exception is now thrown if the modify() or remove() function is called without a parameter. Now, to execute the modify() or remove() function against a collection call them with an expression that evaluates to true, for example remove('true') or modify('true').
* 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 split-brains. Now, the following commands validate the InnoDB cluster Metadata and the corresponding instance's group_replication_group_name value:
+ 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 addInstance() function was failing when run against a server using MySQL 8. (Bug #26085799)
* Executing AdminAPI commands on a server with a version of Python lower than 2.7 was failing without the correct error message. (Bug #25975317)
* 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)
* Executing dba.createCluster() on an instance with sql_mode=ANSI_QUOTES failed with an error. (Bug #25966057) References: See also: Bug #25990172.
* The server version is now displayed as part of the "Connected to" message. (Bug #25824753)
* When using MySQL Shell on Windows any files created or opened, for example those used during dba.createSandboxInstance(), could not be deleted. (Bug #25789094)
* Queries that used an expression of the form collection.find(identifier IN identifier) caused an abnormal mysqlsh exit. (Bug #25754078)
* If AdminAPI functions were interrupted, for example with control-C on Unix, the exit code returned by the process was 1 instead of the expected one for terminated processes, for example SIGINT. (Bug #25728759)
* The previous limitation of auto_increment_increment being set according to the random 32-bit unsigned integers used for the server-id system variable has been resolved. Now, when operating in single-primary mode auto_increment_increment is set to 1 and auto_increment_offset is set to 2. In multi-primary mode auto_increment_increment is set to 7 and auto_increment_offset is set to 1 plus the server_id modulo 7. (Bug #25724564)
* The randomly generated passwords used by internal users were not compatible with instances running the Password Validation plugin. (Bug #25714751)
* The help for dba.configureLocalInstance(instance[, options]) has been improved to describe the returned JSON object. (Bug #25703028)
* The options in the MySQL Shell options dictionary are now fully documented. (Bug #25701345)
* 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)
* 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)
* 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 non reachable instance. (Bug #25516390)
* When using dba.deploySandboxInstance() and passing in sandboxDir, the specified path must not exceed 89 characters. (Bug #25485035)
* shell.connect() did not report an error if an invalid argument was used. An ArgumentError is now issued for any invalid argument. The following mutually exclusive pairs of options are now checked, and an error is issued if both are specified:
+ --password and --dbPassword
+ --user and --dbUser
+ --port and --socket (Bug #25268670) References: See also: Bug #24911173.
* 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)
* removeInstance() resulted in unexpected behavior in some cases, for example when an empty password was passed as part of the URI to the instance. (Bug #25111911)
* The default for prompts has been made more consistent. (Bug #25039886)
* A number of issues with the output of shell.help("prompt") have been corrected. (Bug #25026855, Bug #25242638, Bug #25676343, Bug #25176769)
* The usage of the terms global session and active session have been made more consistent in the user interface. (Bug #24954546)
* 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)
* MySQL Shell now displays an invalid year as 0000, matching the behavior of the MySQL prompt, rather than as 0. (Bug #24912061)
* MySQL Shell did not display fractional seconds for values in DATETIME columns. (Bug #24911885)
* The parsing of Unix sockets provided as part of a URI has been improved. (Bug #24905066)
* Creating Classic sessions that connect using Unix sockets now uses the correct defaults such as hostname. This resolves the previous limitation of using Unix sockets to connect to InnoDB cluster instances. See MySQL Shell Connections (http://dev.mysql.com/doc/refman/5.7/en/mysql-shell-connections.html) for information on how the defaults are applied to socket connections. (Bug #24848763, Bug #26036466) References: See also: Bug #24911068.
* Some issues with the MySQL Shell command line help output were fixed. (Bug #24841749, Bug #24841493, Bug #24910540)
* If an error occurs now both the error number and error text are correctly displayed. (Bug #24816578)
* URIs were incorrectly parsed in MySQL Shell when passwords were hidden. (Bug #24793956)
* 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)
* Using the --dba enableXProtocol option to install X Plugin was failing. (Bug #23508428)
* mysqlsh stopped responding if the \source command was given a directory (rather than file) argument. (Bug #23097932, Bug #81060)
* When using cluster.rejoinInstance() any user specified in the connection string passed in was being ignored and the connection was using the root user. (Bug #85567, Bug #25786495)
* On an instance configured as a multi-threaded slave, in other words slave_parallel_workers set to greater than 0, and with slave_parallel_type=DATABASE, dba.checkInstanceConfiguration() was not detecting that the instance was not correctly configured for InnoDB cluster usage.
* If removeInstance() failed due to a connection error, an error was reported but the instance was incorrectly removed from the InnoDB cluster metadata, and remained part of the replication group. The fix ensures the metadata is correctly updated according to the result of removeInstance().
* In a situation where a new primary instance was elected, adding a new instance to the cluster resulted in an error due to a failed connection to the previous primary instance.
* The functions that modify server variables, such as dba.createCluster() and dba.validateInstance() now provide more information in interactive mode output and log output about server variables which are changed when executed.
* Deploying instances to paths with directories that contained spaces was failing without error. Use double backslash to specify such paths, for example D:\\Cluster\\foo bar.
* The Cluster object obtained from functions such as dba.createCluster() or dba.getCluster() became unusable once the Shell session in which the object was created is was connected to a different server. The fix modifies the Cluster object so that:
+ The Cluster object holds an internal reference to the Session from which it was created or retrieved.
+ AdminAPI functions that modify the Cluster are made using the session referenced by the object.
On Behalf of the MySQL/ORACLE RE Team Balasubramanian Kandasamy
This site manages and broadcasts several email lists pertaining to Lasso Programming and technologies related and used by Lasso developers. Sign up today!