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 Promises. 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 reading

MySQL 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/J 8.0.19 has been released

Dear MySQL users,

MySQL Connector/J 8.0.19 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-19.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.19 GA, see the “General Availability
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!

Changes in MySQL Connector/J 8.0.19 (2020-01-13, General Availability)

Functionality Added or Changed


     * Connector/J now supports the use of DNS SRV records for
       connections.  Here is a brief summary for Connector/J’s support
       for DNS SRV records:

          + These new schemas in the connection URLs enable DNS
            SRV support:
               o jdbc:mysql+srv: For ordinary and basic failover
                 JDBC connections that make use of DNS SRV
                 records.
               o jdbc:mysql+srv:loadbalance: For load-balancing
                 JDBC connections that make use of DNS SRV
                 records.
               o jdbc:mysql+srv:replication: For replication
                 JDBC connections that make use of DNS SRV
                 records.
               o mysqlx+srv: For X DevAPI connections that make
                 use of DNS SRV records.

          + Besides using the new schemas in the connection
            URLs, DNS SRV record support can also be enabled or
            disabled using the two new connection properties,
            dnsSrv and xdevapi.dns-srv, for JDBC and X DevAPI
            connections respectively.
       See Support for DNS SRV Records
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-dns-srv.html)
       in the Connector/J 8.0 Developer Guide
(https://dev.mysql.com/doc/connector-j/8.0/en/) for
       details.

     * X DevAPI: The server failover support for connections
       using X DevAPI has been enhanced with the following features:

          + When the priority property is NOT set for each host
            in the connection URL, failover connections are
            attempted on the hosts in a random order, until a
            connection is successfully established (Connector/J
            used to attempt connections to the hosts in the
            sequence they appear in the connection URL).

          + Once all hosts have been tried and no connections
            can be made, Connector/J throws a
            com.mysql.cj.exceptions.CJCommunicationsException
            and returns the message Unable to connect to any of
            the target hosts.

          + When using connection pooling, Connector/J keeps
            track of any host it failed to connect to and, for a
            short waiting period after the failure, avoids
            connecting to it during the creation or retrieval of
            a Session. However, if all other hosts have already
            been tried, those excluded hosts will be retried
            without waiting. Once all hosts have been tried and
            no connections can be established, Connector/J
            throws a
            com.mysql.cj.exceptions.CJCommunicationsException
            and returns the message Unable to connect to any of
            the target hosts.

     * X DevAPI: The allowed TLS versions and cipher suites for
       X DevAPI connections can now be restricted by two new
       connection properties:

          + xdevapi.tls-versions restricts the allowable TLS
            protocol versions to be used for X DevAPI
            connections.

          + xdevapi.tls-ciphersuites restricts the allowable
            cipher suites to be used for X DevAPI connections.
       See the descriptions for them in Configuration Properties
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html)
       and also Connecting Securely Using SSL
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html)
       for details.

     * MySQL Server 8.0.17 deprecated the display width for the
       TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT data types when the
       ZEROFILL modifier is not used, and MySQL Server 8.0.19 has
       removed the display width for those data types from results of
       SHOW CREATE TABLE, SHOW CREATE FUNCTION, and queries on
       INFORMATION_SCHEMA.COLUMNS, INFORMATION_SCHEMA.ROUTINES, and
       INFORMATION_SCHEMA.PARAMETERS (except for the display width for
       signed TINYINT(1)). This patch adjusts Connector/J to those
       recent changes of MySQL Server and, as a result,
       DatabaseMetaData, ParameterMetaData, and ResultSetMetaData now
       report identical results for all the above-mentioned integer
       types and also for the FLOAT and DOUBLE data types.
       (Bug #30477722)

     * The cipher suites usable by Connector/J are now
       pre-restricted by a properties file that can be found at
       src/main/resources/com/mysql/cj/TlsSettings.properties inside the
       src folder on the source tree or in the platform-independent
       distribution archive (in .tar.gz or .zip format) for Connector/J.
       See Connecting Securely Using SSL
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html)
       for details.

     * The allowable versions of TLS protocol used for
       connecting to the server, when no restrictions have been set
       using the connection properties enabledTLSProtocols, have been
       changed to:

          + TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 for MySQL
            Community Servers 8.0, 5.7.28 and later, and 5.6.46
            and later, and for all commercial versions of MySQL
            Servers.

          + TLSv1 and TLSv1.1 for all other versions of MySQL
            Servers.

