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) Dear MySQL users,
MySQL Connector/C++ 8.0.22 is a new release version of the MySQL
Connector/C++ 8.0 series.
Connector/C++ 8.0 can be used to access MySQL implementing Document
Store or in a traditional way, using SQL queries. It allows writing
both C++ and plain C applications using X DevAPI and X DevAPI for C.
It also supports the legacy API of Connector/C++ 1.1 based on JDBC4.
To learn more about how to write applications using X DevAPI, see
“X DevAPI User Guide” at
https://dev.mysql.com/doc/x-devapi-userguide/en/
See also “X DevAPI Reference” at
https://dev.mysql.com/doc/dev/connector-cpp/devapi_ref.html
and “X DevAPI for C Reference” at
https://dev.mysql.com/doc/dev/connector-cpp/xapi_ref.html
For generic information on using Connector/C++ 8.0, see
https://dev.mysql.com/doc/dev/connector-cpp/
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
To download MySQL Connector/C++ 8.0.22, see the “General Availability (GA)
Releases” tab at
https://dev.mysql.com/downloads/connector/cpp/
Changes in MySQL Connector/C++ 8.0.22 (2020-10-19, General Availability)
Compilation Notes
* Connector/C++ now can be compiled using MinGW on Windows.
Thanks to Eric Beuque for the contribution. Note that
this enables building on MinGW but does not make MinGW an
officially supported platform for Connector/C++. (Bug
#31636723, Bug #100248)
Connection Management Notes
* For connections made using X Plugin, Connector/C++ now
enables specifying the compression algorithms to be used
for connections that use compression. Connection URIs and
SessionSettings objects permit explicitly specifying the
preferred algorithms:
+ URI strings permit a compression-algorithms option.
The value is an algorithm name, or a list of one or
more comma-separated algorithms specified as an
array. Examples:
mysqlx://user:password@host:port/db?compression-algorithms=lz4
mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream]
+ SessionSettings objects permit a
SessionOption::COMPRESSION_ALGORITHMS option. The
value is a list of one or more comma-separated
algorithms. Examples:
mysqlx::Session sess(SessionOption::USER, “user_name”,
SessionOption::PWD, “password”,
SessionOption::COMPRESSION_ALGORITHMS, “lz4”);
mysqlx::Session sess(SessionOption::USER, “user_name”,
SessionOption::PWD, “password”,
SessionOption::COMPRESSION_ALGORITHMS, “lz4,zstd_stream”);
Alternatively, the algorithms value can be given as
a container:
std::list<std::string> algorithms = {“lz4″,”zstd_stream”};
mysqlx::Session sess(SessionOption::USER, “user_name”,
SessionOption::PWD, “password”,
SessionOption::COMPRESSION_ALGORITHMS, algorithms);
+ For X DevAPI for C, there is a new
MYSQLX_OPT_COMPRESSION_ALGORITHMS option and
corresponding OPT_COMPRESSION_ALGORITHMS helper
macro.
URI mode follows X DevAPI URI mode:
mysqlx_session_t *sess = mysqlx_get_session_from_url(
“mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream]”, &error);
Option mode follows the string format used for
SessionOption:
mysqlx_session_option_set(opt,
OPT_HOST(“host_name”),
OPT_USER(“user”),
OPT_PWD(“password”),
OPT_COMPRESSION_ALGORITHMS(“lz4,zstd_stream”),
PARAM_END));
These rules apply:
+ Permitted algorithm names are zstd_stream,
lz4_message, and deflate_stream, and their aliases
zstd, lz4, and deflate. Names are case-insensitive.
Unknown names are ignored.
+ Compression algorithms options permit multiple
algorithms, which should be listed in priority
order. Options that specify multiple algorithms can
mix full algorithm names and aliases.
+ If no compression algorithms option is specified,
the default is
zstd_stream,lz4_message,deflate_stream.
+ The actual algorithm used is the first of those
listed in the compression algorithms option that is
also permitted on the server side. However, the
option for compression algorithms is subject to the
compression mode:
o If the compression mode is disabled, the
compression algorithms option is ignored.
o If the compression mode is preferred but no
listed algorithm is permitted on the server
side, the connection is uncompressed.
o If the compression mode is required but no
listed algorithm is permitted on the server
side, an error occurs.
See also Connection Compression with X Plugin
(https://dev.mysql.com/doc/refman/8.0/en/x-plugin-connection-compression.html).
Legacy (JDBC API) Notes
* For applications that use the legacy JDBC API (that is,
not X DevAPI or X DevAPI for C), Connector/C++ binary
distributions now include the libraries that provide the
client-side LDAP authentication plugins, as well as any
dependent libraries required by the plugins. This enables
Connector/C++ application programs to connect to MySQL
servers using simple LDAP authentication, or SASL LDAP
authentication using the SCRAM-SHA-1 authentication
method.
Note
LDAP authentication requires use of a server from a MySQL
Enterprise Edition distribution. For more information
about the LDAP authentication plugins, see LDAP Pluggable
Authentication
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html).
If Connector/C++ was installed from a compressed tar file
or Zip archive, the application program will need to set
the OPT_PLUGIN_DIR connection option to the appropriate
directory so that the bundled plugin library can be
found. (Alternatively, copy the required plugin library
to the default directory expected by the client library.)
Example:
sql::ConnectOptionsMap connection_properties;
// To use simple LDAP authentication …
connection_properties[“userName”] = “simple_ldap_user_name”;
connection_properties[“password”] = “simple_ldap_password”;
connection_properties[OPT_ENABLE_CLEARTEXT_PLUGIN]=true;
// To use SASL LDAP authentication using SCRAM-SHA-1 …
connection_properties[“userName”] = “sasl_ldap_user_name”;
connection_properties[“password”] = “sasl_ldap_scram_password”;
// Needed if Connector/C++ was installed from tar file or Zip archive …
connection_properties[OPT_PLUGIN_DIR] = “${INSTALL_DIR}/lib{64}/plugin”;
auto *driver = get_driver_instance();
auto *con = driver->connect(connection_properties);
// Execute statements …
con->close();
* For applications that use the legacy JDBC API (that is,
not X DevAPI or X DevAPI for C), LOCAL data loading
capability for the LOAD DATA statement previously could
be controlled on the client side only by enabling it for
all files accessible to the client, or by disabling it
altogether. The new OPT_LOAD_DATA_LOCAL_DIR option
enables restricting LOCAL data loading to files located
in a designated directory. For example, to set the value
at connect time:
sql::ConnectOptionsMap opt;
opt[OPT_HOSTNAME] = “localhost”;
opt[OPT_LOAD_DATA_LOCAL_DIR] = “/tmp”;
sql::Connection *conn = driver->connect(opt);
OPT_LOAD_DATA_LOCAL_DIR can also be set after connect
time:
sql::ConnectOptionsMap opt;
opt[OPT_HOSTNAME] = “localhost”;
sql::Connection *conn = driver->connect(opt);
//…. some queries / inserts / updates
std::string path= “/tmp”;
conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, path);
// LOAD LOCAL DATA DIR …
//Disable LOCAL INFILE by setting to null
conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, nullptr);
The OPT_LOAD_DATA_LOCAL_DIR option maps onto the
MYSQL_OPT_LOAD_DATA_LOCAL_DIR option for the
mysql_options() C API function. For more information, see
Security Considerations for LOAD DATA LOCAL
(https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html).
Bugs Fixed
* String decoding failed for utf-8 strings that began with
a \xEF byte-order mark. (Bug #31656092)
* With the CLIENT_MULTI_FLAG option enabled, executing
multiple statements in a batch caused the next query to
fail with a Commands out of sync error. (Bug #31399362)
* For connections made using X Plugin, connections over
Unix socket files did not work. (Bug #31329938)
* For connections made using X Plugin, the default
compression mode was DISABLED rather than PREFERRED. (Bug
#31173447) 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