diff options
| author | Taiki Koshino | 2025-11-14 01:39:06 +0000 |
|---|---|---|
| committer | Taiki Koshino | 2025-11-14 01:39:06 +0000 |
| commit | 41577d1afd745a06fcd55091bce7f38eca0c6ab4 (patch) | |
| tree | 1140a74783400e6b1bfa18ef62fe8228261950ce /doc/src | |
| parent | cbbf13bf98b32bcb7c7a53e61f4ba558d2211858 (diff) | |
Prepare Release Note.
Diffstat (limited to 'doc/src')
| -rw-r--r-- | doc/src/sgml/release-4.2.sgml | 227 | ||||
| -rw-r--r-- | doc/src/sgml/release-4.3.sgml | 227 | ||||
| -rw-r--r-- | doc/src/sgml/release-4.4.sgml | 243 | ||||
| -rw-r--r-- | doc/src/sgml/release-4.5.sgml | 243 | ||||
| -rw-r--r-- | doc/src/sgml/release-4.6.sgml | 338 |
5 files changed, 1278 insertions, 0 deletions
diff --git a/doc/src/sgml/release-4.2.sgml b/doc/src/sgml/release-4.2.sgml index 3d3972638..0a43b3481 100644 --- a/doc/src/sgml/release-4.2.sgml +++ b/doc/src/sgml/release-4.2.sgml @@ -1,6 +1,233 @@ <!-- doc/src/sgml/release-4.2.sgml --> <!-- See header comment in release.sgml about typical markup --> +<sect1 id="release-4-2-24"> + <title>Release 4.2.24</title> + <note> + <title>Release Date</title> + <simpara>2025-11-20</simpara> + </note> + + <sect2> + <title>Changes</title> + <itemizedlist> + <listitem> + <!-- + 2025-11-07 [4fabca331] + --> + <para> + Remove unnecessary <varname>application_name</varname> treatment. (Tatsuo Ishii) + </para> + <para> + A previous commit added a step to set <varname>application_name</varname> when reusing existing connections. + However, this is unnecessary because DISCARD ALL automatically resets <varname>application_name</varname>, + and <function>send_params()</function> already sends all necessary parameter status messages, including <varname>application_name</varname>, to the frontend. + Removing this redundant step also improves performance, particularly for backend nodes that are geographically distant. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink> + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Bug fixes</title> + <itemizedlist> + <listitem> + <!-- + 2025-10-03 [b84553bf0] + --> + <para> + Prevent watchdog split-brain scenario in some corner cases. (Tatsuo Ishii) + </para> + <para> + Watchdog uses both beacon messages and heartbeat for communication. + If the heartbeat is not yet active, missing beacon messages + for over 30 seconds can cause a split-brain scenario, + where the old leader remains active while a new leader is elected. + This change prevents two leaders from existing simultaneously by revoking the old leader. + When a node detects that it has missed beacon messages from the leader more than twice, + the leader is set to LOST and a new leader election is triggered via set_state(WD_JOINING). + </para> + </listitem> + + <listitem> + <!-- + 2025-10-03 [ef8ccb9e7] + --> + <para> + Prevent FATAL error when non-existing prepared statement is given. (Tatsuo Ishii) + </para> + <para> + Previously, <function>Bind()</function> raised a FATAL error when a non-existing prepared statement was used, unlike PostgreSQL. + This change changes <function>Bind()</function> to check for the statement's existence and send an ERROR message to the frontend if it does not exist. + Note that no log is written, as logging this is not currently possible. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-24 [59a359eef] + --> + <para> + Fix <xref linkend="pg-enc"> not working if both -p and -P are provided. (Tatsuo Ishii) + </para> + <para> + The original report showed that running pg_enc -p -P prompted for a password and encryption key, + but failed if the key was not provided. + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-18 [f20f7041c] + --> + <para> + Fix compiling issue on 32-bit environments. (Tatsuo Ishii) + </para> + <para> + On 32-bit systems, compiling src/parser/snprintf.c fails due to undefined functions <function>isnan()</function> and <function>isinf()</function>, which come from math.h. + This change includes math.h and also reorders the include files for clarity. + The file was originally imported from PostgreSQL, where math.h was already included. + This fix was provided via pull request: https://github.com/pgpool/pgpool2/pull/128 + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20250917.194736.353755422175293639.ishii%40postgresql.org">Compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-10 [0a6868d40] + --> + <para> + Fix safer directory deletion in Bash in recovery_1st_stage.sample. (Taiki Koshino) + </para> + <para> + Quote variables in rm commands to avoid accidental deletion: + <command>rm -rf "${DEST_NODE_PGDATA}"</command> + + If the variable is empty, rm could delete unexpected files or directories. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [441f338ab] + --> + <para> + Fix the compilation error when building without the <option>--with-memcached</option> option. (Tatsuo Ishii) + </para> + <para> + A compiler error occurred when configuring without <option>--with-memcached</option>. + The issue arose because the compiler could not determine that ptr would only be freed when memcached is enabled. + To fix this, the relevant code block was wrapped with #ifdef USE_MEMCACHED. + </para> + <para> + Problem reported by Bo Peng. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Documents</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-17 [1a975b539] + --> + <para> + Update doc about "Setting up PostgreSQL standby" in <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>. (Taiki Koshino) + </para> + <para> + Add a note that when setting up a standby without online recovery, do not write <varname>primary_conninfo</varname> to postgresql.auto.conf. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-22 [5bd535792] + --> + <para> + Fix watchdog_setup manual. (Tatsuo Ishii) + </para> + <para> + It mistakenly stated that heartbeart is not setup in watchdog_setup. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Regression Tests</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-30 [3ddbc64f1] + --> + <para> + Adapt 023.ssl_connection to PostgreSQL 18. (Tatsuo Ishii) + </para> + <para> + PostgreSQL 18 heavily changed psql's \conninfo output format, which + made the test fail because the test relies on \conninfo. This change + makes the test script aware the PostgreSQL version to fix the issue. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [b4043e6c3] + --> + <para> + Fix ruby script in 010.rewrite_timestamp. (Tatsuo Ishii) + </para> + <para> + The ruby script used "File.exists", which is said to be obsoleted in + newer version of Ruby. Replace it with "File.exist". + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [9c901e60a] + --> + <para> + Tweak timeout in 034 and 075 tests. (Tatsuo Ishii) + </para> + <para> + 034.promote_node and 075.detach_primary_left_down_node set the timeout + 60 seconds for finishing follow primary script. It turns out that + these timeout values are not long enough, and sometimes caused false + errors. So make them from 60 seconds to 120 seconds. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-27 [42b177614] + --> + <para> + Add ssl_ecdh_curve test to 023.ssl_connection. (Tatsuo Ishii) + </para> + <para> + 023.ssl_connection did not cover the test for ssl_ecdh_curve. This + commit tests it using bad ssl_ecdh_curve parameter to see if connection + between frontend and pgpool fails. + </para> + </listitem> + </itemizedlist> + </sect2> +</sect1> + <sect1 id="release-4-2-23"> <title>Release 4.2.23</title> <note> diff --git a/doc/src/sgml/release-4.3.sgml b/doc/src/sgml/release-4.3.sgml index 9181a5018..a9580cbc8 100644 --- a/doc/src/sgml/release-4.3.sgml +++ b/doc/src/sgml/release-4.3.sgml @@ -1,6 +1,233 @@ <!-- doc/src/sgml/release-4.3.sgml --> <!-- See header comment in release.sgml about typical markup --> +<sect1 id="release-4-3-17"> + <title>Release 4.3.17</title> + <note> + <title>Release Date</title> + <simpara>2025-11-20</simpara> + </note> + + <sect2> + <title>Changes</title> + <itemizedlist> + <listitem> + <!-- + 2025-11-07 [4fabca331] + --> + <para> + Remove unnecessary <varname>application_name</varname> treatment. (Tatsuo Ishii) + </para> + <para> + A previous commit added a step to set <varname>application_name</varname> when reusing existing connections. + However, this is unnecessary because DISCARD ALL automatically resets <varname>application_name</varname>, + and <function>send_params()</function> already sends all necessary parameter status messages, including <varname>application_name</varname>, to the frontend. + Removing this redundant step also improves performance, particularly for backend nodes that are geographically distant. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink> + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Bug fixes</title> + <itemizedlist> + <listitem> + <!-- + 2025-10-03 [b84553bf0] + --> + <para> + Prevent watchdog split-brain scenario in some corner cases. (Tatsuo Ishii) + </para> + <para> + Watchdog uses both beacon messages and heartbeat for communication. + If the heartbeat is not yet active, missing beacon messages + for over 30 seconds can cause a split-brain scenario, + where the old leader remains active while a new leader is elected. + This change prevents two leaders from existing simultaneously by revoking the old leader. + When a node detects that it has missed beacon messages from the leader more than twice, + the leader is set to LOST and a new leader election is triggered via set_state(WD_JOINING). + </para> + </listitem> + + <listitem> + <!-- + 2025-10-03 [ef8ccb9e7] + --> + <para> + Prevent FATAL error when non-existing prepared statement is given. (Tatsuo Ishii) + </para> + <para> + Previously, <function>Bind()</function> raised a FATAL error when a non-existing prepared statement was used, unlike PostgreSQL. + This change changes <function>Bind()</function> to check for the statement's existence and send an ERROR message to the frontend if it does not exist. + Note that no log is written, as logging this is not currently possible. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-24 [59a359eef] + --> + <para> + Fix <xref linkend="pg-enc"> not working if both -p and -P are provided. (Tatsuo Ishii) + </para> + <para> + The original report showed that running pg_enc -p -P prompted for a password and encryption key, + but failed if the key was not provided. + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-18 [f20f7041c] + --> + <para> + Fix compiling issue on 32-bit environments. (Tatsuo Ishii) + </para> + <para> + On 32-bit systems, compiling src/parser/snprintf.c fails due to undefined functions <function>isnan()</function> and <function>isinf()</function>, which come from math.h. + This change includes math.h and also reorders the include files for clarity. + The file was originally imported from PostgreSQL, where math.h was already included. + This fix was provided via pull request: https://github.com/pgpool/pgpool2/pull/128 + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20250917.194736.353755422175293639.ishii%40postgresql.org">Compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-10 [0a6868d40] + --> + <para> + Fix safer directory deletion in Bash in recovery_1st_stage.sample. (Taiki Koshino) + </para> + <para> + Quote variables in rm commands to avoid accidental deletion: + <command>rm -rf "${DEST_NODE_PGDATA}"</command> + + If the variable is empty, rm could delete unexpected files or directories. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [441f338ab] + --> + <para> + Fix the compilation error when building without the <option>--with-memcached</option> option. (Tatsuo Ishii) + </para> + <para> + A compiler error occurred when configuring without <option>--with-memcached</option>. + The issue arose because the compiler could not determine that ptr would only be freed when memcached is enabled. + To fix this, the relevant code block was wrapped with #ifdef USE_MEMCACHED. + </para> + <para> + Problem reported by Bo Peng. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Documents</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-17 [1a975b539] + --> + <para> + Update doc about "Setting up PostgreSQL standby" in <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>. (Taiki Koshino) + </para> + <para> + Add a note that when setting up a standby without online recovery, do not write <varname>primary_conninfo</varname> to postgresql.auto.conf. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-22 [5bd535792] + --> + <para> + Fix watchdog_setup manual. (Tatsuo Ishii) + </para> + <para> + It mistakenly stated that heartbeart is not setup in watchdog_setup. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Regression Tests</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-30 [3ddbc64f1] + --> + <para> + Adapt 023.ssl_connection to PostgreSQL 18. (Tatsuo Ishii) + </para> + <para> + PostgreSQL 18 heavily changed psql's \conninfo output format, which + made the test fail because the test relies on \conninfo. This change + makes the test script aware the PostgreSQL version to fix the issue. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [b4043e6c3] + --> + <para> + Fix ruby script in 010.rewrite_timestamp. (Tatsuo Ishii) + </para> + <para> + The ruby script used "File.exists", which is said to be obsoleted in + newer version of Ruby. Replace it with "File.exist". + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [9c901e60a] + --> + <para> + Tweak timeout in 034 and 075 tests. (Tatsuo Ishii) + </para> + <para> + 034.promote_node and 075.detach_primary_left_down_node set the timeout + 60 seconds for finishing follow primary script. It turns out that + these timeout values are not long enough, and sometimes caused false + errors. So make them from 60 seconds to 120 seconds. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-27 [42b177614] + --> + <para> + Add ssl_ecdh_curve test to 023.ssl_connection. (Tatsuo Ishii) + </para> + <para> + 023.ssl_connection did not cover the test for ssl_ecdh_curve. This + commit tests it using bad ssl_ecdh_curve parameter to see if connection + between frontend and pgpool fails. + </para> + </listitem> + </itemizedlist> + </sect2> +</sect1> + <sect1 id="release-4-3-16"> <title>Release 4.3.16</title> <note> diff --git a/doc/src/sgml/release-4.4.sgml b/doc/src/sgml/release-4.4.sgml index 8bf79e5f5..a08eea07d 100644 --- a/doc/src/sgml/release-4.4.sgml +++ b/doc/src/sgml/release-4.4.sgml @@ -1,6 +1,249 @@ <!-- doc/src/sgml/release-4.4.sgml --> <!-- See header comment in release.sgml about typical markup --> +<sect1 id="release-4-4-14"> + <title>Release 4.4.14</title> + <note> + <title>Release Date</title> + <simpara>2025-11-20</simpara> + </note> + + <sect2> + <title>Changes</title> + <itemizedlist> + <listitem> + <!-- + 2025-11-07 [4fabca331] + --> + <para> + Remove unnecessary <varname>application_name</varname> treatment. (Tatsuo Ishii) + </para> + <para> + A previous commit added a step to set <varname>application_name</varname> when reusing existing connections. + However, this is unnecessary because DISCARD ALL automatically resets <varname>application_name</varname>, + and <function>send_params()</function> already sends all necessary parameter status messages, including <varname>application_name</varname>, to the frontend. + Removing this redundant step also improves performance, particularly for backend nodes that are geographically distant. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink> + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Bug fixes</title> + <itemizedlist> + <listitem> + <!-- + 2025-10-03 [b84553bf0] + --> + <para> + Prevent watchdog split-brain scenario in some corner cases. (Tatsuo Ishii) + </para> + <para> + Watchdog uses both beacon messages and heartbeat for communication. + If the heartbeat is not yet active, missing beacon messages + for over 30 seconds can cause a split-brain scenario, + where the old leader remains active while a new leader is elected. + This change prevents two leaders from existing simultaneously by revoking the old leader. + When a node detects that it has missed beacon messages from the leader more than twice, + the leader is set to LOST and a new leader election is triggered via set_state(WD_JOINING). + </para> + </listitem> + + <listitem> + <!-- + 2025-10-03 [ef8ccb9e7] + --> + <para> + Prevent FATAL error when non-existing prepared statement is given. (Tatsuo Ishii) + </para> + <para> + Previously, <function>Bind()</function> raised a FATAL error when a non-existing prepared statement was used, unlike PostgreSQL. + This change changes <function>Bind()</function> to check for the statement's existence and send an ERROR message to the frontend if it does not exist. + Note that no log is written, as logging this is not currently possible. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-24 [59a359eef] + --> + <para> + Fix <xref linkend="pg-enc"> not working if both -p and -P are provided. (Tatsuo Ishii) + </para> + <para> + The original report showed that running pg_enc -p -P prompted for a password and encryption key, + but failed if the key was not provided. + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-18 [f20f7041c] + --> + <para> + Fix compiling issue on 32-bit environments. (Tatsuo Ishii) + </para> + <para> + On 32-bit systems, compiling src/parser/snprintf.c fails due to undefined functions <function>isnan()</function> and <function>isinf()</function>, which come from math.h. + This change includes math.h and also reorders the include files for clarity. + The file was originally imported from PostgreSQL, where math.h was already included. + This fix was provided via pull request: https://github.com/pgpool/pgpool2/pull/128 + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20250917.194736.353755422175293639.ishii%40postgresql.org">Compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-10 [0a6868d40] + --> + <para> + Fix safer directory deletion in Bash in recovery_1st_stage.sample. (Taiki Koshino) + </para> + <para> + Quote variables in rm commands to avoid accidental deletion: + <command>rm -rf "${DEST_NODE_PGDATA}"</command> + + If the variable is empty, rm could delete unexpected files or directories. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [441f338ab] + --> + <para> + Fix the compilation error when building without the <option>--with-memcached</option> option. (Tatsuo Ishii) + </para> + <para> + A compiler error occurred when configuring without <option>--with-memcached</option>. + The issue arose because the compiler could not determine that ptr would only be freed when memcached is enabled. + To fix this, the relevant code block was wrapped with #ifdef USE_MEMCACHED. + </para> + <para> + Problem reported by Bo Peng. + </para> + </listitem> + <listitem> + <!-- + 2025-09-04 [9e0324575] + --> + <para> + Fix query cache lock file handling. (Tatsuo Ishii) + </para> + <para> + The query cache module creates a lock file in <varname>logdir</varname> for concurrency control, + but two bugs existed: the main pgpool process could create a stray "QUERY_CACHE_LOCK_FILE", + and the lock file was not removed on shutdown. This change fixes both issues. + </para> + <para> + Problem reported and analyzed by Bo Peng. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Documents</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-17 [1a975b539] + --> + <para> + Update doc about "Setting up PostgreSQL standby" in <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>. (Taiki Koshino) + </para> + <para> + Add a note that when setting up a standby without online recovery, do not write <varname>primary_conninfo</varname> to postgresql.auto.conf. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-22 [5bd535792] + --> + <para> + Fix watchdog_setup manual. (Tatsuo Ishii) + </para> + <para> + It mistakenly stated that heartbeart is not setup in watchdog_setup. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Regression Tests</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-30 [3ddbc64f1] + --> + <para> + Adapt 023.ssl_connection to PostgreSQL 18. (Tatsuo Ishii) + </para> + <para> + PostgreSQL 18 heavily changed psql's \conninfo output format, which + made the test fail because the test relies on \conninfo. This change + makes the test script aware the PostgreSQL version to fix the issue. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [b4043e6c3] + --> + <para> + Fix ruby script in 010.rewrite_timestamp. (Tatsuo Ishii) + </para> + <para> + The ruby script used "File.exists", which is said to be obsoleted in + newer version of Ruby. Replace it with "File.exist". + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [9c901e60a] + --> + <para> + Tweak timeout in 034 and 075 tests. (Tatsuo Ishii) + </para> + <para> + 034.promote_node and 075.detach_primary_left_down_node set the timeout + 60 seconds for finishing follow primary script. It turns out that + these timeout values are not long enough, and sometimes caused false + errors. So make them from 60 seconds to 120 seconds. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-27 [42b177614] + --> + <para> + Add ssl_ecdh_curve test to 023.ssl_connection. (Tatsuo Ishii) + </para> + <para> + 023.ssl_connection did not cover the test for ssl_ecdh_curve. This + commit tests it using bad ssl_ecdh_curve parameter to see if connection + between frontend and pgpool fails. + </para> + </listitem> + </itemizedlist> + </sect2> +</sect1> + <sect1 id="release-4-4-13"> <title>Release 4.4.13</title> <note> diff --git a/doc/src/sgml/release-4.5.sgml b/doc/src/sgml/release-4.5.sgml index e60bd966a..ca789f484 100644 --- a/doc/src/sgml/release-4.5.sgml +++ b/doc/src/sgml/release-4.5.sgml @@ -1,3 +1,246 @@ +<sect1 id="release-4-5-9"> + <title>Release 4.5.9</title> + <note> + <title>Release Date</title> + <simpara>2025-11-20</simpara> + </note> + + <sect2> + <title>Changes</title> + <itemizedlist> + <listitem> + <!-- + 2025-11-07 [4fabca331] + --> + <para> + Remove unnecessary <varname>application_name</varname> treatment. (Tatsuo Ishii) + </para> + <para> + A previous commit added a step to set <varname>application_name</varname> when reusing existing connections. + However, this is unnecessary because DISCARD ALL automatically resets <varname>application_name</varname>, + and <function>send_params()</function> already sends all necessary parameter status messages, including <varname>application_name</varname>, to the frontend. + Removing this redundant step also improves performance, particularly for backend nodes that are geographically distant. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink> + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Bug fixes</title> + <itemizedlist> + <listitem> + <!-- + 2025-10-03 [b84553bf0] + --> + <para> + Prevent watchdog split-brain scenario in some corner cases. (Tatsuo Ishii) + </para> + <para> + Watchdog uses both beacon messages and heartbeat for communication. + If the heartbeat is not yet active, missing beacon messages + for over 30 seconds can cause a split-brain scenario, + where the old leader remains active while a new leader is elected. + This change prevents two leaders from existing simultaneously by revoking the old leader. + When a node detects that it has missed beacon messages from the leader more than twice, + the leader is set to LOST and a new leader election is triggered via set_state(WD_JOINING). + </para> + </listitem> + + <listitem> + <!-- + 2025-10-03 [ef8ccb9e7] + --> + <para> + Prevent FATAL error when non-existing prepared statement is given. (Tatsuo Ishii) + </para> + <para> + Previously, <function>Bind()</function> raised a FATAL error when a non-existing prepared statement was used, unlike PostgreSQL. + This change changes <function>Bind()</function> to check for the statement's existence and send an ERROR message to the frontend if it does not exist. + Note that no log is written, as logging this is not currently possible. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-24 [59a359eef] + --> + <para> + Fix <xref linkend="pg-enc"> not working if both -p and -P are provided. (Tatsuo Ishii) + </para> + <para> + The original report showed that running pg_enc -p -P prompted for a password and encryption key, + but failed if the key was not provided. + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-18 [f20f7041c] + --> + <para> + Fix compiling issue on 32-bit environments. (Tatsuo Ishii) + </para> + <para> + On 32-bit systems, compiling src/parser/snprintf.c fails due to undefined functions <function>isnan()</function> and <function>isinf()</function>, which come from math.h. + This change includes math.h and also reorders the include files for clarity. + The file was originally imported from PostgreSQL, where math.h was already included. + This fix was provided via pull request: https://github.com/pgpool/pgpool2/pull/128 + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20250917.194736.353755422175293639.ishii%40postgresql.org">Compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-10 [0a6868d40] + --> + <para> + Fix safer directory deletion in Bash in recovery_1st_stage.sample. (Taiki Koshino) + </para> + <para> + Quote variables in rm commands to avoid accidental deletion: + <command>rm -rf "${DEST_NODE_PGDATA}"</command> + + If the variable is empty, rm could delete unexpected files or directories. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [441f338ab] + --> + <para> + Fix the compilation error when building without the <option>--with-memcached</option> option. (Tatsuo Ishii) + </para> + <para> + A compiler error occurred when configuring without <option>--with-memcached</option>. + The issue arose because the compiler could not determine that ptr would only be freed when memcached is enabled. + To fix this, the relevant code block was wrapped with #ifdef USE_MEMCACHED. + </para> + <para> + Problem reported by Bo Peng. + </para> + </listitem> + <listitem> + <!-- + 2025-09-04 [9e0324575] + --> + <para> + Fix query cache lock file handling. (Tatsuo Ishii) + </para> + <para> + The query cache module creates a lock file in <varname>logdir</varname> for concurrency control, + but two bugs existed: the main pgpool process could create a stray "QUERY_CACHE_LOCK_FILE", + and the lock file was not removed on shutdown. This change fixes both issues. + </para> + <para> + Problem reported and analyzed by Bo Peng. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Documents</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-17 [1a975b539] + --> + <para> + Update doc about "Setting up PostgreSQL standby" in <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>. (Taiki Koshino) + </para> + <para> + Add a note that when setting up a standby without online recovery, do not write <varname>primary_conninfo</varname> to postgresql.auto.conf. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-22 [5bd535792] + --> + <para> + Fix watchdog_setup manual. (Tatsuo Ishii) + </para> + <para> + It mistakenly stated that heartbeart is not setup in watchdog_setup. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Regression Tests</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-30 [3ddbc64f1] + --> + <para> + Adapt 023.ssl_connection to PostgreSQL 18. (Tatsuo Ishii) + </para> + <para> + PostgreSQL 18 heavily changed psql's \conninfo output format, which + made the test fail because the test relies on \conninfo. This change + makes the test script aware the PostgreSQL version to fix the issue. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [b4043e6c3] + --> + <para> + Fix ruby script in 010.rewrite_timestamp. (Tatsuo Ishii) + </para> + <para> + The ruby script used "File.exists", which is said to be obsoleted in + newer version of Ruby. Replace it with "File.exist". + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [9c901e60a] + --> + <para> + Tweak timeout in 034 and 075 tests. (Tatsuo Ishii) + </para> + <para> + 034.promote_node and 075.detach_primary_left_down_node set the timeout + 60 seconds for finishing follow primary script. It turns out that + these timeout values are not long enough, and sometimes caused false + errors. So make them from 60 seconds to 120 seconds. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-27 [42b177614] + --> + <para> + Add ssl_ecdh_curve test to 023.ssl_connection. (Tatsuo Ishii) + </para> + <para> + 023.ssl_connection did not cover the test for ssl_ecdh_curve. This + commit tests it using bad ssl_ecdh_curve parameter to see if connection + between frontend and pgpool fails. + </para> + </listitem> + </itemizedlist> + </sect2> +</sect1> + <sect1 id="release-4-5-8"> <title>Release 4.5.8</title> <note> diff --git a/doc/src/sgml/release-4.6.sgml b/doc/src/sgml/release-4.6.sgml index 2f5514974..8d9d9c1cf 100644 --- a/doc/src/sgml/release-4.6.sgml +++ b/doc/src/sgml/release-4.6.sgml @@ -1,3 +1,341 @@ +<sect1 id="release-4-6-4"> + <title>Release 4.6.4</title> + <note> + <title>Release Date</title> + <simpara>2025-11-20</simpara> + </note> + + <sect2> + <title>Changes</title> + <itemizedlist> + <listitem> + <!-- + 2025-11-07 [4fabca331] + --> + <para> + Remove unnecessary <varname>application_name</varname> treatment. (Tatsuo Ishii) + </para> + <para> + A previous commit added a step to set <varname>application_name</varname> when reusing existing connections. + However, this is unnecessary because DISCARD ALL automatically resets <varname>application_name</varname>, + and <function>send_params()</function> already sends all necessary parameter status messages, including <varname>application_name</varname>, to the frontend. + Removing this redundant step also improves performance, particularly for backend nodes that are geographically distant. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-10-09 [f91abf862] + --> + <para> + Make time calculations always long long. (Tatsuo Ishii) + </para> + <para> + Previously, <productname>Pgpool-II</productname> treated time_t as a simple long, which caused compile-time warnings on some systems, + such as OpenBSD, where time_t is __int64. This change upcasts the calculations to long long, + preventing truncation and ensuring pgpool continues to work correctly after Y2038 on 64-bit clean time_t systems. + Additionally, json_get_long_value_for_key has been changed to json_get_llong_value_for_key + with a long long parameter, aligning it with _json_value's int64 type. This improves + integer handling on 32-bit platforms and helps avoid potential integer overflow issues. + </para> + <para> + Problem analyzed by Tatsuo Ishii and Gyorgy Sarvari. + </para> + <para> + Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-May/004584.html">Fix time_t warnings on OpenBSD</ulink> + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20251003.211957.2067537305399895611.ishii%40postgresql.org">Fix time_t warnings on OpenBSD</ulink> + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/128">fix compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-31 [dced45a52] + --> + <para> + Allow to compile against gcc 15 (C23). (Tatsuo Ishii) + </para> + <para> + This change includes several fixes to compile <productname>Pgpool-II</productname> on Fedora 42 with gcc 15 (C23). + It updates pool_type.h to use stdbool.h and defines TRUE/FALSE as (bool) 1/0, aligning with C99 standards. + Function pointer arguments were corrected to match their prototypes, + and <function>pool_create_relcache()</function>'s prototype was updated. + Calls to <function>walker()</function> in <function>raw_expression_tree_walker()</function> were adjusted to cast the first argument to (Node *) via the WALK macro. + Note that OpenSSL warnings on Fedora 42 remain and will be addressed in the future. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/124">4.6.X build issue against GCC 15</ulink> + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Bug fixes</title> + <itemizedlist> + <listitem> + <!-- + 2025-10-03 [b84553bf0] + --> + <para> + Prevent watchdog split-brain scenario in some corner cases. (Tatsuo Ishii) + </para> + <para> + Watchdog uses both beacon messages and heartbeat for communication. + If the heartbeat is not yet active, missing beacon messages + for over 30 seconds can cause a split-brain scenario, + where the old leader remains active while a new leader is elected. + This change prevents two leaders from existing simultaneously by revoking the old leader. + When a node detects that it has missed beacon messages from the leader more than twice, + the leader is set to LOST and a new leader election is triggered via set_state(WD_JOINING). + </para> + </listitem> + + <listitem> + <!-- + 2025-10-03 [ef8ccb9e7] + --> + <para> + Prevent FATAL error when non-existing prepared statement is given. (Tatsuo Ishii) + </para> + <para> + Previously, <function>Bind()</function> raised a FATAL error when a non-existing prepared statement was used, unlike PostgreSQL. + This change changes <function>Bind()</function> to check for the statement's existence and send an ERROR message to the frontend if it does not exist. + Note that no log is written, as logging this is not currently possible. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-24 [59a359eef] + --> + <para> + Fix <xref linkend="pg-enc"> not working if both -p and -P are provided. (Tatsuo Ishii) + </para> + <para> + The original report showed that running pg_enc -p -P prompted for a password and encryption key, + but failed if the key was not provided. + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-18 [f20f7041c] + --> + <para> + Fix compiling issue on 32-bit environments. (Tatsuo Ishii) + </para> + <para> + On 32-bit systems, compiling src/parser/snprintf.c fails due to undefined functions <function>isnan()</function> and <function>isinf()</function>, which come from math.h. + This change includes math.h and also reorders the include files for clarity. + The file was originally imported from PostgreSQL, where math.h was already included. + This fix was provided via pull request: https://github.com/pgpool/pgpool2/pull/128 + </para> + <para> + Discussion: <ulink url="https://www.postgresql.org/message-id/20250917.194736.353755422175293639.ishii%40postgresql.org">Compiling issues for 32-bit targets</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-09-10 [0a6868d40] + --> + <para> + Fix safer directory deletion in Bash in recovery_1st_stage.sample. (Taiki Koshino) + </para> + <para> + Quote variables in rm commands to avoid accidental deletion: + <command>rm -rf "${DEST_NODE_PGDATA}"</command> + + If the variable is empty, rm could delete unexpected files or directories. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [1793db95f] + --> + <para> + Fix point less warning in query cache invalidation. (Tatsuo Ishii) + </para> + <para> + When memcached support is disabled, query cache invalidation by query + emitted point less warning. This makes 006.memcached regression test + failed. + </para> + </listitem> + + <listitem> + <!-- + 2025-09-05 [441f338ab] + --> + <para> + Fix the compilation error when building without the <option>--with-memcached</option> option. (Tatsuo Ishii) + </para> + <para> + A compiler error occurred when configuring without <option>--with-memcached</option>. + The issue arose because the compiler could not determine that ptr would only be freed when memcached is enabled. + To fix this, the relevant code block was wrapped with #ifdef USE_MEMCACHED. + </para> + <para> + Problem reported by Bo Peng. + </para> + </listitem> + <listitem> + <!-- + 2025-09-04 [9e0324575] + --> + <para> + Fix query cache lock file handling. (Tatsuo Ishii) + </para> + <para> + The query cache module creates a lock file in <varname>logdir</varname> for concurrency control, + but two bugs existed: the main pgpool process could create a stray "QUERY_CACHE_LOCK_FILE", + and the lock file was not removed on shutdown. This change fixes both issues. + </para> + <para> + Problem reported and analyzed by Bo Peng. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Documents</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-17 [1a975b539] + --> + <para> + Update doc about "Setting up PostgreSQL standby" in <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>. (Taiki Koshino) + </para> + <para> + Add a note that when setting up a standby without online recovery, do not write <varname>primary_conninfo</varname> to postgresql.auto.conf. + </para> + <para> + Discussion: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf</ulink> + </para> + </listitem> + + <listitem> + <!-- + 2025-08-22 [5bd535792] + --> + <para> + Fix watchdog_setup manual. (Tatsuo Ishii) + </para> + <para> + It mistakenly stated that heartbeart is not setup in watchdog_setup. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Regression Tests</title> + <itemizedlist> + <listitem> + <!-- + 2025-09-30 [3ddbc64f1] + --> + <para> + Adapt 023.ssl_connection to PostgreSQL 18. (Tatsuo Ishii) + </para> + <para> + PostgreSQL 18 heavily changed psql's \conninfo output format, which + made the test fail because the test relies on \conninfo. This change + makes the test script aware the PostgreSQL version to fix the issue. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-31 [3897b7afd] + --> + <para> + Unbreak 039.log_backend_messages. (Tatsuo Ishii) + </para> + <para> + Commit 8ff2b9f6e mistakenly put synchronous commit parameters in + pgpool.conf. Unbreak the test by putting the parameters in + postgresql.conf. Also check if clustering mode is streaming + replication. Because that parameters causes suspends PostgreSQL if + clustering mode is other than streaming replication. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-31 [0f19fc60a] + --> + <para> + Stabilize 039.log_backend_messages test. (Tatsuo Ishii) + </para> + <para> + In the test a query is sent to standby server right after rows are + inserted into primary server. Due to a replication lag, the inserted + rows could not be found on the standby in slower machines. This + change tries to fix the issue by using synchronous replication with + <varname>remote_apply</varname> option. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [b4043e6c3] + --> + <para> + Fix ruby script in 010.rewrite_timestamp. (Tatsuo Ishii) + </para> + <para> + The ruby script used "File.exists", which is said to be obsoleted in + newer version of Ruby. Replace it with "File.exist". + </para> + </listitem> + + <listitem> + <!-- + 2025-08-29 [9c901e60a] + --> + <para> + Tweak timeout in 034 and 075 tests. (Tatsuo Ishii) + </para> + <para> + 034.promote_node and 075.detach_primary_left_down_node set the timeout + 60 seconds for finishing follow primary script. It turns out that + these timeout values are not long enough, and sometimes caused false + errors. So make them from 60 seconds to 120 seconds. + </para> + </listitem> + + <listitem> + <!-- + 2025-08-27 [42b177614] + --> + <para> + Add ssl_ecdh_curve test to 023.ssl_connection. (Tatsuo Ishii) + </para> + <para> + 023.ssl_connection did not cover the test for ssl_ecdh_curve. This + commit tests it using bad ssl_ecdh_curve parameter to see if connection + between frontend and pgpool fails. + </para> + </listitem> + </itemizedlist> + </sect2> +</sect1> + <sect1 id="release-4-6-3"> <title>Release 4.6.3</title> <note> |
