Dear MySQL users,

MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.13, is a maintenance 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/.

Please note that the X DevAPI requires at least MySQL Server version
8.0 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/8.0/en/document-store.html.

Changes in MySQL Connector/Node.js 8.0.13 (2018-10-22, General availability)

Functionality Added or Changed

     * To go with the existing asynchronous
       mysqlx.getSession(conn_str) method, a new synchronous
       mysqlx.getClient(conn_str, options) method was added that
       creates a connection pool handler that provides an
       asynchronous getSession() method to create and retrieve
       connections from the pool. The collection pooling options
       are:

          + enabled: enables or disables connection pooling;
            boolean and defaults to true.

          + maxSize: maximum number of connections available in
            the pool; positive integer and defaults to 25.

          + maxIdleTime: maximum number of milliseconds a
            connection can be idle in the queue before being
            closed; integer >= 0 and defaults to 0 (infinite).

          + queueTimeout: maximum number of milliseconds a
            request will wait for a connection to become
            available; integer >= 0 and defaults to 0
            (infinite).
            This is different than connectTimeout that's used
            for non-pooling. In a pooling scenario, there might
            already be connections in the pool and queueTimeout
            controls how long to wait for a connection in the
            pool.
       Example usage:
       var mysqlx = require('@mysql/xdevapi')
       var client = mysqlx.getClient(
         { user: 'root', host: 'localhost', port: 33060 },
{ pooling: { enabled: true, maxIdleTime: 5000, maxSize: 25, queueTimeout: 20000 } }
       );

       client.getSession()
         .then(session => {
           console.log(session.inspect())
return session.close() // the connection becomes idle in the client pool
         })
         .then(() => {
           return client.getSession()
         })
         .then(session => {
           console.log(session.inspect())
return client.close() // closes all connections and destroys the pool
         })

       Closing a session attached to the pool makes the
       connection available in the pool for subsequent
       getSession() calls, while closing (destroying) the pool
       effectively closes all server connections.

     * Added a connection timeout query parameter. This defines
       the length of time (milliseconds) the client waits for a
       MySQL server to become available in the given network
       addresses. It was added to both the mysqlx.getSession()
       (non-pooling sessions) and mysqlx.getClient() (pooling
       sessions) interfaces. This option defaults to 10000 (10
       seconds). The value 0 disables the timeout so the client
       will wait until the underlying socket (platform
       dependent) times out.
       Similar to other option formatting rules, this option
       defined as connection-timeout (kebab-case) for URI
       definitions and connectionTimeout (camelCase) for plain
       JavaScript configuration objects.
       Example usage:
       const mysqlx = require('@mysql/xdevapi');
       var client = mysqlx.getClient('root@localhost?connect-timeout=5000')
       client.getSession()
           .catch(err => {
console.log(err.message) // "Connection attempt to the server was aborted. Timeout of 5000 ms was exceeded."
           })

       // Or

       const mysqlx = require('@mysql/xdevapi');
var client = mysqlx.getClient('mysqlx://root:passwd@[localhost:33060, 127.0.0.1:33060]?connect-timeout=5000')
       client.getSession()
           .catch(err => {
// connection could not be established after 10 seconds (5 seconds for each server) console.log(err.message); // All server connection attempts we re aborted. Timeout of 5000 ms was exceeded for each selected server.
           });

       In a multi-host scenario, the connect-timeout value
       applies to each individual host.


Bugs Fixed

     * Improved the handling of X Protocol global notices by
       properly logging and then ignoring non-fatal errors, and
       making the connection unusable for subsequent operations
       in the case of a fatal error. (Bug #28653781)

     * Calling getCollationName() on non-textual fields, such as
       INT, threw the following error "TypeError: Cannot read
       property 'collation' of undefined". (Bug #28608923)

     * The fields() method did not function with valid
       expressions generated by the expr() method. (Bug
       #28409639)

     * The returned Session.inspect() object now includes the
       'user' property in addition to the 'dbUser' property but
       containing the same value. (Bug #28362115)

On Behalf of the MySQL/Oracle Release Engineering Team,
Hery Ramilison

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to