Starting with the 8.0.23
release, Connector/Node.js will be deprecating support for End-of-life Node.js engine versions. Support for these versions will eventually be removed on subsequent releases which will focus on compatibility with the available LTS versions at the date of each release.
Category Archives: Connector/Node.js
MySQL Connector/Node.js 8.0.23 has been released
Dear MySQL users,
MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.23, 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.23 (2021-01-18, General Availability)
* Functionality Added or Changed
* Bugs Fixed
Functionality Added or Changed
* Added custom debug functionality using the NODE_DEBUG
environment variable to log and inspect low-level details
for the application. Connector/Node.js now supports this
feature and uses it, in particular, for logging
information about the protocol messages (inbound and
outbound) that are exchanged with the MySQL server.
Messages sent by the client are available under the
protocol:outbound scope, whereas messages sent by the
server are available under the protocol:inbound scope.
For example, the following writes a textual protobuf
representation of every Mysqlx.Crud.Find and
Mysqlx.Resultset.Row message to stderr: shell> NODE_DEBUG=’protocol:outbound:Mysqlx.Crud.Find,protocol:inbound :Mysqlx.Resultset.Row’ node app.js
Node 10 and later supports wildcard pattern matching,
such as NODE_DEBUG=’protocol:inbound:*’ to filter out
inbound messages and NODE_DEBUG=’*’ to show all logs.
(Bug #31729043)
* Added a deprecation warning to the Connector/Node.js
installation process that future Connector/Node.js
versions do not guarantee compatibility with End-of-life
Node.js versions. If you are planning to upgrade, make
sure you are using Node.js 12.0.0 or higher.
Bugs Fixed
* Stored values in a DOUBLE column were truncated when
encoded and sent to the MySQL server. For example, a
value such as 1.000001 would become 1. They are now
encoded properly as double-precision floating numbers to
support the full range of 64-bit floating point precision
in MySQL columns with the DOUBLE data type (having in
mind possible rounding an approximations performed by the
database engine). (Bug #31734504)
* Improved consistency for method argument error handling
when an argument is not set or uses JavaScript’s
“undefined”. (Bug #31709879)
* Refactored code to disable all debugging utilities when
debug mode is off. (Bug #31584269)
On Behalf of MySQL Release Engineering Team,
Surabhi Bhat
MySQL Connector/Node.js 8.0.22 has been released
Dear MySQL users,
MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.22, 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.22 (2020-10-19, General Availability)
Functionality Added or Changed
* Improved test execution configuration to better align
with other connectors. For example, unified environment
variable names (such as changing NODE_TEST_MYSQL_HOST to
MYSQLX_HOST). See the Connector/Node.js documentation
(https://dev.mysql.com/doc/dev/connector-nodejs/8.0/) for
usage information.
Bugs Fixed
* Non-BIGINT values stored in BIGINT columns were not
decoded properly in result sets. (Bug #31686805, Bug
#100324)
* Fetched results from a SET column would only contain one
value from the set. (Bug #31654667, Bug #100255)
* Deprecated the dbPassword and dbUser property names;
which were aliases to the password and user properties.
Their usage now emits deprecation level errors. (Bug
#31599660)
* Added a SERVER_GONE error handler to avoid potential
circular dependency warnings with Node.js >= 14.0.0. (Bug
#31586107, Bug #99869)
* Restricted the offset() method to the CollectionFind and
TableSelect APIs, as described in the X DevAPI
specification. Using offset() on other APIs yielded this
error: “Error: The server has gone away”. Instead, this
intended behavior is available by using a combination of
“sort()” or “orderBy()” and “limit()”. (Bug #31418813)
* The nextResult() method returned false against an empty
result set, and now returns true. Alternatively, use
hasData() to check if a result set has data. (Bug
#31037211)
* The column.getType() method now returns the stringified
type identifier when before it returned its numeric
value. For example, DATETIME is now returned instead of
12. (Bug #30922711)
* Improved memory management for work performed by 3rd
party APIs. (Bug #30845472)
* Added support for lazy decoding of binary column metadata
content. (Bug #30845366)
On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison
MySQL Connector/Node.js 8.0.20 has been released
Dear MySQL users,
MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, version 8.0.20, 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.20 (2020-04-27, General Availability)
Functionality Added or Changed
* Added two new connection options that evaluate during the
TLS handshake to restrict the negotiated TLS protocols
and ciphers; along with those configured on the server
that can further restrict the final choices. These new
options are tls-versions to define the allowed TLS
protocol versions, and tls-ciphersuites for the allowed
cipher suites. These definitions are comma-separated, and
accepted by the getSession() and getClient() methods.
tls-versions: accepts one or more of the following:
TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3. Other values
generate an error.
tls-ciphersuites: accepts IANA cipher suite names, as
listed on IANA’s TLS Cipher Suites
(https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4)
page. Unsupported or unknown values are ignored.
Example usage demonstrating both plain JavaScript and
JSON configuration object formats:
# tls versions:
mysqlx.getSession(‘mysqlx://root@localhost?tls-versions=[TLSv1,TLSv1.1
,TLSv1.2,TLSv1.3]’)
mysqlx.getSession({ user: ‘root’, tls: { versions: [‘TLSv1’, ‘TLSv1.1’
, ‘TLSv1.2’, ‘TLSv1.3’] } })
# tls ciphersuites
mysqlx.getSession(‘mysqlx://root@localhost?tls-ciphersuites=[DHE-RSA-A
ES128-GCM-SHA256,DHE-RSA-AES256-SHA256]’)
mysqlx.getSession({ user: ‘root’, tls: { ciphersuites: [‘DHE-RSA-AES12
8-GCM-SHA256′, ‘DHE-RSA-AES256-SHA256’] } })
* For X DevAPI applications, when creating a new
connection, if the connection data contains several
target hosts that have no explicit priority assigned, the
behavior of the failover logic now is the same as if all
those target hosts have the same priority. That is, the
next candidate for making a connection is chosen randomly
from the remaining available hosts. If two hosts have the
same priority then one is chosen at random.
On Behalf of MySQL/ORACLE RE Team
Gipson Pulla
Rethinking Result Sets in Connector/Node.js
It used to be the case where, in order to actually process data retrieved from the database using Connector/Node.js, you would have to resort to an API that required the use of both JavaScript callbacks and Promise
s. This was meant to provide more flexibility and control to the application developer and at the same time decrease the chance of buffering data unnecessarily. However this wasn’t useful for 99% of the use-cases and made simple tasks a little bit cumbersome. Also, the fact that it required using two different asynchronous constructs made it a little bit harder to grasp.
To make matters worse, in order to consume operational metadata about the columns in the result set, you would have to provide an additional callback, making the whole thing spiral a bit out of control, particularly when there were multiple result sets involved. In that case, you needed to create a shared context between the two functions in order to map data and metadata for each column in each result set.
Continue readingMySQL Connector/Node.js 8.0.19 has been released
Dear MySQL users,
MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.19, 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.19 (2020-01-13, General Availability)
Functionality Added or Changed
- Added DNS SRV support.
Using the mysqlx+srv scheme+extension in a connection
string (or enabling the resolveSrv option in a connection
configuration object) allows to automatically resolve any
SRV record available in a target DNS server or service
discovery endpoint.
Bugs Fixed
- Improved the CRUD API error messages. (Bug #30423556)
- The getAffectedItemsCount() method did not function on
result sets in v8.0.18. (Bug #30401962) - The Collection.existsInDatabase() method did not
function. (Bug #30401432)
On Behalf of MySQL/ORACLE RE Team
Gipson Pulla
MySQL Connector/Node.js 8.0.18 has been released
Dear MySQL users,
MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.18, 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.18 (2019-10-14, General
Availability)
Functionality Added or Changed
- Implemented the X DevAPI cursor model, which includes
adding methods such as fetchOne(), fetchAll(),
getColumns(), hasData(), and nextResult(). For additional
details, see the X DevAPI documentation about Working
with Result Sets
(https://dev.mysql.com/doc/x-devapi-userguide/en/working-with-result-sets.html).
Previously, handling result set data or metadata required
specific callback functions when calling execute(). With
this new interface, the connector automatically switches
to this new pull-based cursor model if these callback
functions are not provided.
- Improved Collection.getOne() performance by making the
underlying lookup expression to only parse once, and
having subsequent Collection.getOne() calls utilize
server-side prepared statements. - Added support to generate test coverage reports by
running the likes of npm run coverage; see the bundled
CONTRIBUTING.md for details and requirements. This was
added to help users contribute patches. - Added linter check support to help enforce coding style
and convention rules for new contributions by running the
likes of npm run linter; see the bundled CONTRIBUTING.md
for details.
Bugs Fixed
- Added support for assigning Node.js Buffer values to
expression or SQL query placeholders. (Bug #30163003, Bug 96480) - MySQL column binary values (such as BLOB, BINARY, and
VARBINARY) can now convert to proper Node.js Buffer
instances. (Bug #30162858, Bug #96478) - Inserting a raw Node.js Buffer value into MySQL BLOB
field resulted in an error as the content_type was
improperly set; it’s now handled as a raw byte string by
the X Plugin. (Bug #30158425) - The padding characters used for fixed-lengthed columns
now map to the collation code provided by the column
metadata; previously it was based on the JavaScript
native type of the values. (Bug #30030159)
On Behalf of MySQL/ORACLE RE Team
Gipson Pulla