<!-- doc/src/sgml/release-4.0.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-0-23">
+ <title>リリース 4.0.23</title>
+ <note>
+ <title>リリース日</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>変更点</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ マルチステートメントのクエリを判定するために、<literal>psqlscan</literal>のソースコードを<productname>Pgpool-II</productname>にインポートしました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>psqlscan</literal>は、<productname>PostgreSQL</productname>ソースツリー内のモジュールです。
+ これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。
+ したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii)
+ </para>
+ <para>
+ このコミットは、複数のステートメント (マルチステートメント) に関する<productname>Pgpool-II</productname>の長年の制限を排除しました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。
+ これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>不具合修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [21d2945]
+ -->
+ <para>
+ 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。
+ 以下にシナリオを示します。
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。
+ 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。
+ ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。
+ これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。
+ クライアントからsyncメッセージを受信し、PostgreSQLに転送します。
+ syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。
+ これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ musl libcを使用するシステムでのコンパイルエラーを修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ パッチはleimaohuiによって提供されました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。
+ この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、<productname>PostgreSQL</productname>のバージョンに応じて<literal>SELECT pg_current_wal_lsn()</literal>または<literal>SELECT pg_current_xlog_location()</literal>をスタンバイに送信し、当然エラーが発生していました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ <literal>DEALLOCATE</literal>による種類不一致エラーを修正しました。
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。
+ <itemizedlist>
+ <listitem>
+ <para>
+ ストリーミングレプリケーションモード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ロードバランスノードがプライマリ以外のノード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal>がマルチステートメントクエリで使用されている
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>ドキュメント修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ <xref linkend="guc-wd-priority">の説明を追加しました。(Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ <literal>PREPARE/EXECUTE/DEALLOCATE</literal>に関する制限を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Pgpool-IIで<literal>-D</literal>オプションを使用する場合の注意点を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ 「RPMからのインストール」セクションを強化しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ AES256をサポートするには<option>--with-openssl</option>オプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ <xref linkend="sql-show-pool-cache">を強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>回帰テスト修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ いくつかの回帰テストを強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [7c836d6]
+ -->
+ <para>
+ 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-0-22">
<title>リリース 4.0.22</title>
<note>
<!-- doc/src/sgml/release-4.1.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-1-16">
+ <title>リリース 4.1.16</title>
+ <note>
+ <title>リリース日</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>変更点</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ マルチステートメントのクエリを判定するために、<literal>psqlscan</literal>のソースコードを<productname>Pgpool-II</productname>にインポートしました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>psqlscan</literal>は、<productname>PostgreSQL</productname>ソースツリー内のモジュールです。
+ これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。
+ したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii)
+ </para>
+ <para>
+ このコミットは、複数のステートメント (マルチステートメント) に関する<productname>Pgpool-II</productname>の長年の制限を排除しました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。
+ これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>不具合修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [21d2945]
+ -->
+ <para>
+ 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。
+ 以下にシナリオを示します。
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。
+ 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。
+ ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。
+ これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。
+ クライアントからsyncメッセージを受信し、PostgreSQLに転送します。
+ syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。
+ これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ musl libcを使用するシステムでのコンパイルエラーを修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ パッチはleimaohuiによって提供されました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。
+ この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、<productname>PostgreSQL</productname>のバージョンに応じて<literal>SELECT pg_current_wal_lsn()</literal>または<literal>SELECT pg_current_xlog_location()</literal>をスタンバイに送信し、当然エラーが発生していました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ <literal>DEALLOCATE</literal>による種類不一致エラーを修正しました。
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。
+ <itemizedlist>
+ <listitem>
+ <para>
+ ストリーミングレプリケーションモード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ロードバランスノードがプライマリ以外のノード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal>がマルチステートメントクエリで使用されている
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>ドキュメント修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ <xref linkend="guc-wd-priority">の説明を追加しました。(Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ <literal>PREPARE/EXECUTE/DEALLOCATE</literal>に関する制限を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Pgpool-IIで<literal>-D</literal>オプションを使用する場合の注意点を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ 「RPMからのインストール」セクションを強化しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ AES256をサポートするには<option>--with-openssl</option>オプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ <xref linkend="sql-show-pool-cache">を強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>回帰テスト修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ いくつかの回帰テストを強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [7c836d6]
+ -->
+ <para>
+ 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-1-15">
<title>リリース 4.1.15</title>
<note>
<!-- doc/src/sgml/release-4.2.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-2-13">
+ <title>リリース 4.2.13</title>
+ <note>
+ <title>リリース日</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>変更点</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ マルチステートメントのクエリを判定するために、<literal>psqlscan</literal>のソースコードを<productname>Pgpool-II</productname>にインポートしました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>psqlscan</literal>は、<productname>PostgreSQL</productname>ソースツリー内のモジュールです。
+ これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。
+ したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii)
+ </para>
+ <para>
+ このコミットは、複数のステートメント (マルチステートメント) に関する<productname>Pgpool-II</productname>の長年の制限を排除しました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。
+ これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>不具合修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [21d2945]
+ -->
+ <para>
+ 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。
+ 以下にシナリオを示します。
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。
+ 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。
+ ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。
+ これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。
+ クライアントからsyncメッセージを受信し、PostgreSQLに転送します。
+ syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。
+ これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ musl libcを使用するシステムでのコンパイルエラーを修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ パッチはleimaohuiによって提供されました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。
+ この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、<productname>PostgreSQL</productname>のバージョンに応じて<literal>SELECT pg_current_wal_lsn()</literal>または<literal>SELECT pg_current_xlog_location()</literal>をスタンバイに送信し、当然エラーが発生していました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ <literal>DEALLOCATE</literal>による種類不一致エラーを修正しました。
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。
+ <itemizedlist>
+ <listitem>
+ <para>
+ ストリーミングレプリケーションモード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ロードバランスノードがプライマリ以外のノード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal>がマルチステートメントクエリで使用されている
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [bdf28d8]
+ -->
+ <para>
+ 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai)
+ </para>
+ <para>
+ gcc10を使用したタイムスタンプテストでエラーが発生していました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [6d15c38]
+ -->
+ <para>
+ <literal>show pool_version</literal>で行の説明が2回表示される問題を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>ドキュメント修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ <xref linkend="guc-wd-priority">の説明を追加しました。(Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ <literal>PREPARE/EXECUTE/DEALLOCATE</literal>に関する制限を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Pgpool-IIで<literal>-D</literal>オプションを使用する場合の注意点を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ 「RPMからのインストール」セクションを強化しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [b8c57ce]
+ -->
+ <para>
+ 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [b1f04c0]
+ -->
+ <para>
+ 「制限事項」セクションを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>SCRAM-SHA-256</literal>認証に関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ スナップショットアイソレーションモードに関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ AES256をサポートするには<option>--with-openssl</option>オプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ <xref linkend="sql-show-pool-cache">を強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>回帰テスト修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ いくつかの回帰テストを強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [7c836d6]
+ -->
+ <para>
+ 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-2-12">
<title>リリース 4.2.12</title>
<note>
<!-- doc/src/sgml/release-4.3.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-3-6">
+ <title>リリース 4.3.6</title>
+ <note>
+ <title>リリース日</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>変更点</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-25 [d9ad90b]
+ -->
+ <para>
+ マルチステートメントのクエリを判定するために、<literal>psqlscan</literal>のソースコードを<productname>Pgpool-II</productname>にインポートしました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>psqlscan</literal>は、<productname>PostgreSQL</productname>ソースツリー内のモジュールです。
+ これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。
+ したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [a9a6a3e]
+ 2023-02-12 [b7acec8]
+ -->
+ <para>
+ 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii)
+ </para>
+ <para>
+ このコミットは、複数のステートメント (マルチステートメント) に関する<productname>Pgpool-II</productname>の長年の制限を排除しました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。
+ これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>不具合修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [21d2945]
+ -->
+ <para>
+ 共有リレーションキャッシュで発生しうるデッドロックを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ユーザー定義関数がテーブルロックを取得する場合、拡張クエリプロトコルを使用して関数を呼び出すとデッドロックが発生する可能性がありました。
+ 以下にシナリオを示します。
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) セッション中クライアントはparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) セッションAのPgpool-IIはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) セッションAのPostgreSQLがexecuteを実行し、テーブルロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) セッションBで、クライアントは関数のparse、bind、executeリクエストをpgpoolに送信します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) セッションBのPgpoolはリクエストをPostgreSQLに転送します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (6) セッションBのPostgreSQLはbindを実行しますが、テーブルはセッションAのPostgreSQLによってすでにロックされており、ロックの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (7) セッションBのpgpoolはexecuteをPostgreSQLに転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索するためのセマフォを取得します。
+ 次に、do_queryを呼び出し、フラッシュメッセージをPostgreSQLに送信して、この時点までのPostgreSQLからの応答を取得します。
+ ただし、#6ではPostgreSQLがテーブルロックを待機しているため、pgpoolはバインド完了後のメッセージを待つ必要があります。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (8) セッションAのpgpoolがPostgreSQLにexecuteを転送した後、関数の揮発性をチェックするために共有リレーションキャッシュを検索しセマフォを取得しようとしましたが、セマフォはセッションBのpgpoolによってすでに取得されているため、セマフォの解放を待ちます。
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) セッションAとセッションBがお互いを待機するため、デッドロックが発生します。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ これを修正するには、do_query()を呼び出す前にセマフォを解放するようにpool_search_relcache()を変更しました(ただし、セマフォはdo_query()の後に取得します)。
+ これにより、上記#8のセッションAはセマフォを取得し、先に進むことができます。
+ クライアントからsyncメッセージを受信し、PostgreSQLに転送します。
+ syncを受信すると、ユーザ定義関数は実行を終了し、テーブルロックを解放します。
+ これにより、セッションBのPostgreSQLがテーブルロックを取得できるようになります。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-30 [e0d7b6b]
+ -->
+ <para>
+ <xref linkend="guc-prefer-lower-delay-standby">の不具合を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=798">bug 798</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ クライアントが<productname>Pgpool-II</productname>に接続すると、スタンバイの1つがロードバランシングノードとして選択されます。
+ セッションの継続中にスタンバイ遅延がdelay_thresholdを超えた場合、<varname>prefer_lower_delay_standby</varname>は遅延が最小のスタンバイノードを新しいロードバランシングノードとして選択し、ターゲットバックエンドをそのノードに設定します。
+ 残念ながら、SELECTクエリに書き込み機能などが含まれているかどうかを確認する前に決定が下されたため、<productname>Pgpool-II</productname>はスタンバイで実行できないSELECTを送信していました。
+ これを修正するために、<varname>prefer_lower_delay_standby</varname>の処理を書き込み関数等のチェック後に移動しました。
+ </para>
+ <para>
+ また、上記のケースを含めるように033.prefer_lower_standby_delay回帰テストも修正しました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ musl libcを使用するシステムでのコンパイルエラーを修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ パッチはleimaohuiによって提供されました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。
+ この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、<productname>PostgreSQL</productname>のバージョンに応じて<literal>SELECT pg_current_wal_lsn()</literal>または<literal>SELECT pg_current_xlog_location()</literal>をスタンバイに送信し、当然エラーが発生していました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ <literal>DEALLOCATE</literal>による種類不一致エラーを修正しました。
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。
+ <itemizedlist>
+ <listitem>
+ <para>
+ ストリーミングレプリケーションモード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ロードバランスノードがプライマリ以外のノード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal>がマルチステートメントクエリで使用されている
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [bdf28d8]
+ -->
+ <para>
+ 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai)
+ </para>
+ <para>
+ gcc10を使用したタイムスタンプテストでエラーが発生していました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [6d15c38]
+ -->
+ <para>
+ <literal>show pool_version</literal>で行の説明が2回表示される問題を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>ドキュメント修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ <xref linkend="guc-wd-priority">の説明を追加しました。(Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ <literal>PREPARE/EXECUTE/DEALLOCATE</literal>に関する制限を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Pgpool-IIで<literal>-D</literal>オプションを使用する場合の注意点を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ 「RPMからのインストール」セクションを強化しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [b8c57ce]
+ -->
+ <para>
+ 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [b1f04c0]
+ -->
+ <para>
+ 「制限事項」セクションを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>SCRAM-SHA-256</literal>認証に関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ スナップショットアイソレーションモードに関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-04 [f6b936b]
+ 2023-04-03 [7fc01ab]
+ -->
+ <para>
+ PostgreSQLノードのステータスが「unknown」と表示される場合の説明を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [b290c7d]
+ -->
+ <para>
+ <xref linkend="pcp-promote-node">実行時に、プロモートするターゲットノードが稼働中の必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ AES256をサポートするには<option>--with-openssl</option>オプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-15 [49440d7]
+ -->
+ <para>
+ 「2.8 insert_lockテーブルの作成」セクションを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ スナップショットアイソレーションモードについても言及する必要があったのに、ネイティブレプリケーションモードについてのみ言及していました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ <xref linkend="sql-show-pool-cache">を強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Test Tools</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-28 [79fa2e6]
+ -->
+ <para>
+ 設定ファイルの末尾にいくつかのパラメータを追加するように<command>pgpool_setup</command>を修正しました。(Bo Peng)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>回帰テスト修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ いくつかの回帰テストを強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [7c836d6]
+ -->
+ <para>
+ 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+</sect1>
+
<sect1 id="release-4-3-5">
<title>リリース 4.3.5</title>
<note>
<!-- doc/src/sgml/release-4.4.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-4-3">
+ <title>リリース 4.4.3</title>
+ <note>
+ <title>リリース日</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>変更点</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-25 [77f1e64]
+ -->
+ <para>
+ マルチステートメントのクエリを判定するために、<literal>psqlscan</literal>のソースコードを<productname>Pgpool-II</productname>にインポートしました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>psqlscan</literal>は、<productname>PostgreSQL</productname>ソースツリー内のモジュールです。
+ これは本質的にPostgreSQL SQLスキャナのサブセットですが、各SQLステートメントの終わりの検出に特化しています。
+ したがって、これを使用してクエリ文字列内のSQLステートメントの数をカウントできます。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-12 [5f912d3]
+ 2023-04-09 [7aca88c]
+ -->
+ <para>
+ 複数のステートメントを幅広く使用できるようにしました。 (Tatsuo Ishii)
+ </para>
+ <para>
+ このコミットは、複数のステートメント (マルチステートメント) に関する<productname>Pgpool-II</productname>の長年の制限を排除しました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [ad4d966]
+ 2023-03-30 [8ce860d]
+ 2023-03-28 [722d4bd]
+ -->
+ <para>
+ 内部クエリでスキーマ修飾を使用するように変更しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 関数やキャストなどの一部のオブジェクトは、「pg_catalog.」スキーマ修飾を使用していませんでした。
+ これによって直ちにセキュリティ上の懸念が生じるわけではありませんが、スキーマ修飾を使用することは常に良い習慣ですので、変更しました。
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>不具合修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-30 [eeea973]
+ -->
+ <para>
+ <xref linkend="guc-prefer-lower-delay-standby">の不具合を修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=798">bug 798</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ クライアントが<productname>Pgpool-II</productname>に接続すると、スタンバイの1つがロードバランシングノードとして選択されます。
+ セッションの継続中にスタンバイ遅延がdelay_thresholdを超えた場合、<varname>prefer_lower_delay_standby</varname>は遅延が最小のスタンバイノードを新しいロードバランシングノードとして選択し、ターゲットバックエンドをそのノードに設定します。
+ 残念ながら、SELECTクエリに書き込み機能などが含まれているかどうかを確認する前に決定が下されたため、<productname>Pgpool-II</productname>はスタンバイで実行できないSELECTを送信していました。
+ これを修正するために、<varname>prefer_lower_delay_standby</varname>の処理を書き込み関数等のチェック後に移動しました。
+ </para>
+ <para>
+ また、上記のケースを含めるように033.prefer_lower_standby_delay回帰テストも修正しました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [1618f0f]
+ -->
+ <para>
+ musl libcを使用するシステムでのコンパイルエラーを修正しました。(<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ パッチはleimaohuiによって提供されました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [33655c3]
+ -->
+ <para>
+ 複数のクエリキャッシュの不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [95ab912]
+ -->
+ <para>
+ 特殊なケースでsrワーカーが間違ったクエリをスタンバイサーバに送信する不具合を修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ ALWAYS_PRIMARYフラグが設定されている場合、PRIMARY_NODE_IDマクロは、プライマリがダウンしている場合でも、-1ではなくノードIDを返していました。
+ この場合、ストリーミングレプリケーション遅延をチェックするワーカープロセスは、<productname>PostgreSQL</productname>のバージョンに応じて<literal>SELECT pg_current_wal_lsn()</literal>または<literal>SELECT pg_current_xlog_location()</literal>をスタンバイに送信し、当然エラーが発生していました。
+ </para>
+ <para>
+ 議論: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [38225a7]
+ -->
+ <para>
+ <literal>DEALLOCATE</literal>による種類不一致エラーを修正しました。
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 以下の条件がすべて満たされた場合、種類不一致エラーが発生していました。
+ <itemizedlist>
+ <listitem>
+ <para>
+ ストリーミングレプリケーションモード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ロードバランスノードがプライマリ以外のノード
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal>がマルチステートメントクエリで使用されている
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [1c623f7]
+ -->
+ <para>
+ 回帰テストのコンパイルエラーを修正しました。(Takuma Hoshiai)
+ </para>
+ <para>
+ gcc10を使用したタイムスタンプテストでエラーが発生していました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-30 [93f5585]
+ -->
+ <para>
+ 共有relcacheをコミットする際に、より強力なロックを取得するように修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [1f503e1]
+ -->
+ <para>
+ <literal>show pool_version</literal>で行の説明が2回表示される問題を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>ドキュメント修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [171a57c]
+ -->
+ <para>
+ <xref linkend="guc-wd-priority">の説明を追加しました。(Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [a57cc11]
+ -->
+ <para>
+ <literal>PREPARE/EXECUTE/DEALLOCATE</literal>に関する制限を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [a9b4f30]
+ -->
+ <para>
+ Pgpool-IIで<literal>-D</literal>オプションを使用する場合の注意点を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [7a540cc]
+ -->
+ <para>
+ 「RPMからのインストール」セクションを強化しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [bbe5236]
+ -->
+ <para>
+ 「サーバの準備と運用」の章に「PostgreSQLデータベースのバックアップ」セクションを追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [eb338ff]
+ -->
+ <para>
+ 「Pgpool-II + Watchdogの構築の例」から「-D」起動オプションの設定を削除しました。(Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [336f50f]
+ -->
+ <para>
+ 「制限事項」セクションを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>SCRAM-SHA-256</literal>認証に関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ スナップショットアイソレーションモードに関する記述を追加
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-04 [33c6313]
+ 2023-04-03 [75e8870]
+ -->
+ <para>
+ PostgreSQLノードのステータスが「unknown」と表示される場合の説明を追加しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [366e8e6]
+ -->
+ <para>
+ <xref linkend="pcp-promote-node">実行時に、プロモートするターゲットノードが稼働中の必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [85994ce]
+ -->
+ <para>
+ AES256をサポートするには<option>--with-openssl</option>オプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [e813ed6]
+ -->
+ <para>
+ .pcppassを使用するには、pcpコマンドの-wオプションが必要であることを記載しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-15 [6bf97fd]
+ -->
+ <para>
+ 「2.8 insert_lockテーブルの作成」セクションを修正しました。(Tatsuo Ishii)
+ </para>
+ <para>
+ スナップショットアイソレーションモードについても言及する必要があったのに、ネイティブレプリケーションモードについてのみ言及していました。
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [6d39a7e]
+ -->
+ <para>
+ <xref linkend="sql-show-pool-cache">を強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>テストツール修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-28 [89b5129]
+ -->
+ <para>
+ 設定ファイルの末尾にいくつかのパラメータを追加するように<command>pgpool_setup</command>を修正しました。(Bo Peng)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>回帰テスト修正</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [baedc51]
+ -->
+ <para>
+ 071.execute_and_deallocate/test.shをリファクタリングしました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [8c3250e]
+ 2023-04-29 [2376ab7]
+ 2023-04-16 [c9e45b6]
+ 2023-04-15 [1e25fd2]
+ -->
+ <para>
+ いくつかの回帰テストを強化しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [89c0159]
+ -->
+ <para>
+ 時折発生する005.jdbcテストの失敗を修正しました。(Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-4-2">
<title>リリース 4.4.2</title>
<note>
<!-- doc/src/sgml/release-4.0.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-0-23">
+ <title>Release 4.0.23</title>
+ <note>
+ <title>Release Date</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>Changes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ Import <literal>psqlscan</literal> source code into <productname>Pgpool-II</productname> to judge multi statement query. (Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>Psqlscan</literal> is a module in the PostgreSQL source tree.
+ It is essentially subset of <productname>PostgreSQL</productname> 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.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ Allow to use multiple statements extensively. (Tatsuo Ishii)
+ </para>
+ <para>
+ This commit tries to eliminate pgpool's long standing limitations
+ regarding multiple statements (multi-statements).
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ Use schema qualification for internal queries. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Bug fixes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [e178e03]
+ -->
+ <para>
+ Fix possible dead lock with shared relation cache. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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:
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) In session A client sends parse, bind, execute request for the function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) <productname>Pgpool-II</productname> in session A forwards
+ the request to <productname>PostgreSQL</productname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) PostgreSQL in session A performs execute, resulting in a table lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) In session B client sends parse, bind, execute request for the
+ function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) Pgpool in session B forwards the request to PostgreSQL.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) Session A and session B wait for each other, resulting in a dead lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ Fix compile error on systems using musl libc.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Patch provided by leimaohui.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ Fix multiple query cache bug. (Tatsuo Ishii)
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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 <literal>SELECT pg_current_wal_lsn()</literal> or
+ <literal>SELECT pg_current_xlog_location()</literal>
+ depending on <productname>PostgreSQL</productname>'s version to
+ standby which of course raises an error.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Kind mimatch error occurs when conditions below are all met:
+ <itemizedlist>
+ <listitem>
+ <para>
+ streaming replication mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ load balance node is other than primary
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal> is used in a multi-statement query
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Documents</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ Add explanation for <xref linkend="guc-wd-priority">. (Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ Add restriction regarding <literal>PREPARE/EXECUTE/DEALLOCATE</literal>. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Add caution to use <literal>-D</literal> option with pgpool. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ Enhancing "Installation from RPM" section. (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ Mention that AES256 support requires <option>--with-openssl</option> option. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ Enhance <xref linkend="sql-show-pool-cache">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Regression Tests</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ Enhance regression tests. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [665ada7]
+ -->
+ <para>
+ Fix occasional 005.jdbc test failure. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-0-22">
<title>Release 4.0.22</title>
<note>
<!-- doc/src/sgml/release-4.1.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-1-16">
+ <title>Release 4.1.16</title>
+ <note>
+ <title>Release Date</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>Changes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ Import <literal>psqlscan</literal> source code into <productname>Pgpool-II</productname> to judge multi statement query. (Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>Psqlscan</literal> is a module in the PostgreSQL source tree.
+ It is essentially subset of <productname>PostgreSQL</productname> 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.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ Allow to use multiple statements extensively. (Tatsuo Ishii)
+ </para>
+ <para>
+ This commit tries to eliminate pgpool's long standing limitations
+ regarding multiple statements (multi-statements).
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ Use schema qualification for internal queries. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Bug fixes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [e178e03]
+ -->
+ <para>
+ Fix possible dead lock with shared relation cache. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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:
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) In session A client sends parse, bind, execute request for the function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) <productname>Pgpool-II</productname> in session A forwards
+ the request to <productname>PostgreSQL</productname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) PostgreSQL in session A performs execute, resulting in a table lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) In session B client sends parse, bind, execute request for the
+ function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) Pgpool in session B forwards the request to PostgreSQL.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) Session A and session B wait for each other, resulting in a dead lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ Fix compile error on systems using musl libc.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Patch provided by leimaohui.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ Fix multiple query cache bug. (Tatsuo Ishii)
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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 <literal>SELECT pg_current_wal_lsn()</literal> or
+ <literal>SELECT pg_current_xlog_location()</literal>
+ depending on <productname>PostgreSQL</productname>'s version to
+ standby which of course raises an error.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Kind mimatch error occurs when conditions below are all met:
+ <itemizedlist>
+ <listitem>
+ <para>
+ streaming replication mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ load balance node is other than primary
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal> is used in a multi-statement query
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Documents</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ Add explanation for <xref linkend="guc-wd-priority">. (Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ Add restriction regarding <literal>PREPARE/EXECUTE/DEALLOCATE</literal>. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Add caution to use <literal>-D</literal> option with pgpool. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ Enhancing "Installation from RPM" section. (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ Mention that AES256 support requires <option>--with-openssl</option> option. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ Enhance <xref linkend="sql-show-pool-cache">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Regression Tests</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ Enhance regression tests. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [665ada7]
+ -->
+ <para>
+ Fix occasional 005.jdbc test failure. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-1-15">
<title>Release 4.1.15</title>
<note>
<!-- doc/src/sgml/release-4.2.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-2-13">
+ <title>Release 4.2.13</title>
+ <note>
+ <title>Release Date</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>Changes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-18 [ea63203]
+ -->
+ <para>
+ Import <literal>psqlscan</literal> source code into <productname>Pgpool-II</productname> to judge multi statement query. (Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>Psqlscan</literal> is a module in the PostgreSQL source tree.
+ It is essentially subset of <productname>PostgreSQL</productname> 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.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [f6ab7be]
+ 2023-02-15 [4afb7d5]
+ -->
+ <para>
+ Allow to use multiple statements extensively. (Tatsuo Ishii)
+ </para>
+ <para>
+ This commit tries to eliminate pgpool's long standing limitations
+ regarding multiple statements (multi-statements).
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ Use schema qualification for internal queries. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Bug fixes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [e178e03]
+ -->
+ <para>
+ Fix possible dead lock with shared relation cache. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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:
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) In session A client sends parse, bind, execute request for the function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) <productname>Pgpool-II</productname> in session A forwards
+ the request to <productname>PostgreSQL</productname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) PostgreSQL in session A performs execute, resulting in a table lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) In session B client sends parse, bind, execute request for the
+ function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) Pgpool in session B forwards the request to PostgreSQL.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) Session A and session B wait for each other, resulting in a dead lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ Fix compile error on systems using musl libc.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Patch provided by leimaohui.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ Fix multiple query cache bug. (Tatsuo Ishii)
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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 <literal>SELECT pg_current_wal_lsn()</literal> or
+ <literal>SELECT pg_current_xlog_location()</literal>
+ depending on <productname>PostgreSQL</productname>'s version to
+ standby which of course raises an error.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Kind mimatch error occurs when conditions below are all met:
+ <itemizedlist>
+ <listitem>
+ <para>
+ streaming replication mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ load balance node is other than primary
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal> is used in a multi-statement query
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [bdf28d8]
+ -->
+ <para>
+ Fix compile error of regression test (Takuma Hoshiai)
+ </para>
+ <para>
+ The error occurred by timestamp test using gcc10.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [6d15c38]
+ -->
+ <para>
+ Fix that <literal>show pool_version</literal> shows row description twice. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Documents</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ Add explanation for <xref linkend="guc-wd-priority">. (Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ Add restriction regarding <literal>PREPARE/EXECUTE/DEALLOCATE</literal>. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Add caution to use <literal>-D</literal> option with pgpool. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ Enhancing "Installation from RPM" section. (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [b8c57ce]
+ -->
+ <para>
+ Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [b1f04c0]
+ -->
+ <para>
+ Fix restrictions section. (Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about <literal>SCRAM-SHA-256</literal> authentication
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about snapshot isolation mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ Mention that AES256 support requires <option>--with-openssl</option> option. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ Enhance <xref linkend="sql-show-pool-cache">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Regression Tests</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ Enhance regression tests. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [665ada7]
+ -->
+ <para>
+ Fix occasional 005.jdbc test failure. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-2-12">
<title>Release 4.2.12</title>
<note>
<!-- doc/src/sgml/release-4.3.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-3-6">
+ <title>Release 4.3.6</title>
+ <note>
+ <title>Release Date</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>Changes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-25 [d9ad90b]
+ -->
+ <para>
+ Import <literal>psqlscan</literal> source code into <productname>Pgpool-II</productname> to judge multi statement query. (Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>Psqlscan</literal> is a module in the PostgreSQL source tree.
+ It is essentially subset of <productname>PostgreSQL</productname> 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.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [a9a6a3e]
+ 2023-02-12 [b7acec8]
+ -->
+ <para>
+ Allow to use multiple statements extensively. (Tatsuo Ishii)
+ </para>
+ <para>
+ This commit tries to eliminate pgpool's long standing limitations
+ regarding multiple statements (multi-statements).
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [51e6174]
+ 2023-03-30 [a508d33]
+ 2023-03-28 [687f6c0]
+ -->
+ <para>
+ Use schema qualification for internal queries. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Bug fixes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-05-12 [21d2945]
+ -->
+ <para>
+ Fix possible dead lock with shared relation cache. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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:
+ <itemizedlist>
+ <listitem>
+ <para>
+ (1) In session A client sends parse, bind, execute request for the function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (2) <productname>Pgpool-II</productname> in session A forwards
+ the request to <productname>PostgreSQL</productname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (3) PostgreSQL in session A performs execute, resulting in a table lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (4) In session B client sends parse, bind, execute request for the
+ function to pgpool.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (5) Pgpool in session B forwards the request to PostgreSQL.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ (9) Session A and session B wait for each other, resulting in a dead lock.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-30 [e0d7b6b]
+ -->
+ <para>
+ Fix <xref linkend="guc-prefer-lower-delay-standby"> bug.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=798">bug 798</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 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, <varname>prefer_lower_delay_standby</varname> 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.,
+ <productname>Pgpool-II</productname>
+ happily sends SELECT which cannot be executed on standby. To fix
+ this, <varname>prefer_lower_delay_standby</varname> treatment is moved
+ after the writing function etc. check.
+ </para>
+ <para>
+ Also 033.prefer_lower_standby_delay regression test is modified to include the case above.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [f18b58a]
+ -->
+ <para>
+ Fix compile error on systems using musl libc.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Patch provided by leimaohui.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [8af1024]
+ -->
+ <para>
+ Fix multiple query cache bug. (Tatsuo Ishii)
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [ad05fa5]
+ -->
+ <para>
+ Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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 <literal>SELECT pg_current_wal_lsn()</literal> or
+ <literal>SELECT pg_current_xlog_location()</literal>
+ depending on <productname>PostgreSQL</productname>'s version to
+ standby which of course raises an error.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [633bdca]
+ -->
+ <para>
+ Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Kind mimatch error occurs when conditions below are all met:
+ <itemizedlist>
+ <listitem>
+ <para>
+ streaming replication mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ load balance node is other than primary
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal> is used in a multi-statement query
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [bdf28d8]
+ -->
+ <para>
+ Fix compile error of regression test (Takuma Hoshiai)
+ </para>
+ <para>
+ The error occurred by timestamp test using gcc10.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [6d15c38]
+ -->
+ <para>
+ Fix that <literal>show pool_version</literal> shows row description twice. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Documents</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [99b5db1]
+ -->
+ <para>
+ Add explanation for <xref linkend="guc-wd-priority">. (Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [8305fcc]
+ -->
+ <para>
+ Add restriction regarding <literal>PREPARE/EXECUTE/DEALLOCATE</literal>. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [c561d4d]
+ -->
+ <para>
+ Add caution to use <literal>-D</literal> option with pgpool. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [391c91e]
+ -->
+ <para>
+ Enhancing "Installation from RPM" section. (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [b8c57ce]
+ -->
+ <para>
+ Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [185a4a8]
+ -->
+ <para>
+ Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [b1f04c0]
+ -->
+ <para>
+ Fix restrictions section. (Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about <literal>SCRAM-SHA-256</literal> authentication
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about snapshot isolation mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-04 [f6b936b]
+ 2023-04-03 [7fc01ab]
+ -->
+ <para>
+ Add explanation when pg node status is shown as "unknown". (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [b290c7d]
+ -->
+ <para>
+ Mention that the target node to promote must be up and running when executing
+ <xref linkend="pcp-promote-node">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [30b2d9c]
+ -->
+ <para>
+ Mention that AES256 support requires <option>--with-openssl</option> option. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [be400b9]
+ -->
+ <para>
+ Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-15 [49440d7]
+ -->
+ <para>
+ Fix "2.8 Creating insert lock table" section. (Tatsuo Ishii)
+ </para>
+ <para>
+ It only referred to the native replication where it should have referred
+ to the snapshot isolation mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [4e3c8df]
+ -->
+ <para>
+ Enhance <xref linkend="sql-show-pool-cache">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Test Tools</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-28 [79fa2e6]
+ -->
+ <para>
+ Change <command>pgpool_setup</command> to append some parameters to the end of the configuration file. (Bo Peng)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Regression Tests</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [aa16a94]
+ -->
+ <para>
+ Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [5ab80d6]
+ 2023-04-29 [b73d6f0]
+ 2023-04-16 [d8d25d5]
+ 2023-04-15 [17f01a6]
+ -->
+ <para>
+ Enhance regression tests. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [7c836d6]
+ -->
+ <para>
+ Fix occasional 005.jdbc test failure. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-3-5">
<title>Release 4.3.5</title>
<note>
Increase timeout for regression test 077.invalid_failover_node. (Tatsuo Ishii)
</para>
</listitem>
-
-
-
</itemizedlist>
</sect2>
+
</sect1>
<sect1 id="release-4-3-1">
<sect2>
<title>Test tools</title>
<itemizedlist>
-
+
<listitem>
<!--
2022-02-06 [8e5e4942]
<!-- doc/src/sgml/release-4.4.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-4-4-3">
+ <title>Release 4.4.3</title>
+ <note>
+ <title>Release Date</title>
+ <simpara>2023-05-18</simpara>
+ </note>
+
+ <sect2>
+ <title>Changes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-25 [77f1e64]
+ -->
+ <para>
+ Import <literal>psqlscan</literal> source code into <productname>Pgpool-II</productname> to judge multi statement query. (Tatsuo Ishii)
+ </para>
+ <para>
+ <literal>Psqlscan</literal> is a module in the PostgreSQL source tree.
+ It is essentially subset of <productname>PostgreSQL</productname> 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.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/04291.html</ulink>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-12 [5f912d3]
+ 2023-04-09 [7aca88c]
+ -->
+ <para>
+ Allow to use multiple statements extensively. (Tatsuo Ishii)
+ </para>
+ <para>
+ This commit tries to eliminate pgpool's long standing limitations
+ regarding multiple statements (multi-statements).
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-16 [ad4d966]
+ 2023-03-30 [8ce860d]
+ 2023-03-28 [722d4bd]
+ -->
+ <para>
+ Use schema qualification for internal queries. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Bug fixes</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-30 [eeea973]
+ -->
+ <para>
+ Fix <xref linkend="guc-prefer-lower-delay-standby"> bug.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=798">bug 798</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ 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, <varname>prefer_lower_delay_standby</varname> 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.,
+ <productname>Pgpool-II</productname>
+ happily sends SELECT which cannot be executed on standby. To fix
+ this, <varname>prefer_lower_delay_standby</varname> treatment is moved
+ after the writing function etc. check.
+ </para>
+ <para>
+ Also modify 033.prefer_lower_standby_delay regression test to include the case above.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [1618f0f]
+ -->
+ <para>
+ Fix compile error on systems using musl libc.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=790">bug 790</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Patch provided by leimaohui.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [33655c3]
+ -->
+ <para>
+ Fix multiple query cache bug. (Tatsuo Ishii)
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-05 [95ab912]
+ -->
+ <para>
+ Fix sr worker to not send wrong query to standby server in corner case. (Tatsuo Ishii)
+ </para>
+ <para>
+ 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 <literal>SELECT pg_current_wal_lsn()</literal> or
+ <literal>SELECT pg_current_xlog_location()</literal>
+ depending on <productname>PostgreSQL</productname>'s version to
+ standby which of course raises an error.
+ </para>
+ <para>
+ Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html">https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html</ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-31 [38225a7]
+ -->
+ <para>
+ Fix kind mimatch error with <literal>DEALLOCATE</literal>.
+ (<ulink url="https://www.pgpool.net/mantisbt/view.php?id=780">bug 780</ulink>) (Tatsuo Ishii)
+ </para>
+ <para>
+ Kind mimatch error occurs when conditions below are all met:
+ <itemizedlist>
+ <listitem>
+ <para>
+ streaming replication mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ load balance node is other than primary
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>PREPARE</literal> is used in a multi-statement query
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-25 [1c623f7]
+ -->
+ <para>
+ Fix compile error of regression test (Takuma Hoshiai)
+ </para>
+ <para>
+ The error occurred by timestamp test using gcc10.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-01-30 [93f5585]
+ -->
+ <para>
+ Obtain stronger lock while commiting shared relcache. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-18 [1f503e1]
+ -->
+ <para>
+ Fix that <literal>show pool_version</literal> shows row description twice. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Documents</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-04-25 [171a57c]
+ -->
+ <para>
+ Add explanation for <xref linkend="guc-wd-priority">. (Chen Ningwei)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [a57cc11]
+ -->
+ <para>
+ Add restriction regarding <literal>PREPARE/EXECUTE/DEALLOCATE</literal>. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-19 [a9b4f30]
+ -->
+ <para>
+ Add caution to use <literal>-D</literal> option with pgpool. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-14 [7a540cc]
+ -->
+ <para>
+ Enhancing "Installation from RPM" section. (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [bbe5236]
+ -->
+ <para>
+ Add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-13 [eb338ff]
+ -->
+ <para>
+ Remove the configuration of "-D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example". (Bo Peng)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-09 [336f50f]
+ -->
+ <para>
+ Fix restrictions section. (Tatsuo Ishii)
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about <literal>SCRAM-SHA-256</literal> authentication
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add mention about snapshot isolation mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-04 [33c6313]
+ 2023-04-03 [75e8870]
+ -->
+ <para>
+ Add explanation when pg node status is shown as "unknown". (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-03-22 [366e8e6]
+ -->
+ <para>
+ Mention that the target node to promote must be up and running when executing
+ <xref linkend="pcp-promote-node">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-22 [85994ce]
+ -->
+ <para>
+ Mention that AES256 support requires <option>--with-openssl</option> option. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-21 [e813ed6]
+ -->
+ <para>
+ Explicitly stat that it is -w option of pcp command is needed to use .pcppass. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-15 [6bf97fd]
+ -->
+ <para>
+ Fix "2.8 Creating insert lock table" section. (Tatsuo Ishii)
+ </para>
+ <para>
+ It only referred to the native replication where it should have referred
+ to the snapshot isolation mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-02-01 [6d39a7e]
+ -->
+ <para>
+ Enhance <xref linkend="sql-show-pool-cache">. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Test Tools</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-03-28 [89b5129]
+ -->
+ <para>
+ Change <command>pgpool_setup</command> to append some parameters to the end of the configuration file. (Bo Peng)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Regression Tests</title>
+ <itemizedlist>
+ <listitem>
+ <!--
+ 2023-01-28 [baedc51]
+ -->
+ <para>
+ Refactor 071.execute_and_deallocate/test.sh. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-05-12 [8c3250e]
+ 2023-04-29 [2376ab7]
+ 2023-04-16 [c9e45b6]
+ 2023-04-15 [1e25fd2]
+ -->
+ <para>
+ Enhance regression tests. (Tatsuo Ishii)
+ </para>
+ </listitem>
+
+ <listitem>
+ <!--
+ 2023-04-06 [89c0159]
+ -->
+ <para>
+ Fix occasional 005.jdbc test failure. (Tatsuo Ishii)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
<sect1 id="release-4-4-2">
<title>Release 4.4.2</title>
<note>