Release Notes for MariaDB Connector/Node.js 3.3.0

Overview

MariaDB Connector/Node.js is the interface between Node.js applications and MariaDB Server. MariaDB Connector/Node.js enables development of Node.js applications.

MariaDB Connector/Node.js 3.3.0 was released on 2024-03-21. This release is of General Availability (GA) maturity.

Connector/Node.js 3.3 is the successor to Connector/Node.js 3.2 and is fully compatible with Connector/Node.js 3.2. Users of Connector/Node.js 3.2 should shift to Connector/Node.js 3.3.

Notable Changes

Zero-Configuration SSL

In order to have SSL connections, there were 3 solutions: (CONJS-264)

  • Have server certificates generated with trusted Node.js Certificate Authorities (CA), configuration was then like ssl: true

  • Configure connector with server certificate like: ssl: {  ca: [ fs.readFileSync('server-cert.pem') ] }

  • Disable certificate SSL verification (not secured!) like: ssl: { rejectUnauthorized: true }

Since MariaDB 11.4.1 (MDEV-31855), enabling SSL is super easy, with simple configuration like: ssl: true, even if server does not have configured SSL certificates. The connector doesn't need to know the server certificate any more if the password is not empty. This is part of Mission Impossible: Zero-Configuration SSL, client validating SSL certificates using client password.

pipeline PREPARE and EXECUTE

Previous use of connection.execute was: execute the PREPARE command first, read the PREPARE response, execute the EXECUTE command, and finally read the EXECUTE response. (CONJS-284)

The new implementation, when using using MariaDB server 10.2+ and with the pipelining option enabled (the default value) will: execute PREPARE, execute EXECUTE, then read the PREPARE response, and read the EXECUTE response. This permits avoiding much of the network latency.

Benchmarking results using a local database: (a remote database would have even better results)

 title=

This improvement is for the first execution of a specific query, since ``PREPARE`` is cached by default, the second execution would only execute the ``EXECUTE`` command.

Issues Fixed

  • Cannot connect to 11.3+ server with character-set-collations = utf8mb4=uca1400_ai_ci (CONJS-281)

  • Using connection.importFile when connection is not connected to database result in error (CONJS-277)

  • Possible buffer overwrite when sending query bigger than 16M (CONJS-278)

  • Error when using mysql_clear_test password authentication plugin (CONJS-282)

  • Wrong decoding of binary unsigned MEDIUMINT (CONJS-283)

  • DECIMAL field wrong decoding with deprecated option 'supportBigNumbers' set (CONJS-285)

Supplemental Notes

  • Improve query encoding and decoding performance (CONJS-279)