MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.7 , is the first development 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/.
Note
Please note that the X DevAPI requires at least MySQL Server version
5.7.12 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/5.7/en/document-store.html.
MySQL Connectors and other MySQL client tools and applications now
synchronize the first digit of their version number with the (highest)
MySQL server version they support. This change makes it easy and intuitive
to decide which client version to use for which server version.
Connector/Node.js 8.0.7 is the first release to use the new
numbering. It is the successor to Connector/Node.js 1.0.6.
Functionality Added or Changed
- It is no longer permitted to pass an empty search condition, such as the NULL value or an empty string, to the Collection.modify() and Collection.remove() methods.
- A number of changes have been implemented for the “drop” methods:
- The “drop” methods are now made available at the same level as the corresponding “create” methods. For example, the dropCollection() and dropTable() methods have been removed from the XSession class (which has now been consolidated into the Session class) and moved under the Schema class; under the same principle, the drop() method has been removed from the Collection and Table classes.
- The “drop” methods now succeed even if the objects to be dropped do not exist.
- dropView() is now asynchronous and behaves exactly like dropTable() and dropCollection() by implicitly executing the operation and returning a promise that will hold the result of the drop operation.
- A configuration handler interface, mysqlx.config, has been created for managing persisted session configurations. See MySQL Connector/Node.js with X DevAPI
(http://dev.mysql.com/doc/dev/connector-nodejs/) for details. - There are a few changes with regard to secure connections to MySQL servers:
- Connections are now secure by default.
- The connection option ssl-enable has been replaced by the ssl-mode option, which has DISABLED, REQUIRED (default), and VERIFY_CA as its permitted values
- Using the ssl-crl option requires the use of the ssl-ca option and that ssl-mode=VERIFY_CA; this is due to an internal requirement of the Node.js core platform.
- Consolidated the BaseSession, NodeSession, and XSession into a single Session class. The following related changes were also made:
- The mysqlx.getNodeSession() method is renamed to getSession and returns a Session object.
- The DatabaseObject.getSession() now returns a Session object.
- A new client-side failover feature has been implemented: when creating a new connection, multiple hosts now can be specified in the connection string, and Connector/Node.js tries each host until a successful connection is established or until all hosts have been tried. See Tutorial: Getting Started
(http://dev.mysql.com/doc/dev/connector-nodejs/tutorial-Getting_Started.html)
for details - Connector/Node.js now supports connecting to a local server using Unix sockets. See Tutorial: Getting Started
(http://dev.mysql.com/doc/dev/connector-nodejs/tutorial-Getting_Started.html)
for details. - The format of the document ID value generated when adding a document to a collection has changed. It is still a string of 32 hexadecimal digits based on a UUID, but the order of digits has been changed to match the requirement of a stable ID prefix.
Bugs Fixed
- It was not possible to create a new session for a user with a SHA256 password via the PLAIN authentication mechanism. (Bug #26117627)
- The handling of large JSON arrays was problematic, and would cause an exception to be thrown. (Bug #26084604)
- Attempting to use bind when removing a document from a collection would not succeed, and an exception would be thrown. (Bug #26029551)
- The Table.update() implementation did not require a SearchConditionStr parameter, and not using this parameter could result in updating all the rows of a given table. A client-side exception is now thrown if the SearchConditionStr parameter is undefined or empty. (Bug #25993174)
- The Table.delete() implementation did not require a SearchConditionStr parameter, and not using this parameter could result in deleting all the rows of a given table. A client-side exception is now thrown if the SearchConditionStr parameter is undefined or empty. (Bug #25992969)
On behalf of the MySQL/Oracle Release Engineering Team
Piotr Obrzut