From 7c5fd108f5f64d508edc5042d5e747cfa42be575 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Wed, 17 May 2023 20:48:49 +0900 Subject: [PATCH] Doc: add release notes. --- doc.ja/src/sgml/release-4.0.sgml | 338 +++++++++++++++++++++ doc.ja/src/sgml/release-4.1.sgml | 338 +++++++++++++++++++++ doc.ja/src/sgml/release-4.2.sgml | 393 ++++++++++++++++++++++++ doc.ja/src/sgml/release-4.3.sgml | 457 ++++++++++++++++++++++++++++ doc.ja/src/sgml/release-4.4.sgml | 380 ++++++++++++++++++++++++ doc/src/sgml/release-4.0.sgml | 362 ++++++++++++++++++++++ doc/src/sgml/release-4.1.sgml | 362 ++++++++++++++++++++++ doc/src/sgml/release-4.2.sgml | 417 ++++++++++++++++++++++++++ doc/src/sgml/release-4.3.sgml | 495 ++++++++++++++++++++++++++++++- doc/src/sgml/release-4.4.sgml | 399 +++++++++++++++++++++++++ 10 files changed, 3937 insertions(+), 4 deletions(-) diff --git a/doc.ja/src/sgml/release-4.0.sgml b/doc.ja/src/sgml/release-4.0.sgml index 073862339..8a1c5187b 100644 --- a/doc.ja/src/sgml/release-4.0.sgml +++ b/doc.ja/src/sgml/release-4.0.sgml @@ -1,6 +1,344 @@ + + リリース 4.0.23 + + リリース日 + 2023-05-18 + + + + 変更点 + + + + + マルチステートメントのクエリを判定するために、psqlscanのソースコードをPgpool-IIにインポートしました。(Tatsuo Ishii) + + + psqlscanは、PostgreSQLソースツリー内のモジュールです。 + これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。 + したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii) + + + このコミットは、複数のステートメント (マルチステートメント) に関するPgpool-IIの長年の制限を排除しました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii) + + + 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。 + これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。 + + + + + + + 不具合修正 + + + + + 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii) + + + ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。 + 以下にシナリオを示します。 + + + + (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。 + + + + + + + (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。 + + + + + + + (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。 + + + + + + + (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。 + + + + + + + (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。 + 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。 + ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。 + + + + + + + (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。 + + + + + + + (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。 + + + + + + これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。 + これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。 + クライアントからsyncメッセージを受信し、PostgreSQLに転送します。 + syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。 + これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。 + + + + + + + musl libcを使用するシステムでのコンパイルエラーを修正しました。(bug 790) (Tatsuo Ishii) + + + パッチはleimaohuiによって提供されました。 + + + + + + + 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii) + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii) + + + ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。 + この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、PostgreSQLのバージョンに応じてSELECT pg_current_wal_lsn()またはSELECT pg_current_xlog_location()をスタンバイに送信し、当然エラーが発生していました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + DEALLOCATEによる種類不一致エラーを修正しました。 + (bug 780) (Tatsuo Ishii) + + + 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。 + + + + ストリーミングレプリケーションモード + + + + + + + ロードバランスノードがプライマリ以外のノード + + + + + + + PREPAREがマルチステートメントクエリで使用されている + + + + + + + + + + ドキュメント修正 + + + + + の説明を追加しました。(Chen Ningwei) + + + + + + + PREPARE/EXECUTE/DEALLOCATEに関する制限を追加しました。(Tatsuo Ishii) + + + + + + + Pgpool-IIで-Dオプションを使用する場合の注意点を追加しました。(Tatsuo Ishii) + + + + + + + 「RPMからのインストール」セクションを強化しました。(Bo Peng) + + + + + + + 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng) + + + + + + + AES256をサポートするにはオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + を強化しました。(Tatsuo Ishii) + + + + + + + 回帰テスト修正 + + + + + 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii) + + + + + + + いくつかの回帰テストを強化しました。(Tatsuo Ishii) + + + + + + + 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii) + + + + + + リリース 4.0.22 diff --git a/doc.ja/src/sgml/release-4.1.sgml b/doc.ja/src/sgml/release-4.1.sgml index 20f36d6f3..633ac23dc 100644 --- a/doc.ja/src/sgml/release-4.1.sgml +++ b/doc.ja/src/sgml/release-4.1.sgml @@ -1,6 +1,344 @@ + + リリース 4.1.16 + + リリース日 + 2023-05-18 + + + + 変更点 + + + + + マルチステートメントのクエリを判定するために、psqlscanのソースコードをPgpool-IIにインポートしました。(Tatsuo Ishii) + + + psqlscanは、PostgreSQLソースツリー内のモジュールです。 + これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。 + したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii) + + + このコミットは、複数のステートメント (マルチステートメント) に関するPgpool-IIの長年の制限を排除しました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii) + + + 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。 + これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。 + + + + + + + 不具合修正 + + + + + 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii) + + + ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。 + 以下にシナリオを示します。 + + + + (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。 + + + + + + + (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。 + + + + + + + (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。 + + + + + + + (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。 + + + + + + + (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。 + 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。 + ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。 + + + + + + + (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。 + + + + + + + (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。 + + + + + + これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。 + これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。 + クライアントからsyncメッセージを受信し、PostgreSQLに転送します。 + syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。 + これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。 + + + + + + + musl libcを使用するシステムでのコンパイルエラーを修正しました。(bug 790) (Tatsuo Ishii) + + + パッチはleimaohuiによって提供されました。 + + + + + + + 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii) + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii) + + + ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。 + この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、PostgreSQLのバージョンに応じてSELECT pg_current_wal_lsn()またはSELECT pg_current_xlog_location()をスタンバイに送信し、当然エラーが発生していました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + DEALLOCATEによる種類不一致エラーを修正しました。 + (bug 780) (Tatsuo Ishii) + + + 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。 + + + + ストリーミングレプリケーションモード + + + + + + + ロードバランスノードがプライマリ以外のノード + + + + + + + PREPAREがマルチステートメントクエリで使用されている + + + + + + + + + + ドキュメント修正 + + + + + の説明を追加しました。(Chen Ningwei) + + + + + + + PREPARE/EXECUTE/DEALLOCATEに関する制限を追加しました。(Tatsuo Ishii) + + + + + + + Pgpool-IIで-Dオプションを使用する場合の注意点を追加しました。(Tatsuo Ishii) + + + + + + + 「RPMからのインストール」セクションを強化しました。(Bo Peng) + + + + + + + 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng) + + + + + + + AES256をサポートするにはオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + を強化しました。(Tatsuo Ishii) + + + + + + + 回帰テスト修正 + + + + + 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii) + + + + + + + いくつかの回帰テストを強化しました。(Tatsuo Ishii) + + + + + + + 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii) + + + + + + リリース 4.1.15 diff --git a/doc.ja/src/sgml/release-4.2.sgml b/doc.ja/src/sgml/release-4.2.sgml index 7ad23d1be..4aa2e8bd6 100644 --- a/doc.ja/src/sgml/release-4.2.sgml +++ b/doc.ja/src/sgml/release-4.2.sgml @@ -1,6 +1,399 @@ + + リリース 4.2.13 + + リリース日 + 2023-05-18 + + + + 変更点 + + + + + マルチステートメントのクエリを判定するために、psqlscanのソースコードをPgpool-IIにインポートしました。(Tatsuo Ishii) + + + psqlscanは、PostgreSQLソースツリー内のモジュールです。 + これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。 + したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii) + + + このコミットは、複数のステートメント (マルチステートメント) に関するPgpool-IIの長年の制限を排除しました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii) + + + 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。 + これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。 + + + + + + + 不具合修正 + + + + + 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii) + + + ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。 + 以下にシナリオを示します。 + + + + (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。 + + + + + + + (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。 + + + + + + + (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。 + + + + + + + (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。 + + + + + + + (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。 + 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。 + ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。 + + + + + + + (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。 + + + + + + + (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。 + + + + + + これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。 + これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。 + クライアントからsyncメッセージを受信し、PostgreSQLに転送します。 + syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。 + これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。 + + + + + + + musl libcを使用するシステムでのコンパイルエラーを修正しました。(bug 790) (Tatsuo Ishii) + + + パッチはleimaohuiによって提供されました。 + + + + + + + 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii) + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii) + + + ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。 + この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、PostgreSQLのバージョンに応じてSELECT pg_current_wal_lsn()またはSELECT pg_current_xlog_location()をスタンバイに送信し、当然エラーが発生していました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + DEALLOCATEによる種類不一致エラーを修正しました。 + (bug 780) (Tatsuo Ishii) + + + 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。 + + + + ストリーミングレプリケーションモード + + + + + + + ロードバランスノードがプライマリ以外のノード + + + + + + + PREPAREがマルチステートメントクエリで使用されている + + + + + + + + + + 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai) + + + gcc10を使用したタイムスタンプテストでエラーが発生していました。 + + + + + + + show pool_versionで行の説明が2回表示される問題を修正しました。(Tatsuo Ishii) + + + + + + + ドキュメント修正 + + + + + の説明を追加しました。(Chen Ningwei) + + + + + + + PREPARE/EXECUTE/DEALLOCATEに関する制限を追加しました。(Tatsuo Ishii) + + + + + + + Pgpool-IIで-Dオプションを使用する場合の注意点を追加しました。(Tatsuo Ishii) + + + + + + + 「RPMからのインストール」セクションを強化しました。(Bo Peng) + + + + + + + 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii) + + + + + + + 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng) + + + + + + + 「制限事項」セクションを修正しました。(Tatsuo Ishii) + + + + + + SCRAM-SHA-256認証に関する記述を追加 + + + + + + + スナップショットアイソレーションモードに関する記述を追加 + + + + + + + + + + AES256をサポートするにはオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + を強化しました。(Tatsuo Ishii) + + + + + + + 回帰テスト修正 + + + + + 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii) + + + + + + + いくつかの回帰テストを強化しました。(Tatsuo Ishii) + + + + + + + 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii) + + + + + + リリース 4.2.12 diff --git a/doc.ja/src/sgml/release-4.3.sgml b/doc.ja/src/sgml/release-4.3.sgml index d5f746224..78bc5f13e 100644 --- a/doc.ja/src/sgml/release-4.3.sgml +++ b/doc.ja/src/sgml/release-4.3.sgml @@ -1,6 +1,463 @@ + + リリース 4.3.6 + + リリース日 + 2023-05-18 + + + + 変更点 + + + + + マルチステートメントのクエリを判定するために、psqlscanのソースコードをPgpool-IIにインポートしました。(Tatsuo Ishii) + + + psqlscanは、PostgreSQLソースツリー内のモジュールです。 + これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。 + したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii) + + + このコミットは、複数のステートメント (マルチステートメント) に関するPgpool-IIの長年の制限を排除しました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii) + + + 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。 + これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。 + + + + + + + 不具合修正 + + + + + 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii) + + + ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。 + 以下にシナリオを示します。 + + + + (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。 + + + + + + + (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。 + + + + + + + (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。 + + + + + + + (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。 + + + + + + + (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。 + + + + + + + (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。 + 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。 + ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。 + + + + + + + (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。 + + + + + + + (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。 + + + + + + これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。 + これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。 + クライアントからsyncメッセージを受信し、PostgreSQLに転送します。 + syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。 + これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。 + + + + + + + の不具合を修正しました。(bug 798) (Tatsuo Ishii) + + + クライアントがPgpool-IIに接続すると、スタンバイの1つがロードバランシングノードとして選択されます。 + セッションの継続中にスタンバイ遅延がdelay_thresholdを超えた場合、prefer_lower_delay_standbyは遅延が最小のスタンバイノードを新しいロードバランシングノードとして選択し、ターゲットバックエンドをそのノードに設定します。 + 残念ながら、SELECTクエリに書き込み機能などが含まれているかどうかを確認する前に決定が下されたため、Pgpool-IIはスタンバイで実行できないSELECTを送信していました。 + これを修正するために、prefer_lower_delay_standbyの処理を書き込み関数等のチェック後に移動しました。 + + + また、上記のケースを含めるように033.prefer_lower_standby_delay回帰テストも修正しました。 + + + + + + + musl libcを使用するシステムでのコンパイルエラーを修正しました。(bug 790) (Tatsuo Ishii) + + + パッチはleimaohuiによって提供されました。 + + + + + + + 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii) + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii) + + + ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。 + この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、PostgreSQLのバージョンに応じてSELECT pg_current_wal_lsn()またはSELECT pg_current_xlog_location()をスタンバイに送信し、当然エラーが発生していました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + DEALLOCATEによる種類不一致エラーを修正しました。 + (bug 780) (Tatsuo Ishii) + + + 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。 + + + + ストリーミングレプリケーションモード + + + + + + + ロードバランスノードがプライマリ以外のノード + + + + + + + PREPAREがマルチステートメントクエリで使用されている + + + + + + + + + + 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai) + + + gcc10を使用したタイムスタンプテストでエラーが発生していました。 + + + + + + + show pool_versionで行の説明が2回表示される問題を修正しました。(Tatsuo Ishii) + + + + + + + ドキュメント修正 + + + + + の説明を追加しました。(Chen Ningwei) + + + + + + + PREPARE/EXECUTE/DEALLOCATEに関する制限を追加しました。(Tatsuo Ishii) + + + + + + + Pgpool-IIで-Dオプションを使用する場合の注意点を追加しました。(Tatsuo Ishii) + + + + + + + 「RPMからのインストール」セクションを強化しました。(Bo Peng) + + + + + + + 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii) + + + + + + + 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng) + + + + + + + 「制限事項」セクションを修正しました。(Tatsuo Ishii) + + + + + + SCRAM-SHA-256認証に関する記述を追加 + + + + + + + スナップショットアイソレーションモードに関する記述を追加 + + + + + + + + + + PostgreSQLノードのステータスが「unknown」と表示される場合の説明を追加しました。(Tatsuo Ishii) + + + + + + + 実行時に、プロモートするターゲットノードが稼働中の必要であることを記載しました。(Tatsuo Ishii) + + + + + + + AES256をサポートするにはオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + 「2.8 insert_lockテーブルの作成」セクションを修正しました。(Tatsuo Ishii) + + + スナップショットアイソレーションモードについても言及する必要があったのに、ネイティブレプリケーションモードについてのみ言及していました。 + + + + + + + を強化しました。(Tatsuo Ishii) + + + + + + + Test Tools + + + + + 設定ファイルの末尾にいくつかのパラメータを追加するようにpgpool_setupを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii) + + + + + + + いくつかの回帰テストを強化しました。(Tatsuo Ishii) + + + + + + + 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii) + + + + + + + リリース 4.3.5 diff --git a/doc.ja/src/sgml/release-4.4.sgml b/doc.ja/src/sgml/release-4.4.sgml index 9e82e79da..92e369c49 100644 --- a/doc.ja/src/sgml/release-4.4.sgml +++ b/doc.ja/src/sgml/release-4.4.sgml @@ -1,6 +1,386 @@ + + リリース 4.4.3 + + リリース日 + 2023-05-18 + + + + 変更点 + + + + + マルチステートメントのクエリを判定するために、psqlscanのソースコードをPgpool-IIにインポートしました。(Tatsuo Ishii) + + + psqlscanは、PostgreSQLソースツリー内のモジュールです。 + これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。 + したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii) + + + このコミットは、複数のステートメント (マルチステートメント) に関するPgpool-IIの長年の制限を排除しました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii) + + + 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。 + これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。 + + + + + + + 不具合修正 + + + + + の不具合を修正しました。(bug 798) (Tatsuo Ishii) + + + クライアントがPgpool-IIに接続すると、スタンバイの1つがロードバランシングノードとして選択されます。 + セッションの継続中にスタンバイ遅延がdelay_thresholdを超えた場合、prefer_lower_delay_standbyは遅延が最小のスタンバイノードを新しいロードバランシングノードとして選択し、ターゲットバックエンドをそのノードに設定します。 + 残念ながら、SELECTクエリに書き込み機能などが含まれているかどうかを確認する前に決定が下されたため、Pgpool-IIはスタンバイで実行できないSELECTを送信していました。 + これを修正するために、prefer_lower_delay_standbyの処理を書き込み関数等のチェック後に移動しました。 + + + また、上記のケースを含めるように033.prefer_lower_standby_delay回帰テストも修正しました。 + + + + + + + musl libcを使用するシステムでのコンパイルエラーを修正しました。(bug 790) (Tatsuo Ishii) + + + パッチはleimaohuiによって提供されました。 + + + + + + + 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii) + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii) + + + ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。 + この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、PostgreSQLのバージョンに応じてSELECT pg_current_wal_lsn()またはSELECT pg_current_xlog_location()をスタンバイに送信し、当然エラーが発生していました。 + + + 議論: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + DEALLOCATEによる種類不一致エラーを修正しました。 + (bug 780) (Tatsuo Ishii) + + + 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。 + + + + ストリーミングレプリケーションモード + + + + + + + ロードバランスノードがプライマリ以外のノード + + + + + + + PREPAREがマルチステートメントクエリで使用されている + + + + + + + + + + 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai) + + + gcc10を使用したタイムスタンプテストでエラーが発生していました。 + + + + + + + 共有relcacheをコミットする際に、より強力なロックを取得するように修正しました。(Tatsuo Ishii) + + + + + + + show pool_versionで行の説明が2回表示される問題を修正しました。(Tatsuo Ishii) + + + + + + + ドキュメント修正 + + + + + の説明を追加しました。(Chen Ningwei) + + + + + + + PREPARE/EXECUTE/DEALLOCATEに関する制限を追加しました。(Tatsuo Ishii) + + + + + + + Pgpool-IIで-Dオプションを使用する場合の注意点を追加しました。(Tatsuo Ishii) + + + + + + + 「RPMからのインストール」セクションを強化しました。(Bo Peng) + + + + + + + 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii) + + + + + + + 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng) + + + + + + + 「制限事項」セクションを修正しました。(Tatsuo Ishii) + + + + + + SCRAM-SHA-256認証に関する記述を追加 + + + + + + + スナップショットアイソレーションモードに関する記述を追加 + + + + + + + + + + PostgreSQLノードのステータスが「unknown」と表示される場合の説明を追加しました。(Tatsuo Ishii) + + + + + + + 実行時に、プロモートするターゲットノードが稼働中の必要であることを記載しました。(Tatsuo Ishii) + + + + + + + AES256をサポートするにはオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii) + + + + + + + 「2.8 insert_lockテーブルの作成」セクションを修正しました。(Tatsuo Ishii) + + + スナップショットアイソレーションモードについても言及する必要があったのに、ネイティブレプリケーションモードについてのみ言及していました。 + + + + + + + を強化しました。(Tatsuo Ishii) + + + + + + + テストツール修正 + + + + + 設定ファイルの末尾にいくつかのパラメータを追加するようにpgpool_setupを修正しました。(Bo Peng) + + + + + + + 回帰テスト修正 + + + + + 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii) + + + + + + + いくつかの回帰テストを強化しました。(Tatsuo Ishii) + + + + + + + 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii) + + + + + + リリース 4.4.2 diff --git a/doc/src/sgml/release-4.0.sgml b/doc/src/sgml/release-4.0.sgml index 1aa4734d8..0f5fc7bcf 100644 --- a/doc/src/sgml/release-4.0.sgml +++ b/doc/src/sgml/release-4.0.sgml @@ -1,6 +1,368 @@ + + Release 4.0.23 + + Release Date + 2023-05-18 + + + + Changes + + + + + Import psqlscan source code into Pgpool-II to judge multi statement query. (Tatsuo Ishii) + + + Psqlscan is a module in the PostgreSQL source tree. + It is essentially subset of PostgreSQL SQL scanner + but it is specialized for detecting + the end of each SQL statement. Therefore we can count the number of + SQL statements in a query string by using it. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + Allow to use multiple statements extensively. (Tatsuo Ishii) + + + This commit tries to eliminate pgpool's long standing limitations + regarding multiple statements (multi-statements). + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + Use schema qualification for internal queries. (Tatsuo Ishii) + + + Some of objects such as function and cast did not use "pg_catalog." + schema qualification. This does not lead to immediate security + concern but using the schema qualification is always good practice. + + + + + + + Bug fixes + + + + + Fix possible dead lock with shared relation cache. (Tatsuo Ishii) + + + When a user defined function obtains table locking, call to the + function using extended query protocol could lead to dead lock. Here's + a scenario: + + + + (1) In session A client sends parse, bind, execute request for the function to pgpool. + + + + + + + (2) Pgpool-II in session A forwards + the request to PostgreSQL. + + + + + + + (3) PostgreSQL in session A performs execute, resulting in a table lock. + + + + + + + (4) In session B client sends parse, bind, execute request for the + function to pgpool. + + + + + + + (5) Pgpool in session B forwards the request to PostgreSQL. + + + + + + + (6) PostgreSQL in session B performs bind but the table was already + locked by PostgreSQL in session A, and it waits for release of the + lock. + + + + + + + (7) After pgpool in session B forwards the execute to PostgreSQL, it + acquires semaphore to search shared relation cache to check the + volatility of the function. Then it calls do_query and sends flush + message to PostgreSQL to obtain the response from PostgreSQL up to + this point. But since PostgreSQL is waiting for table lock in #6, + pgpool has to wait for messages beyond bind complete. + + + + + + + (8) After pgpool in session A forwards the execute to PostgreSQL, it + tries to acquire semaphore to search shared relation cache to check + the volatility of the function but the semaphore was already + acquired by pgpool in session B, it waits for the release of the + semaphore. + + + + + + + (9) Session A and session B wait for each other, resulting in a dead lock. + + + + + + To fix this, modify pool_search_relcache() so that it releases + semaphore before calling do_query() (but acquires semaphore after + do_query()). By this, session A in #8 above can get semaphore, and go + forward. It receives sync message from client and forwards it to + PostgreSQL. Upon receiving sync, the user defined function will finish + the execution and releases the table lock. This makes PostgreSQL in + session B move forward because now it can obtain the table lock. + + + + + + + Fix compile error on systems using musl libc. + (bug 790) (Tatsuo Ishii) + + + Patch provided by leimaohui. + + + + + + + Fix multiple query cache bug. (Tatsuo Ishii) + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii) + + + When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node + id, rather than -1 even if the primary is down. + In this case streaming replication delay check worker + sends SELECT pg_current_wal_lsn() or + SELECT pg_current_xlog_location() + depending on PostgreSQL's version to + standby which of course raises an error. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + Fix kind mimatch error with DEALLOCATE. + (bug 780) (Tatsuo Ishii) + + + Kind mimatch error occurs when conditions below are all met: + + + + streaming replication mode + + + + + + + load balance node is other than primary + + + + + + + PREPARE is used in a multi-statement query + + + + + + + + + + Documents + + + + + Add explanation for . (Chen Ningwei) + + + + + + + Add restriction regarding PREPARE/EXECUTE/DEALLOCATE. (Tatsuo Ishii) + + + + + + + Add caution to use -D option with pgpool. (Tatsuo Ishii) + + + + + + + Enhancing "Installation from RPM" section. (Bo Peng) + + + + + + + Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng) + + + + + + + Mention that AES256 support requires option. (Tatsuo Ishii) + + + + + + + Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii) + + + + + + + Enhance . (Tatsuo Ishii) + + + + + + + Regression Tests + + + + + Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii) + + + + + + + Enhance regression tests. (Tatsuo Ishii) + + + + + + + Fix occasional 005.jdbc test failure. (Tatsuo Ishii) + + + + + + Release 4.0.22 diff --git a/doc/src/sgml/release-4.1.sgml b/doc/src/sgml/release-4.1.sgml index e972f7b61..7ff8d6a8a 100644 --- a/doc/src/sgml/release-4.1.sgml +++ b/doc/src/sgml/release-4.1.sgml @@ -1,6 +1,368 @@ + + Release 4.1.16 + + Release Date + 2023-05-18 + + + + Changes + + + + + Import psqlscan source code into Pgpool-II to judge multi statement query. (Tatsuo Ishii) + + + Psqlscan is a module in the PostgreSQL source tree. + It is essentially subset of PostgreSQL SQL scanner + but it is specialized for detecting + the end of each SQL statement. Therefore we can count the number of + SQL statements in a query string by using it. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + Allow to use multiple statements extensively. (Tatsuo Ishii) + + + This commit tries to eliminate pgpool's long standing limitations + regarding multiple statements (multi-statements). + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + Use schema qualification for internal queries. (Tatsuo Ishii) + + + Some of objects such as function and cast did not use "pg_catalog." + schema qualification. This does not lead to immediate security + concern but using the schema qualification is always good practice. + + + + + + + Bug fixes + + + + + Fix possible dead lock with shared relation cache. (Tatsuo Ishii) + + + When a user defined function obtains table locking, call to the + function using extended query protocol could lead to dead lock. Here's + a scenario: + + + + (1) In session A client sends parse, bind, execute request for the function to pgpool. + + + + + + + (2) Pgpool-II in session A forwards + the request to PostgreSQL. + + + + + + + (3) PostgreSQL in session A performs execute, resulting in a table lock. + + + + + + + (4) In session B client sends parse, bind, execute request for the + function to pgpool. + + + + + + + (5) Pgpool in session B forwards the request to PostgreSQL. + + + + + + + (6) PostgreSQL in session B performs bind but the table was already + locked by PostgreSQL in session A, and it waits for release of the + lock. + + + + + + + (7) After pgpool in session B forwards the execute to PostgreSQL, it + acquires semaphore to search shared relation cache to check the + volatility of the function. Then it calls do_query and sends flush + message to PostgreSQL to obtain the response from PostgreSQL up to + this point. But since PostgreSQL is waiting for table lock in #6, + pgpool has to wait for messages beyond bind complete. + + + + + + + (8) After pgpool in session A forwards the execute to PostgreSQL, it + tries to acquire semaphore to search shared relation cache to check + the volatility of the function but the semaphore was already + acquired by pgpool in session B, it waits for the release of the + semaphore. + + + + + + + (9) Session A and session B wait for each other, resulting in a dead lock. + + + + + + To fix this, modify pool_search_relcache() so that it releases + semaphore before calling do_query() (but acquires semaphore after + do_query()). By this, session A in #8 above can get semaphore, and go + forward. It receives sync message from client and forwards it to + PostgreSQL. Upon receiving sync, the user defined function will finish + the execution and releases the table lock. This makes PostgreSQL in + session B move forward because now it can obtain the table lock. + + + + + + + Fix compile error on systems using musl libc. + (bug 790) (Tatsuo Ishii) + + + Patch provided by leimaohui. + + + + + + + Fix multiple query cache bug. (Tatsuo Ishii) + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii) + + + When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node + id, rather than -1 even if the primary is down. + In this case streaming replication delay check worker + sends SELECT pg_current_wal_lsn() or + SELECT pg_current_xlog_location() + depending on PostgreSQL's version to + standby which of course raises an error. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + Fix kind mimatch error with DEALLOCATE. + (bug 780) (Tatsuo Ishii) + + + Kind mimatch error occurs when conditions below are all met: + + + + streaming replication mode + + + + + + + load balance node is other than primary + + + + + + + PREPARE is used in a multi-statement query + + + + + + + + + + Documents + + + + + Add explanation for . (Chen Ningwei) + + + + + + + Add restriction regarding PREPARE/EXECUTE/DEALLOCATE. (Tatsuo Ishii) + + + + + + + Add caution to use -D option with pgpool. (Tatsuo Ishii) + + + + + + + Enhancing "Installation from RPM" section. (Bo Peng) + + + + + + + Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng) + + + + + + + Mention that AES256 support requires option. (Tatsuo Ishii) + + + + + + + Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii) + + + + + + + Enhance . (Tatsuo Ishii) + + + + + + + Regression Tests + + + + + Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii) + + + + + + + Enhance regression tests. (Tatsuo Ishii) + + + + + + + Fix occasional 005.jdbc test failure. (Tatsuo Ishii) + + + + + + Release 4.1.15 diff --git a/doc/src/sgml/release-4.2.sgml b/doc/src/sgml/release-4.2.sgml index e909a2587..8f706ec44 100644 --- a/doc/src/sgml/release-4.2.sgml +++ b/doc/src/sgml/release-4.2.sgml @@ -1,6 +1,423 @@ + + Release 4.2.13 + + Release Date + 2023-05-18 + + + + Changes + + + + + Import psqlscan source code into Pgpool-II to judge multi statement query. (Tatsuo Ishii) + + + Psqlscan is a module in the PostgreSQL source tree. + It is essentially subset of PostgreSQL SQL scanner + but it is specialized for detecting + the end of each SQL statement. Therefore we can count the number of + SQL statements in a query string by using it. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + Allow to use multiple statements extensively. (Tatsuo Ishii) + + + This commit tries to eliminate pgpool's long standing limitations + regarding multiple statements (multi-statements). + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + Use schema qualification for internal queries. (Tatsuo Ishii) + + + Some of objects such as function and cast did not use "pg_catalog." + schema qualification. This does not lead to immediate security + concern but using the schema qualification is always good practice. + + + + + + + Bug fixes + + + + + Fix possible dead lock with shared relation cache. (Tatsuo Ishii) + + + When a user defined function obtains table locking, call to the + function using extended query protocol could lead to dead lock. Here's + a scenario: + + + + (1) In session A client sends parse, bind, execute request for the function to pgpool. + + + + + + + (2) Pgpool-II in session A forwards + the request to PostgreSQL. + + + + + + + (3) PostgreSQL in session A performs execute, resulting in a table lock. + + + + + + + (4) In session B client sends parse, bind, execute request for the + function to pgpool. + + + + + + + (5) Pgpool in session B forwards the request to PostgreSQL. + + + + + + + (6) PostgreSQL in session B performs bind but the table was already + locked by PostgreSQL in session A, and it waits for release of the + lock. + + + + + + + (7) After pgpool in session B forwards the execute to PostgreSQL, it + acquires semaphore to search shared relation cache to check the + volatility of the function. Then it calls do_query and sends flush + message to PostgreSQL to obtain the response from PostgreSQL up to + this point. But since PostgreSQL is waiting for table lock in #6, + pgpool has to wait for messages beyond bind complete. + + + + + + + (8) After pgpool in session A forwards the execute to PostgreSQL, it + tries to acquire semaphore to search shared relation cache to check + the volatility of the function but the semaphore was already + acquired by pgpool in session B, it waits for the release of the + semaphore. + + + + + + + (9) Session A and session B wait for each other, resulting in a dead lock. + + + + + + To fix this, modify pool_search_relcache() so that it releases + semaphore before calling do_query() (but acquires semaphore after + do_query()). By this, session A in #8 above can get semaphore, and go + forward. It receives sync message from client and forwards it to + PostgreSQL. Upon receiving sync, the user defined function will finish + the execution and releases the table lock. This makes PostgreSQL in + session B move forward because now it can obtain the table lock. + + + + + + + Fix compile error on systems using musl libc. + (bug 790) (Tatsuo Ishii) + + + Patch provided by leimaohui. + + + + + + + Fix multiple query cache bug. (Tatsuo Ishii) + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii) + + + When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node + id, rather than -1 even if the primary is down. + In this case streaming replication delay check worker + sends SELECT pg_current_wal_lsn() or + SELECT pg_current_xlog_location() + depending on PostgreSQL's version to + standby which of course raises an error. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + Fix kind mimatch error with DEALLOCATE. + (bug 780) (Tatsuo Ishii) + + + Kind mimatch error occurs when conditions below are all met: + + + + streaming replication mode + + + + + + + load balance node is other than primary + + + + + + + PREPARE is used in a multi-statement query + + + + + + + + + + Fix compile error of regression test (Takuma Hoshiai) + + + The error occurred by timestamp test using gcc10. + + + + + + + Fix that show pool_version shows row description twice. (Tatsuo Ishii) + + + + + + + Documents + + + + + Add explanation for . (Chen Ningwei) + + + + + + + Add restriction regarding PREPARE/EXECUTE/DEALLOCATE. (Tatsuo Ishii) + + + + + + + Add caution to use -D option with pgpool. (Tatsuo Ishii) + + + + + + + Enhancing "Installation from RPM" section. (Bo Peng) + + + + + + + Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii) + + + + + + + Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng) + + + + + + + Fix restrictions section. (Tatsuo Ishii) + + + + + + Add mention about SCRAM-SHA-256 authentication + + + + + + + Add mention about snapshot isolation mode + + + + + + + + + + Mention that AES256 support requires option. (Tatsuo Ishii) + + + + + + + Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii) + + + + + + + Enhance . (Tatsuo Ishii) + + + + + + + Regression Tests + + + + + Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii) + + + + + + + Enhance regression tests. (Tatsuo Ishii) + + + + + + + Fix occasional 005.jdbc test failure. (Tatsuo Ishii) + + + + + + Release 4.2.12 diff --git a/doc/src/sgml/release-4.3.sgml b/doc/src/sgml/release-4.3.sgml index 8d866af4c..f892b7c57 100644 --- a/doc/src/sgml/release-4.3.sgml +++ b/doc/src/sgml/release-4.3.sgml @@ -1,6 +1,495 @@ + + Release 4.3.6 + + Release Date + 2023-05-18 + + + + Changes + + + + + Import psqlscan source code into Pgpool-II to judge multi statement query. (Tatsuo Ishii) + + + Psqlscan is a module in the PostgreSQL source tree. + It is essentially subset of PostgreSQL SQL scanner + but it is specialized for detecting + the end of each SQL statement. Therefore we can count the number of + SQL statements in a query string by using it. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + Allow to use multiple statements extensively. (Tatsuo Ishii) + + + This commit tries to eliminate pgpool's long standing limitations + regarding multiple statements (multi-statements). + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + Use schema qualification for internal queries. (Tatsuo Ishii) + + + Some of objects such as function and cast did not use "pg_catalog." + schema qualification. This does not lead to immediate security + concern but using the schema qualification is always good practice. + + + + + + + Bug fixes + + + + + Fix possible dead lock with shared relation cache. (Tatsuo Ishii) + + + When a user defined function obtains table locking, call to the + function using extended query protocol could lead to dead lock. Here's + a scenario: + + + + (1) In session A client sends parse, bind, execute request for the function to pgpool. + + + + + + + (2) Pgpool-II in session A forwards + the request to PostgreSQL. + + + + + + + (3) PostgreSQL in session A performs execute, resulting in a table lock. + + + + + + + (4) In session B client sends parse, bind, execute request for the + function to pgpool. + + + + + + + (5) Pgpool in session B forwards the request to PostgreSQL. + + + + + + + (6) PostgreSQL in session B performs bind but the table was already + locked by PostgreSQL in session A, and it waits for release of the + lock. + + + + + + + (7) After pgpool in session B forwards the execute to PostgreSQL, it + acquires semaphore to search shared relation cache to check the + volatility of the function. Then it calls do_query and sends flush + message to PostgreSQL to obtain the response from PostgreSQL up to + this point. But since PostgreSQL is waiting for table lock in #6, + pgpool has to wait for messages beyond bind complete. + + + + + + + (8) After pgpool in session A forwards the execute to PostgreSQL, it + tries to acquire semaphore to search shared relation cache to check + the volatility of the function but the semaphore was already + acquired by pgpool in session B, it waits for the release of the + semaphore. + + + + + + + (9) Session A and session B wait for each other, resulting in a dead lock. + + + + + + To fix this, modify pool_search_relcache() so that it releases + semaphore before calling do_query() (but acquires semaphore after + do_query()). By this, session A in #8 above can get semaphore, and go + forward. It receives sync message from client and forwards it to + PostgreSQL. Upon receiving sync, the user defined function will finish + the execution and releases the table lock. This makes PostgreSQL in + session B move forward because now it can obtain the table lock. + + + + + + + Fix bug. + (bug 798) (Tatsuo Ishii) + + + When client connects to pgpool, one of standbys are chosen as the load + balancing node. If standby delay exceeds delay_threshold while the + session continues, prefer_lower_delay_standby will choose + the least delay standby node as the new load balancing node and set the target + backend to the node. Unfortunately the decision was made before the + checking that SELECT query includes writing function etc., + Pgpool-II + happily sends SELECT which cannot be executed on standby. To fix + this, prefer_lower_delay_standby treatment is moved + after the writing function etc. check. + + + Also 033.prefer_lower_standby_delay regression test is modified to include the case above. + + + + + + + Fix compile error on systems using musl libc. + (bug 790) (Tatsuo Ishii) + + + Patch provided by leimaohui. + + + + + + + Fix multiple query cache bug. (Tatsuo Ishii) + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii) + + + When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node + id, rather than -1 even if the primary is down. + In this case streaming replication delay check worker + sends SELECT pg_current_wal_lsn() or + SELECT pg_current_xlog_location() + depending on PostgreSQL's version to + standby which of course raises an error. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + Fix kind mimatch error with DEALLOCATE. + (bug 780) (Tatsuo Ishii) + + + Kind mimatch error occurs when conditions below are all met: + + + + streaming replication mode + + + + + + + load balance node is other than primary + + + + + + + PREPARE is used in a multi-statement query + + + + + + + + + + Fix compile error of regression test (Takuma Hoshiai) + + + The error occurred by timestamp test using gcc10. + + + + + + + Fix that show pool_version shows row description twice. (Tatsuo Ishii) + + + + + + + Documents + + + + + Add explanation for . (Chen Ningwei) + + + + + + + Add restriction regarding PREPARE/EXECUTE/DEALLOCATE. (Tatsuo Ishii) + + + + + + + Add caution to use -D option with pgpool. (Tatsuo Ishii) + + + + + + + Enhancing "Installation from RPM" section. (Bo Peng) + + + + + + + Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii) + + + + + + + Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng) + + + + + + + Fix restrictions section. (Tatsuo Ishii) + + + + + + Add mention about SCRAM-SHA-256 authentication + + + + + + + Add mention about snapshot isolation mode + + + + + + + + + + Add explanation when pg node status is shown as "unknown". (Tatsuo Ishii) + + + + + + + Mention that the target node to promote must be up and running when executing + . (Tatsuo Ishii) + + + + + + + Mention that AES256 support requires option. (Tatsuo Ishii) + + + + + + + Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii) + + + + + + + Fix "2.8 Creating insert lock table" section. (Tatsuo Ishii) + + + It only referred to the native replication where it should have referred + to the snapshot isolation mode. + + + + + + + Enhance . (Tatsuo Ishii) + + + + + + + Test Tools + + + + + Change pgpool_setup to append some parameters to the end of the configuration file. (Bo Peng) + + + + + + + Regression Tests + + + + + Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii) + + + + + + + Enhance regression tests. (Tatsuo Ishii) + + + + + + + Fix occasional 005.jdbc test failure. (Tatsuo Ishii) + + + + + + Release 4.3.5 @@ -1015,11 +1504,9 @@ Increase timeout for regression test 077.invalid_failover_node. (Tatsuo Ishii) - - - + @@ -1308,7 +1795,7 @@ Test tools - + + + Release 4.4.3 + + Release Date + 2023-05-18 + + + + Changes + + + + + Import psqlscan source code into Pgpool-II to judge multi statement query. (Tatsuo Ishii) + + + Psqlscan is a module in the PostgreSQL source tree. + It is essentially subset of PostgreSQL SQL scanner + but it is specialized for detecting + the end of each SQL statement. Therefore we can count the number of + SQL statements in a query string by using it. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html + + + + + + + Allow to use multiple statements extensively. (Tatsuo Ishii) + + + This commit tries to eliminate pgpool's long standing limitations + regarding multiple statements (multi-statements). + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html + + + + + + + Use schema qualification for internal queries. (Tatsuo Ishii) + + + Some of objects such as function and cast did not use "pg_catalog." + schema qualification. This does not lead to immediate security + concern but using the schema qualification is always good practice. + + + + + + + Bug fixes + + + + + Fix bug. + (bug 798) (Tatsuo Ishii) + + + When client connects to pgpool, one of standbys are chosen as the load + balancing node. If standby delay exceeds delay_threshold while the + session continues, prefer_lower_delay_standby will choose + the least delay standby node as the new load balancing node and set the target + backend to the node. Unfortunately the decision was made before the + checking that SELECT query includes writing function etc., + Pgpool-II + happily sends SELECT which cannot be executed on standby. To fix + this, prefer_lower_delay_standby treatment is moved + after the writing function etc. check. + + + Also modify 033.prefer_lower_standby_delay regression test to include the case above. + + + + + + + Fix compile error on systems using musl libc. + (bug 790) (Tatsuo Ishii) + + + Patch provided by leimaohui. + + + + + + + Fix multiple query cache bug. (Tatsuo Ishii) + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html + + + + + + + Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii) + + + When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node + id, rather than -1 even if the primary is down. + In this case streaming replication delay check worker + sends SELECT pg_current_wal_lsn() or + SELECT pg_current_xlog_location() + depending on PostgreSQL's version to + standby which of course raises an error. + + + Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html + + + + + + + Fix kind mimatch error with DEALLOCATE. + (bug 780) (Tatsuo Ishii) + + + Kind mimatch error occurs when conditions below are all met: + + + + streaming replication mode + + + + + + + load balance node is other than primary + + + + + + + PREPARE is used in a multi-statement query + + + + + + + + + + Fix compile error of regression test (Takuma Hoshiai) + + + The error occurred by timestamp test using gcc10. + + + + + + + Obtain stronger lock while commiting shared relcache. (Tatsuo Ishii) + + + + + + + Fix that show pool_version shows row description twice. (Tatsuo Ishii) + + + + + + + Documents + + + + + Add explanation for . (Chen Ningwei) + + + + + + + Add restriction regarding PREPARE/EXECUTE/DEALLOCATE. (Tatsuo Ishii) + + + + + + + Add caution to use -D option with pgpool. (Tatsuo Ishii) + + + + + + + Enhancing "Installation from RPM" section. (Bo Peng) + + + + + + + Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii) + + + + + + + Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng) + + + + + + + Fix restrictions section. (Tatsuo Ishii) + + + + + + Add mention about SCRAM-SHA-256 authentication + + + + + + + Add mention about snapshot isolation mode + + + + + + + + + + Add explanation when pg node status is shown as "unknown". (Tatsuo Ishii) + + + + + + + Mention that the target node to promote must be up and running when executing + . (Tatsuo Ishii) + + + + + + + Mention that AES256 support requires option. (Tatsuo Ishii) + + + + + + + Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii) + + + + + + + Fix "2.8 Creating insert lock table" section. (Tatsuo Ishii) + + + It only referred to the native replication where it should have referred + to the snapshot isolation mode. + + + + + + + Enhance . (Tatsuo Ishii) + + + + + + + Test Tools + + + + + Change pgpool_setup to append some parameters to the end of the configuration file. (Bo Peng) + + + + + + + Regression Tests + + + + + Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii) + + + + + + + Enhance regression tests. (Tatsuo Ishii) + + + + + + + Fix occasional 005.jdbc test failure. (Tatsuo Ishii) + + + + + + Release 4.4.2 -- 2.39.5