| From: | Taiki Koshino <koshino(at)sraoss(dot)co(dot)jp> |
|---|---|
| To: | pgpool-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgpool: Fix inconsistent internal transaction handling in Parse. |
| Date: | 2026-09-18 05:18:54 |
| Message-ID: | E1x7Qzu-0000000D6oH-18Z8@gothos.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgpool-committers |
Fix inconsistent internal transaction handling in Parse.
Parse() started an internal transaction for a strict query in raw mode:
if (!SL_MODE)
if (is_strict_query(...))
start_internal_transaction(...);
Bind() correctly limits the same operation to replication mode:
if (REPLICATION)
if (is_strict_query(...))
start_internal_transaction(...);
This difference left an autocommitted extended-protocol UPDATE in a
transaction in raw mode because the internal transaction was never
closed.
Add the REPLICATION condition to Parse() to make it consistent with
Bind().
The issue was verified using pgproto with the following extended-query
message sequence:
'P' "s" "UPDATE scm_pgpool_txn_probe SET value=value+1 WHERE id=1" 0
'B' "" "s" 0 0 0
'E' "" 0
'S'
'Y'
'X'
Before the fix, Pgpool-II returned:
<= BE CommandComplete(UPDATE 1)
<= BE ReadyForQuery(T)
After the fix, it returns:
<= BE CommandComplete(UPDATE 1)
<= BE ReadyForQuery(I)
Author: Taiki Koshino <koshino(at)sraoss(dot)co(dot)jp>
Discussion: https://github.com/pgpool/pgpool2/issues/172
Backpatch-through: v4.3
Branch
------
V4_3_STABLE
Details
-------
https://git.postgresql.org/gitweb?p=pgpool2.git;a=commitdiff;h=dc5aee297e04e2f23fbca9e6b6db40745730a64b
Modified Files
--------------
src/protocol/pool_proto_modules.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Taiki Koshino | 2026-09-18 05:29:03 | pgpool: Fix hang on deferred constraint errors in pipeline mode |
| Previous Message | Taiki Koshino | 2026-09-18 05:18:40 | pgpool: Fix inconsistent internal transaction handling in Parse. |