2022.08.15

MariaDB

MariaDB Connector/Node.js 3.0.1 GA版(リリース日:2022年7月26日)

主な変更点

● MariaDB Connector/Node.js 3.0は、Node.js 18をサポートします。

● Poolクラスは、エラーメッセージにプールに関するより詳細な情報を含めます。

  • このリリース以降、エラーメッセージには、プールに関する次の詳細が含まれます。
    (pool connections: active=1 idle=0 limit=1)

● Poolクラスは、プールの初期化中に発生するエラーと接続の作成中に発生するエラーを区別します。

  • このリリース以降、プールの初期化中にエラーが発生すると、エラーメッセージは次の文字列で始まります。
    Error during pool initialization:
  • また、接続の作成中にエラーが発生すると、エラーメッセージは次の文字列で始まります。
    Pool fails to create connection:

● Poolクラスは、エラーの処理に使用できるエラーイベントを実装します。

● traceパラメータの実装が改善され、プールを使用している場合やメソッドが非同期で呼び出されている場合でも、呼び出し元のメソッドがトレースに含まれるようになりました。

  • traceパラメータがtrueに設定され、アプリケーションがドライバーメソッドを呼び出すと、初期コールスタックがError.captureStackTraceを使用して保存されます。エラーが発生すると、保存されたコールスタックがスタックトレースに表示されます。
  • 例えば、次のアプリケーション コードを考えてみましょう。
    const pool = mariadb.createPool({
    host: 'mydb.com',
    user: 'myUser',
    connectionLimit: 5,
    trace: true
    });

    await pool.query('wrong query');

  • このリリース以降、スタックトレースは次のようになります。
    sql: wrong query - parameters:[]
    at Object.module.exports.createError (errors.js:57:10)
    at ...
    From event:
    at Function._PARAM (C:\temp\mariadb-connector-nodejs2\lib\connection-promise.js:104:30)
    at PoolPromise.query (C:\temp\mariadb-connector-nodejs2\lib\pool-promise.js:102:40)
    at Context. (C:\temp\mariadb-connector-nodejs2\test\integration\test-pool.js:60:18)
    at callFn (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runnable.js:366:21)
    at Test.Runnable.run (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runnable.js:354:5)
    at Runner.runTest (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:678:10)
    at C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:801:12
    at next (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:593:14)
    at C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:603:7
    at next (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:486:14)
    at Immediate. (C:\temp\mariadb-connector-nodejs2\node_modules\mocha\lib\runner.js:571:5)
    at processImmediate (internal/timers.js:464:21) {
    text: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'wrong query' at line 1",
    sql: 'wrong query - parameters:[]',
    fatal: false,
    errno: 1064,
    sqlState: '42000',
    code: 'ER_PARSE_ERROR'
    }
    */
  • 初期コールスタックを保存すると余分なオーバーヘッドが発生し、クエリの速度が低下する可能性があるため、MariaDBでは、運用環境ではtraceパラメータをfalseに設定することをお勧めします。

● Connector/Node.js 2.5以前との互換性のために、checkNumberRange接続パラメータが追加されました。

  • このリリース以降、checkNumberRangeをdecimalAsNumber、insertIdAsNumber、またはbigIntAsNumberと組み合わせて使用すると、精度を失うことなく値を数値に変換できない場合、次のエラーメッセージでエラーが発生します。
    value BAD_VALUE can't safely be converted to number

● 複数行の結果セットのパフォーマンスが向上しました。

修正されたバグ

● サーバーとのハンドシェイク中にエラーが発生すると、誤解を招くメッセージを含むエラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    TypeError: Cannot read properties of undefined (reading 'charset')

● 接続文字セットがパラメータ化されたクエリを使用してSET NAMESを実行することによって変更されると、エラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    Uncaught TypeError: opts.emit is not a function

● 負のBIGINT値を解析すると、エラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    TypeError: Cannot mix BigInt and other types, use explicit conversions

● connection.release()の代わりにconnection.close()を呼び出すことによって接続がプールに返されると、接続はプールに返される代わりに強制終了されます。

  • MariaDBは、connection.release()を呼び出して接続をプールに戻すことを推奨しています。
  • connection.close()は互換性の理由から存在します。

● TypeScriptでbatch()を呼び出すと、間違った型が返されることがあります。

● column.geometry()が呼び出され、その列の値を有効なジオメトリ値として解析できない場合、誤解を招くメッセージを含むエラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    TypeError: column.readGeometry is not a function.

● サーバーでER_CON_COUNT_ERRORエラーが発生した場合、エラーは適切に処理されません。

● changeUser()が呼び出されて接続属性が設定されると、誤解を招くメッセージを含むエラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    Cannot read property 'charset' of undefined

● connection.destroy()が呼び出され、他の接続を作成できない場合 (max_connectionsに達した場合など)、誤解を招くメッセージを含むエラーが発生します。

  • 以前のリリースでは、次のエラーメッセージが表示されました。
    TypeError: Cannot read property 'startPacket' of undefined
    at Quit.start (lib\cmd\quit.js:17:9)

● パスワードが配列として提供され、mysql_clear_passwordクライアント認証プラグインで認証が行われると、認証が失敗します。

  • MariaDB Enterprise Serverでは、ユーザーアカウントがpam認証プラグインを使用し、pam_use_cleartext_pluginが有効になっている場合、mysql_clear_passwordクライアント認証プラグインが使用されます。pam_use_cleartext_pluginが有効になっていない場合は、代わりにdialogクライアント認証プラグインが使用されます。

● timeoutパラメータが設定され、batch()が呼び出されると、クエリはハングしますが、エラーが発生するはずです。

  • このリリース以降、次のエラーメッセージが表示されます。
    Cannot use timeout for Batch statement

MariaDB Connector/Node.js 3.0.1のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-connector-nodejs-3-0/3-0-1/


MariaDBプロダクト・サポート・サービス

MariaDB
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。