Bugs Fixed


     * The RPM package for Connection/J provided by the MySQL
       Yum repository did not have its epoch set; as a result, the
       package could not be installed on an Enterprise Linux or Fedora
       system even if the MySQL Yum repository has been enabled, because
       the Connector/J package in the native repository had the epoch
       set to 1. This fix sets the epoch also to 1 for the RPM package
       provided by the MySQL Yum repository, in order to prevent the
       installation problem. (Bug #30566384, Bug #97700)

     * For some prepared statements, calling getMetaData() on
       them resulted in an Incorrect DATE error, even when no DATE
       values were involved. This was due to some recent changes on the
       MySQL 8.0 Server, to which this patch adjusts Connector/J. (Bug
       #30151808, Bug #96442) References: See also: Bug #29025656,
       Bug #28940878.

     * When retrieving TIME values using
       ResultSet.getTimestamp(), the fractional seconds are truncated
       when useCursorFetch=true. This patch corrects the problem by
       fixing the TIME value decoding in the MysqlBinaryValueDecoder. It
       also corrects some inconsistencies in formatting the fractional
       seconds when returning the TIME values as strings.
       (Bug #30119545, Bug #96383)

     * Streaming of multiple result sets failed with an error.
       It was due to an error in switching the streamer source from one
       result set to another, and this fix corrects the issue.
       (Bug #29999318, Bug #96059)

Enjoy and thanks for the support!

On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed

MySQL Connector/Python 8.0.19 has been released

Dear MySQL users,

MySQL Connector/Python 8.0.19 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
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/Python 8.0.19, see the “General Availability
(GA) Releases” tab at

http://dev.mysql.com/downloads/connector/python/

Enjoy!

==============================================================================

Changes in MySQL Connector/Python 8.0.19 (2020-01-13, General Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added DNS SRV support.
       To automatically resolve any SRV record available in a
       target DNS server or service discovery endpoint, use the
       mysqlx+srv scheme+extension in a X DevAPI connection
       string, or mysqlx+srv for the classic protocol, or by
       enabling the dns-srv=True (or dns_srv=True) connection
       option when using keyword arguments or dictionaries.

     * 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. The new
       options are tls-versions to define the allowed TLS
       protocol versions, and tls-ciphersuites for the allowed
       cipher suitess. 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. Example usage:
mysqlx://myserver/db?tls-versions=[TLSv1.2,TLSv1.3]
       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:
mysqlx://myserver/db?tls-ciphersuites=[TLS_DHE_PSK_WITH_A
       ES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]

     * The internal X Protocol namespace changed from xplugin to
       mysqlx.
       MySQL Server removed xplugin namespace support in
       v8.0.19; for Connector/Python this means:

          + With Connector/Python v8.0.19 and higher, some X
            DevAPI Protocol operations do not function with
            MySQL Server v8.0.18 and lower, operations such as
            Schema.create_collection(), Schema.get_collections(),
            Schema.get_tables(), and Collection.create_index().

          + Connector/Python 8.0.19 can connect to MySQL Server
            8.0.18 and lower, as both the ‘xplugin’ (with deprecation
            warnings) and ‘mysqlx’ namespaces can be used.

Bugs Fixed


     * Fixed the reserved SSL authentication filed; it changed
       from 23 to 22. Thanks to Qianqian Bu for the patch. (Bug
       #30270760, Bug #96770)
       References: This issue is a regression of: Bug #29855733.

     * Fixed LOAD DATA INFILE LOCAL handling; the file handle
       was not closed. Thanks to Micah Gale for the patch. (Bug
       #29417117, Bug #94496)


On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Connector/ODBC 8.0.19 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.19 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 the support!

==============================================================================

Changes in MySQL Connector/ODBC 8.0.19 (2020-01-13, General Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added DNS SRV support.
       To automatically resolve any SRV record available in a
       target DNS server or service discovery endpoint, specify
       ENABLE_DNS_SRV=1 in the DSN; the host is passed for SRV
       lookup without a port and with a full lookup name. For
       example: DRIVER={MySQL ODBC 8.0
Driver};SERVER=_mysql._tcp.foo.abc.com;ENABLE_DNS_SRV=1;U
       SER=user;PWD=passwd;

     * Confirmed support for compiling with VS2019, and for
       supporting the Visual C++ 2019 redistributable.

     * When creating a new connection using the classic MySQL
       protocol, multiple hosts can be tried until a successful
       connection is established. A list of hosts can be given
       in a connection string, along with passing MULTI_HOST=1
       to to enable this functionality. The connection string
       looks similar to
SERVER=address1[:port1],address2[:port2]….;MULTI_HOST=1
       ;.
       Other notes: the default port is used if port is not
       specified, the connector randomly picks hosts, and if a
       host fails then a new host is chosen. An error is
       returned if SERVER contains multiple hosts when
       MULTI_HOST is not enabled.

Bugs Fixed


     * With prepared SELECT statements the fixed-length numeric
       types such as INT were set to 0 instead of their stored
       value. (Bug #30428851, Bug #97191)

     * Connector/ODBC failed to compile when dynamically linking
       to the MySQL client library
       (MYSQLCLIENT_STATIC_LINKING=0); due to a mismatch between
       an internal copy of the library headers and the version
       of code implementing the library internals. (Bug
       #30292290, Bug #96835)

     * Improved handling for stored procedures and the INOUT
       parameter.
       For example, if a stored procedure had one or more
       parameters then an incomplete result set could be
       returned. (Bug #29467224, Bug #94623)

On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Connector/ODBC 5.3.14 has been released

Dear MySQL users,

MySQL Connector/ODBC 5.3.14, a new version of the ODBC driver for the
MySQL database management system, has been released.

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 any MySQL version from 5.6.

This is the sixth release of the MySQL ODBC driver 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 output parameters (supported 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

http://dev.mysql.com/downloads/connector/odbc/5.3.html

For information on installing, please see the documentation at

http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Changes in MySQL Connector/ODBC 5.3.14 (2019-10-30, General Availability)

Bugs Fixed

* On EL7, and only when using the generic Linux packages, SQLSetPos usage caused an unexpected shutdown. (Bug #29630465)

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

MySQL Connector/C++ 1.1.13 has been released

Dear MySQL Users,

MySQL Connector/C++ 1.1.13 is a new release version of the MySQL
Connector/C++ 1.1 series.

Connector/C++ 1.1 can be used to access MySQL using an API
based on JDBC4.

For information on using Connector/C++ 1.1, see

https://dev.mysql.com/doc/connector-cpp/1.1/en/

To download MySQL Connector/C++ 1.1.13, see the “General
Availability (GA) Releases” tab at

http://dev.mysql.com/downloads/connector/cpp/1.1.html

MySQL Connector C++ (Commercial) will be available for download on the
My Oracle Support (MOS) website. This release will be available on
eDelivery (OSDC) in next month’s upload cycle.

Connector/C++ 1.1 offers an easy to use API derived from JDBC 4.0.

Enjoy!

Changes in MySQL Connector/C++ 1.1.13 (2019-10-25, General
Availability)

Character Set Support

     * Connector/C++ now supports the utf8mb4_0900_bin collation
       added for the utf8mb4 Unicode character set in MySQL
       8.0.17. For more information about this collation, see
       Unicode Character Sets
(https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html).

Bugs Fixed

     * Connector/C++ set the transaction isolation level to
       REPEATABLE READ at connect time, regardless of the
       current server setting. (Bug #22038313, Bug #78852, Bug
       #30294415)

On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/NET 8.0.18 has been released

Dear MySQL users,

MySQL Connector/NET 8.0.18 is the first version to support
.Net Core 3.0 and the sixth general availability release
of MySQL Connector/NET to add support for the X DevAPI, which
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/index.html. For more
information about how the X DevAPI is implemented in Connector/NET, see
http://dev.mysql.com/doc/dev/connector-net.
NuGet packages provide functionality at a project level. To get the
full set of features available in Connector/NET such as availability
in the GAC, integration with Visual Studio’s Entity Framework Designer
and integration with MySQL for Visual Studio, installation through
the MySQL Installer or the stand-alone MSI is required.

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.

To download MySQL Connector/NET 8.0.18, see
http://dev.mysql.com/downloads/connector/net/

Installation instructions can be found at
https://dev.mysql.com/doc/connector-net/en/connector-net-installation.html

Changes in MySQL Connector/NET 8.0.18 (2019-10-14, General Availability)

Functionality Added or Changed

     * Connector/NET now supports IPV6 connections made using
       the classic MySQL protocol when the operating system on
       the server host also supports IPV6. (Bug #29682333)

     * Support for .NET Core 3.0 was added.

     * In tandem with Microsoft, Connector/NET ends support for
       .NET Core 1.0 and 1.1 (and also for Entity Framework Core
       1.1, which depends on .NET Core 1.1).

     * Previously, if the server restricted a classic
       Connector/NET session to sandbox mode and the password on
       the account expired, the session continued to permit the
       use of SET statements. Now, SET statements in sandbox
       mode with an expired password are prohibited and will
       return an error message if used. The one exception is SET
       PASSWORD, which is still permitted (see Server Handling
       of Expired Passwords
(https://dev.mysql.com/doc/refman/8.0/en/expired-password-handling.html)).

Bugs Fixed

     * The Renci.SshNet.dll deployment was problematic for
       Connector/NET 8.0.17 MSI installations. Some
       applications, such as Microsoft Excel, were unable to
       read MySQL data as a result. This fix removes unnecessary
       dependencies on the DLL and also ensures that the MSI
       installation deploys the correct Renci.SshNet.dll to the
       GAC. (Bug #30215984, Bug #96614)

     * Connector/NET returned an inaccurate value for the YEAR
       type when a prepared command was used. (Bug #28383721,
       Bug #91751)

     * Entity Framework Core: A syntax error was generated
       during an operation attempting to rename a table that was
       previously migrated from code. Now, the primary key
       constraint for an existing table can be dropped without
       errors when the follow-on migration operation is
       performed. (Bug #28107555, Bug #90958)

On Behalf of Oracle/MySQL Engineering Team
Sreedhar S

MySQL Connector/C++ 8.0.18 has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.18 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.18, see the “General Availability (GA)
Releases” tab at

https://dev.mysql.com/downloads/connector/cpp/


Changes in MySQL Connector/C++ 8.0.18 (2019-10-14, General Availability)

Compilation Notes

     * It is now possible to compile Connector/C++ using OpenSSL
       1.1.

     * Connector/C++ no longer supports using wolfSSL as an
       alternative to OpenSSL. All Connector/C++ builds now use
       OpenSSL.

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

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