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.
Tag Archives: connectors
MySQL Connector/ODBC 8.0.23 has been released
Dear MySQL users,
MySQL Connector/ODBC 8.0.23 is a new version in the MySQL Connector/ODBC
8.0 series, the ODBC driver for the MySQL Server.
The available downloads include both a Unicode driver and an ANSI driver
based on the same modern codebase. Please select the driver type you
need based on the type of your application – Unicode or ANSI.
Server-side prepared statements are enabled by default. It is suitable
for use with the latest MySQL server version 8.0.
This release of the MySQL ODBC driver is conforming to the ODBC 3.8
specification. It contains implementations of key 3.8 features,
including self-identification as a ODBC 3.8 driver, streaming of out (for
binary types only), and support of the SQL_ATTR_RESET_CONNECTION
connection attribute (for the Unicode driver only).
The release is now available in source and binary form for a number of
platforms from our download pages at
https://dev.mysql.com/downloads/connector/odbc/
For information on installing, please see the documentation at
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html
Enjoy and thanks for your support!
Changes in MySQL Connector/ODBC 8.0.23 (2021-01-18, General Availability)
Bugs Fixed
* Using the commercial glib package
(authentication_ldap_sasl) with auth using GSSAPI
(authentication_ldap_sasl_auth_method_name=’GSSAPI’) did
not function. Added the missing sasl2 modules package.
(Bug #32175842)
* On Debian based systems, the post-installation script
uses dpkg-architecture ODBC drivers path, so the
associated dpkg-dev package was added as a runtime
dependency. (Bug #32157740)
* Microsoft Access halted when opening a linked table with
only a JSON column. The JSON column type is now
supported, and JSON data is only editable if another
column is used as a primary key. Because JSON is a long
data type with the maximum length of 4GB, it can’t be
used as a primary key by Microsoft Access and therefore
tables having only JSON columns are only available in
read-only mode. (Bug #32114901)
* Removed the mysql-client-plugins dependency. It remains
required for connections using commercial MySQL server
accounts with LDAP authentication, so must be manually
installed for that situation. The mysql-client-plugins
package has conflicts with MySQL server versions before
8.0.21, so earlier versions (such as MySQL 5.7) require
an 8.0 server upgrade to use it. (Bug #31875490)
* On macOS, Connector/ODBC would not report an error if
SQL_ATTR_PARAMSET_SIZE was set but not supported; instead
the setting was ignored. (Bug #29862441, Bug #95608)
On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison
MySQL Connector/Python 8.0.23 has been released
Dear MySQL users,
MySQL Connector/Python 8.0.23 is the latest GA release version of the MySQL Connector Python 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.
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/Python, and its usage, see
http://dev.mysql.com/doc/dev/connector-python
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
http://dev.mysql.com/doc/refman/8.0/en/document-store.html
To download MySQL Connector/Python 8.0.23, see the “General Availability (GA) Releases” tab at
http://dev.mysql.com/downloads/connector/python/
Enjoy!
Changes in MySQL Connector/Python 8.0.23 (2021-01-18, General Availability)
Functionality Added or Changed
- Deprecated Python 2.7 support; a warning was added to describe Python 2.7 support being removed in Connector/Python 8.0.24.
Previously, Connector/Python added client support for the MySQL Enterprise Edition SASL LDAP authentication plugin with SCRAM-SHA-1 as an authentication method. Connector/Python now also supports SCRAM-SHA-256 as an alternative authentication method for classic MySQL protocol connections. SASL-based LDAP authentication does not apply to clients running macOS. - Added SASL authentication protocol support using the GSSAPI (Kerberos) authentication method for the pure python implementation (this is not available for the c-ext version of Connector/Python).
This functionality requires the GSSAPI pypi module, which provides both low-level and high-level wrappers around the GSSAPI C libraries. The GSSAPI pypi module requires MIT kerberos installed opn the system to function and request tickets to authenticate Connector/Python with the MySQL server when the user is IDENTIFIED WITH authentication_ldap_sasl and the authentication_ldap_sasl plugin is configured to use the GSSAPI mechanism.
This also adds a new krb_service_principal option, which must be a string in the form “primary/instance@realm” such as “ldap/ldapauth@MYSQL.COM” where “@realm” is optional. The “@realm” defaults to the default realm, as configured in the krb5.conf file.
Bugs Fixed
- Fixed the AttributeError raised when getting the connection ID from a closed CMySQLConnection. (Bug #31882419, Bug #100825)
- Fixed support for named tuple (an invalid exception was generated) and dictionary cursors (incorrect type of result was returned). (Bug #29195610)
- Fixed cursor.fetchone() and cursor.fetchmany() to comply with PEP 249, which specifies that an exception must be raised if the previous call to cursor.execute*() does not produce any result set or no call was issued yet. (Bug #26834307, Bug #87815)
- Fixed the microsecond conversion from MySQL datetime to Python datetime when using fractional values with the C extension enabled. For example, 2016-10-20 15:40:23.8 from MySQL resulted in datetime.datetime(2016, 10, 20, 15, 40, 23, 8) instead of datetime.datetime(2016, 10, 20, 15, 40, 23, 800000). Thanks to Vilnis Termanis for the patch. (Bug #24938411, Bug #83479)
MySQL Connector/J 8.0.23 has been released
Dear MySQL users,
MySQL Connector/J 8.0.23 is the latest General Availability release of
the MySQL Connector/J 8.0 series. It is suitable for use with MySQL
Server versions 8.0, 5.7, and 5.6. It supports the Java Database
Connectivity (JDBC) 4.2 API, and implements the X DevAPI.
This release includes the following new features and changes, also
described in more detail on
https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-23.html
As always, we recommend that you check the “CHANGES” file in the
download archive to be aware of changes in behavior that might affect
your application.
To download MySQL Connector/J 8.0.23 GA, see the “General Availability
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/j/
Enjoy!
Changes in MySQL Connector/J 8.0.23 (2021-01-18, General Availability)
Deprecation and Removal Notes
* As an implementation of the MySQL Terminology Updates (https://mysqlhighavailability.com/mysql-terminology-updates/),
connection properties and public method names have
been adjusted in the following manners:
- Changing “master” to “source”: For example, the
connection property queriesBeforeRetryMaster becomes
queriesBeforeRetrySource, and the method
isMasterConnection() becomes isSourceConnection() - Changing “slave” to “replica”: For example, the
connection property allowSlavesDownConnections
becomes allowReplicaDownConnections, and the method
getSlaveHosts() becomes getReplicaHosts() - Changing “blacklist” to “blocklist”: For example,
the connection property loadBalanceBlacklistTimeout
becomes loadBalanceBlocklistTimeout.
Old names have been deprecated—though they are still
usable for now, they are to be removed eventually in
future releases; users are therefore encouraged to switch
to the new names.
See the MySQL Connector/J 8.0 Developer Guide
(https://dev.mysql.com/doc/connector-j/8.0/en/), the
Connector/J API documentation (generated by Javadoc), and
the MySQL Connector/J X DevAPI Reference for information
on any new property and method names.
Functionality Added or Changed
* While a java.sql.TIME instance, according to the JDBC
specification, is not supposed to contain fractional
seconds by design, because java.sql.TIME is a wrapper
around java.util.Date, it is possible to store fractional
seconds in a java.sql.TIME instance. However, when
Connector/J inserted a java.sql.TIME into the server as a
MySQL TIME value, the fractional seconds were always
truncated. To allow the fractional seconds to be sent to
the server, a new connection property,
sendFractionalSecondsForTime, has been introduced: when
the property is true (which is the default value), the
fractional seconds for java.sql.TIME are sent to the
server; otherwise, the fractional seconds are truncated.
Also, the connection property sendFractionalSeconds has
been changed into a global control for the sending of
fractional seconds for ALL date-time types. As a result,
if sendFractionalSeconds=false, fractional seconds are
not sent irrespective of the value of
sendFractionalSecondsForTime.
(Bug #20959249, Bug #76775)
* Connector/J now supports the following authentication
methods for LDAP Pluggable Authentication
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html)
with the MySQL Enterprise Server:
- The GSSAPI/Kerberos Authentication Method:
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-gssapi)
A new connection property,
ldapServerHostname, has been introduced for
specifying the LDAP service host principal as
configured in the Kerberos key distribution centre
(KDC). See the description for ldapServerHostname in
the MySQL Connector/J 8.0 Developer Guide
(https://dev.mysql.com/doc/connector-j/8.0/en/) for details. - The SCRAM-SHA-256 method.
Bugs Fixed
* Storing a java.time.LocalDateTime object onto the server
as a TIMESTAMP value using a batched PreparedStatement
failed with the complaint that java.time.LocalDateTime
could not be cast to java.sql.Timestamp. With this fix,
the casting works again.
(Bug #32099505, Bug #101413)
* Using the setObject() method to set a
ByteArrayInputStream instance for a PreparedStatement
resulted in a SQLException. (Bug #32046007, Bug #101242)
* The returned value for a TIMESTAMP was incorrect when a
temporal interval expression
(https://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-intervals)
was used in the SQL statement for
the query. (Bug #31074051, Bug #99013)
* After upgrading from Connector/J 5.1 to 8.0, the results
of saving and then retrieving DATETIME and TIMESTAMP
values became different sometimes. It was because while
Connector/J 5.1 does not preserve a time instant by
default, Connector/J 8.0.22 and earlier tried to so by
converting a timestamp to the server’s session time zone
before sending its value to the server. In this release,
new mechanisms for controlling timezone conversion has
been introduced—see Preserving Time Instants
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-time-instants.html)
for details. Under this new
mechanism, the default behavior of Connector/J 5.1 in
this respect is preserved by setting the connection
property preserveInstants=false. (Bug #30962953, Bug
#98695, Bug #30573281, Bug #95644)
* Conversion of a MySQL DATETIME or TIMESTAMP value to a
Java OffsetDateTime using the getObject(i,
OffsetDateTime.class) method failed with a “Conversion
not supported for type …” error. It was because the
OffsetDateTime.parse() method on DATETIME and TIMESTAMP
values yielded an unexpected string format. With this
patch, conversions between OffsetDateTime and the DATE,
TIME, DATETIME, TIMESTAMP, and YEAR data types are now
possible, and an instant point on the timeline is
preserved as such during a conversion, when
possible—see Preserving Time Instants
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-time-instants.html)
for details. (Bug #29402209, Bug #94457)
* When the server’s session time zone setting was not
understandable by Connector/J (for example, it was set to
CEST), a connection could not be established with the
server unless Connector/J specified the correct IANA time
zone name in the serverTimezone connection property. This
happened even if there was actually no need to use any
date-time functionality in Connector/J. The issue was
fixed by the new connection properties for Connector/J
that control date-time handling—see Preserving Time Instants
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-time-instants.html)
for details. The following now
happens with respect to the above-mentioned situation:
- If the new connection property connectionTimeZone is
set to LOCAL or a specified time zone, the time_zone
variable on the server is no longer checked - If connectionTimeZone=SERVER, the check for the
time_zone variable is delayed until date-time driver
functionality is first invoked, so that an
unrecognizable server time zone does not prevent
connection to be established. However, when
date-time functionality is invoked and the value of
time_zone cannot be recognized by Connector/J, an
exception is thrown.
(Bug #21789378)
Enjoy and thanks for the support!
On behalf of the MySQL Release Team,
Balasubramanian Kandasamy
X DevAPI Traffic Compression With Connector/J
X Protocol traffic compression is available on MySQL Server since version 8.0.19. A connector that also supports compression on its end can leverage this feature and reduce the byte streams that are exchanged with the Server.
By default, connections to a MySQL server are uncompressed, thus permitting exchanging data with a client or connector that doesn’t support compression. However, given a client or connector that also supports compression, it is recommended that client and server negotiate the connection compression by default. If this negotiation concludes successfully, both ends can then compress the data they send.
Compression at this level allows reducing the amount of bytes exchanged over the network, but at the cost of additional CPU resources required to run data inflate and deflate operations. The benefits of compression, therefore, occur primarily on low network bandwidth. One can assess the gain or loss due to the compression only after measuring properly the average traffic sizes for a period of time for both the compressed and uncompressed connections.
Connector/J version 8.0.20 came out with basic support for traffic compression over X Protocol connections. For this purpose, a new connection option: xdevapi.compression
, was introduced. As of Connector/J 8.0.22, this feature was leveled up with the introduction of two additional connection options: xdevapi.compression-extensions
and xdevapi.compression-algorithms
.
Let it be clear that the new compression features in the X DevAPI has no impact whatsoever on the existing compression behavior or settings of Connector/J JDBC implementation.
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/C++ 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) 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
MySQL Connector/J 8.0.22 has been released
Dear MySQL users,
MySQL Connector/J 8.0.22 is the latest General
Availability release of
the MySQL Connector/J 8.0 series. It is suitable for use
with MySQL
Server versions 8.0, 5.7, and 5.6. It supports the Java
Database
Connectivity (JDBC) 4.2 API, and implements the X DevAPI.
This release includes the following new features and
changes, also
described in more detail on
https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8.0.22.html
As always, we recommend that you check the “CHANGES” file
in the
download archive to be aware of changes in behavior that
might affect
your application.
To download MySQL Connector/J 8.0.22 GA, see the “General
Availability
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/j/
Enjoy!
Changes in MySQL Connector/J 8.0.22 (2020-10-19, General
Availability)
Functionality Added or Changed
* Security Enhancement: Previously, the LOCAL data
loading
capability for the LOAD DATA statement can be
controlled on the
client side only by enabling it for all files
accessible to the
client or by disabling it altogether, using the
connection
property allowLoadLocalInfile. A new connection
property,
allowLoadLocalInfileInPath, has been introduced to
allow LOCAL
data loading only from a specific filepath; see
the description
for the option in Configuration Properties
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html)
for details.
* X DevAPI: A new connection property,
xdevapi.compression-algorithms, has been
introduced for
specifying the compression algorithms to use and
the priority in
which they will be negotiated for. Also, the
older connection
property xdevapi.compression-algorithm (without an
“s” at the end
of its name) has been renamed to
xdevapi.compression-extensions;
its function remains the same as before (providing
implementations for compression algorithms), but
the syntax for
its value has been changed: each element in a
triplet for an
algorithm is now separated by a colon (:). See
Connection
Compression Using X DevAPI
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connection-compression-xdevapi.html)
for details.
* X DevAPI: The asynchronous variant of the X
Protocol is no
longer supported by Connector/J; the connection
properties
useAsyncProtocol and asyncResponseTimeout are now
deprecated and
have no effect when used.
* X DevAPI: Connector/J now supports Java keystore
for SSL client
certificates for X DevAPI sessions. The following
new connection
properties have been introduced for the purpose:
+ xdevapi.ssl-keystore
+ xdevapi.ssl-keystore-type
+ xdevapi.ssl-keystore-password
See Connecting Securely Using SSL
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html)
for details.
* When trying to open multiple connections to a
MySQL server using
Connector/J with a named pipe on Windows systems,
the attempt
sometimes failed with the “All pipe instances are
busy” error.
With this fix, if a timeout has been set using the
connection
property connectTimeout or the method
DriverManager.setLoginTimeout(), Connector/J will
retry opening
the named pipe repeatedly until the timeout is
reached or the
named pipe is opened successfully. As a
side-effect of this new
behavior, there will be a delay, equal to the
length of the
timeout, for throwing an error for a failed
named-pipe connection
even when it is caused by an error other than “All
pipe instances
are busy.” (Bug #31711961, Bug #98667)
* When the connection option sslMode is set to
VERIFY_IDENTITY,
Connector/J now validates the host name in the
connection string
against the host names or IP addresses provided
under the Subject
Alternative Name (SAN) extension in the server’s
X.509
certificate. Also, verification against the Common
Name (CN) is
now performed when a SAN is not provided in the
certificate or if
it does not contain any DNS name or IP address
entries. Host
names listed in the certificate, under either the
SAN or the CN,
can contain a wildcard character as specified in
the RFC 6125
standard. Thanks to Daniël van Eeden for
contributing to the
patch. (Bug #31443178, Bug #99767, Bug
#28834903, Bug #92903)
* When using Connector/J, the
AbandonedConnectionCleanupThread
thread can now be disabled completely by setting
the new system
property
com.mysql.disableAbandonedConnectionCleanup to true when
configuring the JVM. The feature is for
well-behaving
applications that always close all connections
they create.
Thanks to Andrey Turbanov for contributing to the
new feature.
(Bug #30304764, Bug #96870)
* Connector/J now supports client authentication
with MySQL
Enterprise Server using simple or SASL
(SCRAM-SHA-1) LDAP
authentication
(https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-usage)
on Windows and Linux platforms.
* Connector/J can now be prevented from falling back
to the
system-wide truststore and keystore for server and
client
identity authentication, respectively. For JDBC
connections, two
new connection properties,
fallbackToSystemKeyStore and
fallbackToSystemTrustStore, have been introduced
for the control.
While those properties are true by default
(fallbacks enabled),
setting them to false disable fallbacks. See
Connecting Securely
Using SSL
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html)
for details. X DevAPI: Similar
control for fallback for X DevAPI connections are
provided by
the new connection properties,
xdevapi.fallback-to-system-keystore, and
xdevapi.fallback-to-system-truststore.
* The integration classes for JBoss have been
removed from
Connector/J.
Bugs Fixed
* In a load balancing setup, if the connection
parameter
loadBalanceBlacklistTimeout was set, a server that
was once
unavailable remained in the blocklist even after a
connection to
it has been reestablished, and this affected the
system’s
performance. With this fix, the server is removed
from the
blocklist as soon as it becomes available again.
(Bug #31699357,
Bug #96309)
* Using a PreparedStatement to store a Date into a
database
sometimes resulted in a NullPointerException. It was
because some assignments were missing in
ServerPreparedQueryBindValue.clone(), and this patch
corrects the issue. (Bug #31418928, Bug #99713)
* When a client attempted to establish a JDBC connection using the server’s X Protocol port, Connector/J threw an ArrayIndexOutOfBoundsException. With this fix, Connector/J throws the proper exception for using the wrong protocol with the port and returns a proper error message. (Bug #31083755, Bug #99076)
* LocalDate, LocalDateTime, and LocalTime
values set through
Connector/J were altered when there was a timezone
difference
between the server and the client. This fix
corrects the issue
by handling the LocalDate, LocalTime, and
LocalDateTime with no
time zone conversion and no intermediate
conversions to other
date-time classes. Thanks to Iwao Abe for his
contribution to the
fix. (Bug #29015453, Bug #93444)
Enjoy and thanks for the support!
On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed
MySQL Connector/J 8.0.21 has been released
Dear MySQL users,
MySQL Connector/J 8.0.21 is the latest General Availability release of
the MySQL Connector/J 8.0 series. It is suitable for use with MySQL
Server versions 8.0, 5.7, and 5.6. It supports the Java Database
Connectivity (JDBC) 4.2 API, and implements the X DevAPI.
In the documentation for MySQL 8.0.21, we have started
changing the term “master” to “source”, the term “slave” to
“replica”, the term “whitelist” to “allowlist”, and the term
“blacklist” to “blocklist”. There are currently no changes to
the product’s syntax, so these terms are still present in the
documentation where the current code requires their use. See
the blog post MySQL Terminology Updates
(https://mysqlhighavailability.com/mysql-terminology-updates/)
for more information.
This release includes the following new features and changes, also
described in more detail on
https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-21.html
As always, we recommend that you check the “CHANGES” file in the
download archive to be aware of changes in behavior that might affect
your application.
To download MySQL Connector/J 8.0.21 GA, see the “General Availability
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/j/
Enjoy!
Changes in MySQL Connector/J 8.0.21 (2020-07-13, General Availability)
* Functionality Added or Changed
* Bugs Fixed Functionality Added or Changed
Functionality Added or Changed
* X DevAPI: The JSON Schema Validation Functions (https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html)
on MySQL servers are now supported by
Connector/J; see Schema Validation for details.
* The required versions of the 3rd-party libraries needed
for running or compiling Connector/J have been changed;
new requirements for additional libraries have also been
added. See Installing Connector/J from a Binary
Distribution
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-binary-installation.html)
and Installing from Source
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-installing-source.html) for details.
Bugs Fixed
* When trying to set a parameter for a PreparedStatement
using the method
PreparedStatement.setObject(parameterIndex, “false”,
Types.BOOLEAN), the value was set to true instead of
false. (Bug #30911870, Bug #98237)
On Behalf of MySQL Release Engineering Team,
Surabhi Bhat
MySQL Connector/C++ 8.0.21 has been released
Dear MySQL users,
MySQL Connector/C++ 8.0.21 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.21, see the “General Availability (GA)
Releases” tab at
https://dev.mysql.com/downloads/connector/cpp/
Changes in MySQL Connector/C++ 8.0.21 (2020-07-13, General Availability)
Configuration Notes
* The CMake configuration files were revised to work better
when Connector/C++ is used as a subproject of application
projects. Thanks to Lou Shuai for the contribution.
This revision does not change the fact that the intended
(and supported) usage scenario is to build the connector
in a separate project, install it somewhere and then use
it in application projects from that installed location
(for example, by defining the imported library target in
CMake). (Bug #31095993, Bug #99093)
JSON Notes
* The rapidjson library included with Connector/C++ has
been upgraded to the GitHub snapshot of 16 January 2020.
Security Notes
* For platforms on which OpenSSL libraries are bundled, the
linked OpenSSL library for Connector/C++ has been updated
to version 1.1.1g. Issues fixed in the new OpenSSL
version are described at
https://www.openssl.org/news/cl111.txt and
https://www.openssl.org/news/vulnerabilities.html. (Bug
#31296689)
X DevAPI Notes
* For X DevAPI or X DevAPI for C applications, methods and
functions that create or modify collections now accept
options to enable validation of a JSON schema that
documents must adhere to before they are permitted to be
inserted or updated. Schema validation is performed by
the server, which returns an error message if a document
in a collection does not match the schema definition or
if the server does not support validation.
These new classes are implemented to support validation
options:
+ CollectionOptions: The base class that has all
options. Contains an Option enumeration with
constants REUSE and VALIDATION.
+ CollectionValidation: Handles only subkey
validation. Contains a Level enumeration with
constants STRICT and OFF, and an Option enumeration
with constants SCHEMA and LEVEL.
X DevAPI now has these signatures for createCollection()
(and modifyCollection()):
// Accepts the full document
createCollection(“name”, “JSON_Document”);
// DbDoc usage is also permitted
createCollection(“name”, DbDoc(“validation”, DbDoc(“level”,”off”,…)));
// List of pairs with Option enum constant and value
createCollection(CollectionOptions::REUSE, true,
CollectionOptions::VALIDATION, CollectionValidation(…));
// Old REUSE way is also acceptable
createCollection(“name”, true);
createCollection(“name”, CollectionValidation(…));
// createCollection also allows a list of pairs of
// CollectionValidation Option enum constant and value
createCollection(“name”, CollectionOptions::VALIDATION,
CollectionValidation::OFF,
CollectionValidation::SCHEMA,
“Object”);
X DevAPI for C examples:
These are the possible options for
mysqlx_collection_options_set():
OPT_COLLECTION_VALIDATION_LEVEL(VALIDATION_OFF)
OPT_COLLECTION_VALIDATION_SCHEMA(“Object”)
OPT_COLLECTION_REUSE(true)
Perform option operations like this:
mysqlx_collection_options_t *options = mysqlx_collection_options_new() //creates collection options object
mysqlx_free(options) //frees collection options
mysqlx_collection_options_set(options,…);
Creation and modification functions have these signatures:
mysqlx_collection_create_with_options(mysqlx_schema_t *schema, mysqlx_collection_options_t *options);
mysqlx_collection_create_with_json_options(mysqlx_schema_t *schema, const char* json_options);
mysqlx_collection_modify_with_options(mysqlx_schema_t *schema, mysqlx_collection_options_t *options);
mysqlx_collection_modify_with_json_options(mysqlx_schema_t *schema, const char* json_options);
For modifications, the REUSE option is not supported and
an error occurs if it is used.
Functionality Added or Changed
* The MySQL_Connection_Options enumeration is no longer
sensitive to the order in which the underlying options
are declared in the C API source. (Bug #30799197)
* Connector/C++ now implements blocking of failed
connection-pool endpoints to prevent them from being
reused until a timeout period has elapsed. This should
reduce average wait time for applications to obtain a
connection from the pool in the event that endpoints
become temporarily unavailable.
Bugs Fixed
* For applications that use the legacy JDBC API (that is,
not X DevAPI or X DevAPI for C) on a system that does not
have OpenSSL libraries installed, the libraries that are
bundled with Connector/C++ could not be found when
resolving run-time dependencies of the application. (Bug
#31007317)
* For a reply with multiple result sets (such as the result
from a stored procedure that executed multiple queries),
an error in reply processing logic could incorrectly
deregister the reply object after reading the first
result set while more result sets from the server were
pending, resulting in an application error. (Bug
#30989042)
On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison