主な変更点
- イベントドリブンアーキテクチャを使用して行を1つずつ処理し、処理に必要なメモリを削減するexecuteStream()メソッドを追加しました。
- executeStream()は、結果セット全体が大きすぎてメモリに収まらない場合に、execute()メソッドを置き換えるものです。
- クライアントは、net_read_timeoutシステム変数で定義された時間よりも短い時間で結果セット全体を受信する必要があります。そうしないと、読み取りが中止されます。デフォルト値(30秒)が短すぎる場合は、より高い値を設定する必要がある場合があります。
- 次の例は、for-await-of(Node.js 10以降で使用可能)を使用して新しいexecuteStream()メソッドを呼び出す方法を示しています。
const prepare = await shareConn.prepare('SELECT * FROM mysql.user where host = ?');
const stream = prepare.executeStream(['localhost']);
try {
for await (const row of stream) {
console.log(row);
}
} catch (e) {
queryStream.close();
}
prepare.close();
-
- 次の例は、イベントを使用して新しいexecuteStream()メソッドを呼び出す方法を示しています。
const prepare = await shareConn.prepare('SELECT * FROM mysql.user where host = ?');
prepare.executeStream(['localhost'])
.on("error", err => {
console.log(err); //if error
})
.on("fields", meta => {
console.log(meta); // [ ...]
})
.on("data", row => {
console.log(row);
})
.on("end", () => {
//ended
prepare.close();
});
- プリペアドステートメントキャッシュのパフォーマンスが向上しました。
- please-upgrade-nodeパッケージの依存関係を削除しました。
- 互換性のために、いくつかのエラーコードが更新され、MariaDB Community Server 10.9の値と一致するようになりました。
修正されたバグ
- 名前メタデータ列が破損する可能性があります。
- 接続が接続プールで再利用されると、セッションのタイムゾーンがリセットされ、日付と時刻が正しくなくなります。
- 接続プールが使用され、leakDetectionTimeoutパラメータがゼロ以外の値に設定されている場合、エラーが発生します。
- 以前のリリースでは、次のエラーが発生しました。
/root/node_modules/mariadb/lib/pool.js:439
if (value.leaked) counter++;
^
TypeError: Cannot read properties of null (reading 'leaked')
- 以前のリリースでは、次のエラーが発生しました。
- caching_sha2_passwordを使用してMySQL 8.0サーバーに接続すると、サーバー側のキャッシュを使用した高速認証が機能しません。
- 以前のリリースでは、Connector/Node.jsでcaching_sha2_passwordを実装するためには、ユーザーが接続する度に完全な認証プロセスを実行する必要がありました。
- このリリース以降、Connector/Node.jsでのcaching_sha2_passwordの実装では、ユーザーが最初に接続する時に完全な認証プロセスを実行する必要があるだけで、ユーザーのその後の接続はサーバー側のキャッシュに対して認証できます。
- バッチ挿入が実行されるか、pool.batch()メソッドが呼び出されると、prepareCacheLengthパラメータはプリペアドステートメントキャッシュのサイズを適切に制限しません。
- 以前のリリースでは、これによりプリペアドステートメントの数がmax_prepared_stmt_countを超え、ER_MAX_PREPARED_STMT_COUNT_REACHEDエラーが発生する可能性がありました。
- このリリース以降、prepareCacheLengthパラメータはプリペアドステートメントキャッシュのサイズを適切に制限します。
- idleTimeoutパラメータが0に設定されている場合、アイドル接続タイムアウトは無効にならず、代わりに30分に設定されます。
- metaAsArray、checkNumberRange、pool.closed TypeScriptオプションが使用できません。
- プリペアドステートメントが閉じられた後に実行されると、問題の原因が明確に示されていないER_UNKNOWN_STMT_HANDLERエラーコードが発生します。
- 以前のリリースでは、次のエラーが発生しました。
'Unknown prepared statement handler (1) given to mysqld_stmt_execute' - このリリース以降、次のエラーが発生します。
'Execute fails, prepare command has already been closed'
- 以前のリリースでは、次のエラーが発生しました。
MariaDB Connector/Node.js 3.0.2のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-connector-nodejs-3-0/3-0-2/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。