Upgrade from MariaDB Connector/Node.js 2.5 to 3.4
This page is part of MariaDB's Documentation.
The parent of this page is: Upgrade MariaDB Connector/Node.js
Topics on this page:
Overview
When upgrading from MariaDB Connector/Node.js 2.5 to 3.4, application code must be updated to reflect changes in connector behavior.
Time Zone Conversions
Starting with MariaDB Connector/Node.js 3.1, instead of performing time zone conversions locally, MariaDB Connector/Node.js can set the session value of the
time_zone
system variable. This allows the remote server to handle time zone conversions. In previous releases, time zone conversions are performed locally.
Load tzdata
into MariaDB Enterprise Server
To load tzdata
into MariaDB Server, use the mariadb-tzinfo-to-sql
utility:
$ mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb -u root mysql
timezone
Parameter Changes
Starting with MariaDB Connector/Node.js 3.1, all time zone conversions are performed on the remote server. The
timezone
parameter is used to configure the behavior. The arguments have not changed, but the meaning of each argument has changed slightly:timezone
(Parameter Argument)Description
local
This is the default mode.
The session value of the
time_zone
system variable is not set, so no time zone conversion is performed.This mode is only recommended when the client and server use the same time zone.
auto
If the server's time zone is different from the client's time zone, the session value of the
time_zone
system variable is set to the client's time zone.This mode is recommended when the server and client use different time zones, but the client's time zone is known to be properly configured.
If the client's time zone is set to an IANA time zone name and the remote server is MariaDB Server, the time zone database must be loaded on the remote server. MariaDB Server only supports IANA time zone names in the
time_zone
system variable when the data from the IANA time zone database (also known astzdata
orzoneinfo
) has been loaded using themariadb-tzinfo-to-sql
utility.
IANA time zone name(such asAmerica/New_York
)The session value of the
time_zone
system variable is set to the provided IANA time zone name without checking the server's time zone.If the remote server is MariaDB Server, the time zone database must be loaded on the remote server. MariaDB Server only supports IANA time zone names in the
time_zone
system variable when the data from the IANA time zone database (also known astzdata
orzoneinfo
) has been loaded using themariadb-tzinfo-to-sql
utility.
UTC offset(such as-04:00
)The session value of the
time_zone
system variable is set to the provided UTC offset without checking the server's time zone.
TypeScript
Starting with MariaDB Connector/Node.js 3.1, with TypeScript, the
batch()
,execute()
, andquery()
methods have been internally defined to have type assertions, so that applications can assign the return values without defining type assertion at the application level.In previous releases, assigning the return values of the
batch()
,execute()
, andquery()
methods required type assertions, which means theMETHOD_CALL() AS TYPE_NAME
or<TYPE_NAME> METHOD_CALL()
syntax was required.Starting with MariaDB Connector/Node.js 3.1, the type assertions are defined internally using generic types.
Exact Decoding for BIGINT
and DECIMAL
The default behavior for MariaDB Connector/Node.js 2.5 (and for other existing drivers like mysql2) for decoding the data types Number object. JavaScript uses double-precision floating-point format numbers as specified in IEEE 754, which is returning approximate results for big values.
and is to return a JavaScriptIntegers can only be safely represented between -(2^53 - 1) and 2^53 - 1.
MariaDB Connector/Node.js, to return precise values, by default returns the objects:
DECIMAL
=> JavaScript String objectBIGINT
=> JavaScript
For compatibility reasons three options have been added to return BIGINT
/ DECIMAL
as a number object:
Options | Description | Type | Default |
---|---|---|---|
| Whether the query should return the last insert id from INSERT/UPDATE command as | boolean | false |
| Whether the query should return decimal as | boolean | false |
| Whether the query should return | boolean | false |
| Used in conjunction with | boolean | false |
Previous options supportBigNumbers
and bigNumberStrings
still exist for compatibility, but are now deprecated.
Custom Logging API
External logging can now be easily enabled using the logging API, provided with MariaDB Connector/Node.js via the three caller functions:
network(string)
: called for each network exchange.query(string)
: called for each command.error(Error)
: called for each error.
Simple example to log network exchanges, queries, and errors:
const pool = mariadb.createPool({
host: 'example.com',
user:'myUser',
password: 'myPwd',
logger: (msg) => console.log(msg)
});
Example of a more detailed use:
const mariadb = require('mariadb');
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
// - Write all logs with level `error` and below to `error.log`
// - Write all logs with level `info` and below to `combined.log`
new winston.transports.Console({ filename: 'error.log', level: 'error' }),
new winston.transports.Console({ filename: 'combined.log' })
]
});
const pool = mariadb.createPool({
host: 'example.com',
user: 'myUser',
password: 'myPwd',
logger: {
query: (msg) => logger.info(msg),
error: (err) => logger.error(err),
}
});
Options
Changes to Default Values
Option | Old Default Value | New Default Value |
---|---|---|
| 5 | Infinity |
| true | false |
|
|
|
New Options
Option | Description | Data Type | Default Value |
---|---|---|---|
| permits to set a function with parameter to set stream | function | null |
| Whether the query should return the last insert id from INSERT/UPDATE command as | boolean | false |
| Whether the query should return decimal as | boolean | false |
| Whether the query should return | boolean | false |
| Used in conjunction with | boolean | false |
Deprecated Options
Deprecated Option | Upgrade Guidance |
---|---|
|
|
|
|