Bo Peng [Wed, 29 Nov 2023 02:28:35 +0000 (11:28 +0900)]
Update "8.2. Pgpool-II + Watchdog Setup Example" to mention that pcp_listen_addresses = '*' is required to accept all incoming connections.
Bo Peng [Wed, 29 Nov 2023 02:23:50 +0000 (11:23 +0900)]
Comment out "hostname0" in pgpool.conf.
Bo Peng [Fri, 17 Nov 2023 03:46:54 +0000 (12:46 +0900)]
Modify the replication slot name conversion in sample scripts to add support for uppercase hostname.
Patch in created by Sheikh Wasiu Al Hasib and modified by Be Peng.
Tatsuo Ishii [Fri, 6 Oct 2023 21:15:30 +0000 (06:15 +0900)]
Fix breakage in making pgpool_adm.
Since commit
f54efc50 "Fix compiler warnings regarding
DEFAULT_PGSOCKET_DIR.", src/sql/pgpool_adm cannot be compiled with
error:
In file included from pgpool_adm.c:35:0:
../../include/pcp/libpcp_ext.h:32:37: fatal error: parser/pg_config_manual.h: No such file or directory
#include "parser/pg_config_manual.h"
Since pgpool_adm is a PostgreSQL extension module, it should not
include Pgpool-II's pg_config_manual.h. Rather than fixing pgpool_adm
to allow to include pgpool's pg_config_manual.h, modify libpcp_ext.h
so that it does not include pgpool's pg_config_manual.h if PGPOOL_ADM
is defined.
Bo Peng [Fri, 6 Oct 2023 13:47:18 +0000 (22:47 +0900)]
Enhance error messages in escalation.sh.sample.
Bo Peng [Fri, 6 Oct 2023 13:31:33 +0000 (22:31 +0900)]
Fix document typo.
Bo Peng [Fri, 6 Oct 2023 13:30:23 +0000 (22:30 +0900)]
Add SSH timeout in escalation.sh.sample.
Tatsuo Ishii [Wed, 4 Oct 2023 10:24:10 +0000 (19:24 +0900)]
Remove unnecessary logging line.
Debug message was accidentally left.
Tatsuo Ishii [Tue, 3 Oct 2023 01:46:46 +0000 (10:46 +0900)]
Fix compiler warnings regarding DEFAULT_PGSOCKET_DIR.
Commit
3bd6941f accidentally add "#include "pg_config_manual.h", which
should have been "#include parser/pg_config_manual.h". This caused to
include parser/pg_config_manual.h and pg_config_manual.h, which caused
compiler warning:
../src/include/parser/pg_config_manual.h:227:0: warning: "DEFAULT_PGSOCKET_DIR" redefined [enabled by default]
#define DEFAULT_PGSOCKET_DIR "/tmp"
If DEFAULT_PGSOCKET_DIR value was different among these header files.
Reported by: Peng Bo.
Tatsuo Ishii [Thu, 28 Sep 2023 22:46:05 +0000 (07:46 +0900)]
Test: add test case 080 for commit "Fix Describe() so that it does not abort with portal created by DECLARE."
Tatsuo Ishii [Thu, 28 Sep 2023 22:29:28 +0000 (07:29 +0900)]
Fix Describe() so that it does not abort with portal created by DECLARE.
When DECLARE foo CURSOR FOR is executed, a portal named "foo" is
automatically created by PostgreSQL. As the portal is not managed by
Pgpool-II, "Describe foo" message failed with "unable to execute
Describe. unable to get the bind message" error.
To fix this, make Describe() creates a dummy write query context so
that the describe message is sent to primary (streaming replication
mode) or all nodes (replication/snapshot isolation mode).
Problem analysis by Heather Lapointe.
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2023-September/008995.html
Tatsuo Ishii [Wed, 20 Sep 2023 06:07:26 +0000 (15:07 +0900)]
Remove duplication definitions of NAMEDATALEN.
The definition for NAMEDATALEN is now in
src/include/pg_config_manual.h only. Also replace POOL_NAMEDATALEN
with NAMEDATALEN in src/utils/pool_select_walker.c.
I tried to eliminate copying pool_config_manual.h from PostgreSQL but
it seems it is a little bit difficult to do that at this moment.
There are some definitions like pg_attribute_format_arg were added to
it.
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-August/004366.html
Tatsuo Ishii [Mon, 21 Aug 2023 07:05:40 +0000 (16:05 +0900)]
Doc: enhance follow primary command manual.
Mention that it is necessary to run pcp_attach_node if
pcp_recovery_node is not used.
Tatsuo Ishii [Mon, 21 Aug 2023 02:02:09 +0000 (11:02 +0900)]
Test: enhance pgpool_setup.
Enhance failover script generation and follow primary script
generation so that they create better logging.
Bo Peng [Wed, 16 Aug 2023 05:40:46 +0000 (14:40 +0900)]
Prepare 4.2.14
Bo Peng [Wed, 16 Aug 2023 05:37:15 +0000 (14:37 +0900)]
Doc: Bump version to 4.2.14
Chen Ningwei [Tue, 15 Aug 2023 03:07:13 +0000 (12:07 +0900)]
Doc: add release notes.
Tatsuo Ishii [Wed, 9 Aug 2023 02:10:28 +0000 (11:10 +0900)]
Fix covery warning.
Fix query cache module assigned time_t value to int32 variable. Change
the variable type to int64. Per Coverity. Also use difftime() to
calculate time_t difference. This is a recommended practice.
https://www.jpcert.or.jp/sc-rules/c-msc05-c.html
Bo Peng [Fri, 4 Aug 2023 05:13:05 +0000 (14:13 +0900)]
Fix find_primary_node_repeatedly doesn't terminate within search_primary_node_timeout.
Bo Peng [Thu, 3 Aug 2023 07:57:45 +0000 (16:57 +0900)]
Doc: fix the missing "logger" application name.
Tatsuo Ishii [Tue, 1 Aug 2023 08:20:49 +0000 (17:20 +0900)]
Remove non-standard "//" comments.
Tatsuo Ishii [Tue, 1 Aug 2023 02:49:26 +0000 (11:49 +0900)]
Doc: clarify the meaning of stop mode.
Bo Peng [Wed, 26 Jul 2023 03:55:06 +0000 (12:55 +0900)]
Doc: remove the incorrect information from release note 4.2.10.
Remove "Fix pgpool_recovery extension script. (Tatsuo Ishii)" from release note 4.2.10.
Muhammad Usama [Sun, 23 Jul 2023 17:34:05 +0000 (22:34 +0500)]
Install system exit callback only after initialization of shared memory.
When the on-exit callback gets called because of a failure to acquire
shared memory. The cleanup function can produce a segfault while accessing
process_info, that lives in shared memory.
Although we can also fix this by bailing out from the exit callback when
process_info is NULL but installing the function after successful initialization
of shared memory is a better approach as the rest of the system always assumes
the process_info can never be NULL, and also, there is nothing to
clean up before child processes are spawned.
Tatsuo Ishii [Mon, 17 Jul 2023 10:27:43 +0000 (19:27 +0900)]
Fix crash when v2 protocol is used.
When read_kind_from_backend() accumulates statistics data, it was not
prepared for v2 protocol case.
Bug report and patch from MCanivez.
https://www.pgpool.net/mantisbt/view.php?id=807
Slightly modified by me.
Tatsuo Ishii [Wed, 12 Jul 2023 07:35:46 +0000 (16:35 +0900)]
Fix PREPARE in multi-statement case.
If multi-statement query includes PREPARE in the second or latter
position, and subsequent bind message uses the prepared statement, it
fails with "unable to bind" error because the prepared statement is not
saved in sent messages.
To fix this if such a case found after parsing the statement, create a
query context for the named statement and add it to the sent message
list.
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2023-July/008931.html
For this new regression test 079..multi_prepare is added.
Bo Peng [Tue, 11 Jul 2023 06:10:20 +0000 (15:10 +0900)]
Doc: Enhance SSH public key authentication setting section in "8.2. Pgpool-II + Watchdog Setup Example".
Tatsuo Ishii [Sun, 9 Jul 2023 10:09:26 +0000 (19:09 +0900)]
Fix pgproto to work with bind message using params.
Previously pgproto can only process bind messages without params.
Tatsuo Ishii [Thu, 29 Jun 2023 02:27:31 +0000 (11:27 +0900)]
Doc: fix load balance mode chapter.
In some places "streaming replication mode" was written as "native
replication mode". Also enhance description regarding additional
requirements for load balancing in the streaming replication mode.
Add some indexes.
Tatsuo Ishii [Wed, 28 Jun 2023 02:56:29 +0000 (11:56 +0900)]
Doc: fix load balance mode chapter.
In some places "streaming replication mode" was written as "native
replication mode". Also enhance description regarding additional
requirements for load balancing in the streaming replication mode.
Add some indexes.
Bo Peng [Tue, 27 Jun 2023 02:46:17 +0000 (11:46 +0900)]
Doc: enhance online recovery documentation.
Mention that 2nd stage of online recovery does not work properly only for multiple pgpool nodes without watchdog enabled.
Tatsuo Ishii [Mon, 12 Jun 2023 00:46:47 +0000 (09:46 +0900)]
Add schema qualification to some system catalog inquiry functions.
There were a few places where schema qualification were not used while
issuing system catalog inquiry.
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-June/004346.html
Bo Peng [Tue, 30 May 2023 13:17:33 +0000 (22:17 +0900)]
Fix sample script log messages.
Tatsuo Ishii [Mon, 22 May 2023 07:27:40 +0000 (16:27 +0900)]
Test: fix occasional 069.memory_leak_extended test failure.
It turned out that reason of the occasional test failure is, pgpool
child process is gone before running ps command after pgbench
finishes. The cause is a kind mismatch FATAL error, "DISCARD ALL
cannot be executed within a pipeline". To fix this, run pgbench in
background and get the process size before pgbench finishes.
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-May/004338.html
Bo Peng [Wed, 17 May 2023 12:21:36 +0000 (21:21 +0900)]
Prepare 4.2.13
Bo Peng [Wed, 17 May 2023 12:17:26 +0000 (21:17 +0900)]
Bump version to 4.2.13
Bo Peng [Wed, 17 May 2023 12:11:20 +0000 (21:11 +0900)]
Doc: modify release notes.
Bo Peng [Wed, 17 May 2023 11:48:49 +0000 (20:48 +0900)]
Doc: add release notes.
Tatsuo Ishii [Fri, 12 May 2023 11:41:36 +0000 (20:41 +0900)]
Fix possible dead lock with shared relation cache.
When a user defined function obtains table locking, call to the
function using extended query protocol could lead to dead lock. Here's
a scenario.
(1) In session A client sends parse, bind, execute request for the
function to pgpol.
(2) Pgpool in session A forwards the request to PostgreSQL.
(3) PostgreSQL in session A performs execute, resulting in a table lock.
(4) In session B client sends parse, bind, execute request for the
function to pgpool.
(5) Pgpool in session B forwards the request to PostgreSQL.
(6) PostgreSQL in session B performs bind but the table was already
locked by PostgreSQL in session A, and it waits for release of the
lock.
(7) After pgpool in session B forwards the execute to PostgreSQL, it
acquires semaphore to search shared relation cache to check the
volatility of the function. Then it calls do_query and sends flush
message to PostgreSQL to obtain the response from PostgreSQL up to
this point. But since PostgreSQL is waiting for table lock in #6,
pgpool has to wait for messages beyond bind complete.
(8) After pgpool in session A forwards the execute to PostgreSQL, it
tries to acquire semaphore to search shared relation cache to check
the volatility of the function but the semaphore was already
acquired by pgpool in session B, it waits for the release of the
semaphore.
(9) Session A and session B wait for each other, resulting in a dead
lock.
To fix this, modify pool_search_relcache() so that it releases
semaphore before calling do_query() (but acquires semaphore after
do_query()). By this, session A in #8 above can get semaphore, and go
forward. It receives sync message from client and forwards it to
PostgreSQL. Upon receiving sync, the user defined function will finish
the execution and releases the table lock. This makes PostgreSQL in
session B move forward because now it can obtain the table lock.
Back patch to 4.3, 4.2 and 4.1. On these versions semaphore based
shared release cache is used.
Tatsuo Ishii [Fri, 12 May 2023 08:16:01 +0000 (17:16 +0900)]
Test: stabilize some tests.
069.memory_leak_extended, 070.memory_leak_extended_memqcache and
073.pg_terminate_backend uses "sleep 1" to confirm pgpool starting up,
which makes the tests unstable because there's no guarantee that pgpool
becomes ready within 1 second. Use wait_for_pgpool_startup instead to
stabilize the tests.
Tatsuo Ishii [Sat, 29 Apr 2023 12:44:59 +0000 (21:44 +0900)]
Test: fix regress.sh to show correct number of total tests.
Previously it ignored the number of timed out tests. As a result total
number of tests showed incorrect number because num-total tests was
calculated as num-ok + num-failed.
This is an oversight when timeout was introduced in
6688332da.
Chen Ningwei [Tue, 25 Apr 2023 01:34:26 +0000 (10:34 +0900)]
Doc: add explanation for wd_priority.
Tatsuo Ishii [Thu, 20 Apr 2023 06:53:39 +0000 (15:53 +0900)]
Fix merging mistakes in the previous commit.
Tatsuo Ishii [Wed, 19 Apr 2023 10:41:21 +0000 (19:41 +0900)]
Doc: add restriction regarding PREPARE/EXECUTE/DEALLOCATE.
Bo Peng [Wed, 19 Apr 2023 08:18:01 +0000 (17:18 +0900)]
Update src/Makefile.in.
Tatsuo Ishii [Wed, 19 Apr 2023 07:56:24 +0000 (16:56 +0900)]
Add src/utils/psqlscan.c.
V4.4 or older branches still keep generated files in git repository. I
forgot this in commit:
https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=
77f1e64d715c25d24830623f705877030d34e768
Tatsuo Ishii [Wed, 19 Apr 2023 03:40:48 +0000 (12:40 +0900)]
Doc: add caution to use -D option with pgpool.
Tatsuo Ishii [Sun, 9 Apr 2023 04:11:12 +0000 (13:11 +0900)]
Doc: remove unnecessary restriction regarding multi-statement.
This applies to master branch only for now because this needs
commit:
https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=
48da8715bf403965507eef0321c0ab10054ac71c
If we decide to back port this, we will apply this change to stable
branches.
Tatsuo Ishii [Sat, 25 Mar 2023 07:21:27 +0000 (16:21 +0900)]
Judge multi statement query using psqlscan.
Psqlscan is a module in the PostgreSQL source tree. It is essentially
subset of PostgreSQL SQL scanner but it is specialized for detecting
the end of each SQL statement. Therefore we can count the number of
SQL statements in a query string by using it.
Note that we use psqlscan only when query string is large.
Because psqlscan is not designed as an external library, it is hard to
call it from outside of PostgreSQL source tree. So I decided to import
psqlscan source code. This module consists of multiple files. Program
sources are deployed in src/utils directory and header files are
deployed in src/include/utils directory.
psqlscan module was originally designed for frontend programs and uses
malloc directly. So I changed them so that it calls palloc and
friends. Additionally pgstrcasecmp.c and pqexpbuffer.c are also
imported. They are used by psqlscan.
The example usage of psqlscan can be found in
multi_statement_query():src/protocol/pool_proto_modules.c.
Discussion:
https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004291.html
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-April/004320.html
Tatsuo Ishii [Sat, 15 Apr 2023 07:26:23 +0000 (16:26 +0900)]
Test: skip the test if there's no test.sh.
This is useful when developers want to run the test on git repository
because the check suppresses false positive errors. There could newer
branch's test directories remain without any contents and regress.sh
reports wrong failures.
Bo Peng [Fri, 14 Apr 2023 05:26:48 +0000 (14:26 +0900)]
Doc: fix PostgreSQL version of the previous commit.
Bo Peng [Fri, 14 Apr 2023 04:00:59 +0000 (13:00 +0900)]
Doc: Enhancing installation documentation.
- add detailed decriptions of packages
- mention that pgpool-II-pgXX-extensions needs to be installed on PostgreSQL servers
Tatsuo Ishii [Thu, 13 Apr 2023 00:25:09 +0000 (09:25 +0900)]
Doc: add "Backing up PostgreSQL database" section to "Server Setup and Operation" chapter.
Bo Peng [Thu, 13 Apr 2023 09:00:08 +0000 (18:00 +0900)]
Doc: remove the configuration of "- D" start OPTS from "8.2. Pgpool-II + Watchdog Setup Example".
Tatsuo Ishii [Thu, 6 Apr 2023 03:43:06 +0000 (12:43 +0900)]
Fix occasional 005.jdbc test failure.
The direct cause of the error is:
2023-02-22 08:51:47.705: PostgreSQL JDBC Driver pid 12420: LOG: Parse: Error or notice message from backend: : DB node id: 0 backend pid: 12488 statement: "COMMIT" message: "prepared statement "S_1" already exists"
Actually the root of the error is this:
2023-02-22 08:51:45.242: PostgreSQL JDBC Driver pid 12420: LOG: pool_send_and_wait: Error or notice message from backend: : DB node id: 0 backend pid: 12488 statement: "DISCARD ALL" message: "DISCARD ALL cannot be executed within a pipeline"
"DISCARD ALL" was generated by pgpool (reset_query_list) to discard
some objects including prepared statements created in the
session. Since DISCARD ALL failed, the prepared statement S_1 was not
removed. Thus the next session failed because S_1 already existed.
To fix this, new global boolean flag reset_query_error is
introduced. The flag is set inside pool_send_and_wait() when a reset
query executed by SimpleQuery() results in ERROR. If the flag is true,
backend_cleanup() discards the backend connection so that any objects,
including named statement, corresponding to the session is discarded
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004293.html
Tatsuo Ishii [Sun, 9 Apr 2023 02:36:30 +0000 (11:36 +0900)]
Doc: fix restrictions section.
- Add mention about SCRAM-SHA-256 authentication
- Add mention about snapshot isolation mode
Tatsuo Ishii [Mon, 3 Apr 2023 23:21:28 +0000 (08:21 +0900)]
Doc: add index for online recovery.
Tatsuo Ishii [Thu, 30 Mar 2023 00:15:42 +0000 (09:15 +0900)]
More schema qualification fix.
This is a follow up to:
https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=
49ca4800d1a804c1f6ef5807d9fbeeef85888fb6
Back patch to all supported branches: 4.4 to 4.0
Tatsuo Ishii [Tue, 28 Mar 2023 01:55:59 +0000 (10:55 +0900)]
Use schema qualification for internal queries.
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.
Not that for this I had to increase some buffer length:
- POOL_RELCACHE.query was changed from 1024 to 1500.
- query buffer size in pool_search_relcache was changed from 1024 to 1500.
Back patch to all supported branches: 4.4 to 4.0
Tatsuo Ishii [Tue, 28 Mar 2023 00:49:08 +0000 (09:49 +0900)]
Doc: fix typo in the description of backend_application_name.
Tatsuo Ishii [Wed, 22 Mar 2023 11:53:38 +0000 (20:53 +0900)]
Fix compile error on systems using musl libc.
Patch provided by leimaohui.
https://www.pgpool.net/mantisbt/view.php?id=790
Tatsuo Ishii [Wed, 22 Feb 2023 01:20:15 +0000 (10:20 +0900)]
Doc: mention that AES256 support requires --with-openssl option.
Tatsuo Ishii [Tue, 21 Feb 2023 08:25:20 +0000 (17:25 +0900)]
Doc: add index for "AES256".
Also fix previous commit for adding index ".pcppass" and "PCPPASSFILE".
Tatsuo Ishii [Tue, 21 Feb 2023 05:49:02 +0000 (14:49 +0900)]
Doc: explicitly stat that it is -w option of pcp command is needed to use .pcppass.
Also add .pcppass and PCPPASSFILE to index.
Backpatch-through: master and 4.4 to 4.0.
Tatsuo Ishii [Sat, 18 Feb 2023 07:34:14 +0000 (16:34 +0900)]
Fix that show pool_version shows row description twice.
test=# show pool_version;
pool_version
--------------
(0 rows)
pool_version
-----------------------
4.3.5 (tamahomeboshi)
(1 row)
Tatsuo Ishii [Sun, 12 Feb 2023 10:59:00 +0000 (19:59 +0900)]
Allow to use multiple statements extensively.
This commit tries to eliminate pgpool's long standing limitations
regarding multiple statements (multi-statements).
Previously
BEGIN;SELECT;
SAVEPOINT foo;
will fail in streaming replication mode because "BEGIN" was sent to
the primar node, but "SAVEPOINT" will be sent to both the primary and
standbys, and standbys will complain "SAVEPOINT can only be used in
transaction blocks".
Basic idea to solve the problem is, tracking explicit transactions
started by multi-statement queries so that all commands including
PREPARE, EXECUTE, DEALLOCATE, SAVEPOINT and COMMIT/ROLLBACK are sent
to the primary node in streaming replication mode or logical
replication mode. In native replication or snapshot isolation mode,
those queries are sent to all of the backend nodes.
For this purpose new member: is_tx_started_by_multi_statement is added
to session context and also support functions are added.
extern bool is_tx_started_by_multi_statement_query(void);
extern void set_tx_started_by_multi_statement_query(void);
extern void unset_tx_started_by_multi_statement_query(void);
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004287.html
Back-patch-through: 4.2 as backport to 4.1 and before looks difficult
Tatsuo Ishii [Sun, 5 Feb 2023 09:56:05 +0000 (18:56 +0900)]
Fix multiple query cache bug.
1) pool_add_item_shmem_cache() calls pool_init_cache_block() when
there's no free cache item hash table entry. But this is
unnecessary since pool_reuse_block() is already called from
pool_add_item_shmem_cache(). This is actually harmless because the
second pool_init_cache_block() call just set the same data as the
first call of pool_init_cache_block(). It's just a waste of CPU
cycle.
2) The cache blocks are supposed to be initialized while Pgpool-II
starts up but actually not. Each cache block has the free space
length in the block header after initialization. Since the free
space length is not set, pool_get_block() fails to find a cache
block which has enough free space, and it calls pool_reuse_block(),
which is actually unnecessary (you will see something like
"pool_reuse_block: blockid: 0" in pgpool log). Since
pool_reuse_block() returns a free block anyway, this is just a
waste of CPU cycle but better to fix.
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-January/004259.html
Backpatch-through: 4.0
Tatsuo Ishii [Sun, 5 Feb 2023 07:13:15 +0000 (16:13 +0900)]
Fix sr worker to not send wrong query to standby server in corner case.
When ALWAYS_PRIMARY flag is set, PRIMARY_NODE_ID macro returns node
id, rather than -1 even if the primary is down. This confuses the test
if a node is primary or not, because PRIMARY_NODE_ID macro returns
main node id. In this case streaming replication delay check worker
sends "SELECT pg_current_wal_lsn()" or "SELECT
pg_current_xlog_location()" depending on PostgreSQL's version to
standby which of course raises an error.
To fix this, test the primary node is down or not, and if it's down,
skip the replication delay loop. If primary is down, there's no point
to perform streaming replication delay checking anyway.
Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2023-February/004279.html
Backpatch-through: 4.0
Tatsuo Ishii [Thu, 2 Feb 2023 10:34:00 +0000 (19:34 +0900)]
Fix comment mistakes.
Tatsuo Ishii [Thu, 2 Feb 2023 05:29:33 +0000 (14:29 +0900)]
Fix comment mistakes.
Tatsuo Ishii [Wed, 1 Feb 2023 13:39:41 +0000 (22:39 +0900)]
Doc: enhance show pool_cache manual.
Add a table to explain each items shown by show pool_cache.
Tatsuo Ishii [Tue, 31 Jan 2023 11:36:29 +0000 (20:36 +0900)]
Remove unnecessary macro.
The macro "DUAL_MODE" is no longer used anywhere.
Moreover, if it is used, it causes a compile error.
Tatsuo Ishii [Tue, 31 Jan 2023 09:49:48 +0000 (18:49 +0900)]
Fix kind mimatch error with DEALLOCATE
When conditions below are all met:
- streaming replication mode
- load balance node is other than primary
- PREPARE is used in a multi-statement query
Kind mimatch error occurs.
For DEALLOCATE pool_where_to_send() sets the nodes to be sent to all
backend if pgpool failed to find a prepared statement previously
received. For example with "SELECT 1\;PREPARE foo;", pgpool ignores
"PREPARE" part and just sends the whole multi-statement query to
primary. So primary actually has the prepared statement "foo" but
pgpool thinks that there's no prepared statement named "foo". And
pgpool sends DEALLOCATE to both primary and standby, then a kind
mismatch error raised. Fix is, just sending DEALLOCATE to primary node
in this case if pgpool is in streaming replication mode. Same thing
can be said to EXECUTE too. I fixed this and merge similar treatment
with EXECUTE into where_to_send_deallocate() to make the code simpler.
I also found another bug: in replication mode or SI mode, pgpool needs
to send multi-statement query to all backend because the
multi-statement query maybe a write query. However pgpool sends to
main node only in this case.
Test cases are added to 071..execute_and_deallocate.
Backpatch-through: 4.0
Problem reported in:
https://www.pgpool.net/mantisbt/view.php?id=780
Tatsuo Ishii [Sat, 28 Jan 2023 03:17:23 +0000 (12:17 +0900)]
Test: refactor 071.execute_and_deallocate/test.sh.
Previously the test was performed on only streaming replication mode.
Now the test covers native replication mode, snapshot isolation mode
and raw mode. Note that since case 6 test tries to test load balancing
on node 1, the case is not applied to raw mode.
Tatsuo Ishii [Sat, 28 Jan 2023 02:37:18 +0000 (11:37 +0900)]
Test: fix indentation for further refactoring.
Tatsuo Ishii [Wed, 25 Jan 2023 05:45:34 +0000 (14:45 +0900)]
Doc: fix typo in the description of read_only_function_list.
Takuma Hoshiai [Tue, 24 Jan 2023 15:36:42 +0000 (00:36 +0900)]
Fix compile error of regression test
The error occurred by timestamp test using gcc10.
Bo Peng [Sat, 21 Jan 2023 15:28:36 +0000 (00:28 +0900)]
Prepare 4.2.12
Bo Peng [Sat, 21 Jan 2023 15:28:23 +0000 (00:28 +0900)]
Doc: Bump version to 4.2.12
Bo Peng [Sat, 21 Jan 2023 15:28:10 +0000 (00:28 +0900)]
Doc: update copy right.
Bo Peng [Sat, 21 Jan 2023 15:27:59 +0000 (00:27 +0900)]
Doc: Add release notes.
Bo Peng [Sat, 21 Jan 2023 15:24:03 +0000 (00:24 +0900)]
Change the default value for wd_lifecheck_password to empty string as documented.
Bo Peng [Sat, 21 Jan 2023 15:23:49 +0000 (00:23 +0900)]
Do not expose wd_lifecheck_password in show pool_status command.
Tatsuo Ishii [Sat, 14 Jan 2023 11:10:06 +0000 (20:10 +0900)]
Test: tweak 028.watchdog_enable_consensus_with_half_votes.
Sometimes buildfarm fails by:
bind on socket failed with error "Address already in use".
This happens after shutting down all pgpools then start them again. So
wait for 5 seconds between them instead of 1 second. Let's see if
things are going to get better.
Bo Peng [Mon, 16 Jan 2023 13:51:21 +0000 (22:51 +0900)]
Add patch files to EXTRA_DIST.
Bo Peng [Mon, 16 Jan 2023 08:34:11 +0000 (17:34 +0900)]
Remove pgpool-II-head.patch from SPEC file.
Tatsuo Ishii [Sat, 7 Jan 2023 04:27:34 +0000 (13:27 +0900)]
Fix comment.
sizeof(POOL_CACHE_ITEM_HEADER) is 16 bytes, not 24 bytes.
Tatsuo Ishii [Thu, 5 Jan 2023 07:50:43 +0000 (16:50 +0900)]
Add comment to query cache module header file.
Some struct size added to explain required shared memory size.
Tatsuo Ishii [Fri, 6 Jan 2023 01:37:21 +0000 (10:37 +0900)]
Doc: enhance "Configurations to use shared memory" chapter.
Enhance the description to try to explain what the parameters actually
mean. Also fix wrong number, i.e. the size of data management area is
64 bytes, not 48 bytes.
Bo Peng [Sun, 25 Dec 2022 11:33:24 +0000 (20:33 +0900)]
Fix SPEC file typo.
Tatsuo Ishii [Sat, 24 Dec 2022 03:41:01 +0000 (12:41 +0900)]
Fix compiler warning.
pgpool-regclass.c needed to include "utils/varlena.h". Also sort out
the header files order (except postgres.h which needs to be appear at
the top among PostgreSQL header files).
The compiler warning was reported by Florian Weimer.
https://www.pgpool.net/pipermail/pgpool-hackers/2022-December/004241.html
Bo Peng [Fri, 23 Dec 2022 14:16:43 +0000 (23:16 +0900)]
Fix SPEC file typo.
Bo Peng [Fri, 23 Dec 2022 07:51:01 +0000 (16:51 +0900)]
Fix SPEC file typo.
Bo Peng [Fri, 23 Dec 2022 07:28:52 +0000 (16:28 +0900)]
Update SPEC file to change /lib/tmpfiles.d/ file from /var/run to /run.
Bo Peng [Thu, 22 Dec 2022 06:46:33 +0000 (15:46 +0900)]
Prepare 4.2.11
Bo Peng [Thu, 22 Dec 2022 06:42:05 +0000 (15:42 +0900)]
Doc: Bump doc version to 4.2.11
Bo Peng [Thu, 22 Dec 2022 06:28:38 +0000 (15:28 +0900)]
Doc: update repo package version.
Bo Peng [Thu, 22 Dec 2022 06:11:16 +0000 (15:11 +0900)]
Doc: add release note.
Muhammad Usama [Mon, 19 Dec 2022 19:39:32 +0000 (00:39 +0500)]
Fix for :[pgpool-hackers: 4227] Issue with failover_require_consensus
The fix is to dynamically set the failover command timeout based on the maximum
value of health check parameters across the watchdog cluster.
Reviewed and tested by Tatsuo Ishii
Tatsuo Ishii [Mon, 19 Dec 2022 04:50:33 +0000 (13:50 +0900)]
Doc: fix Japanese documentation to sync with English docs.