Re: Suggestion to add --continue-client-on-abort option to pgbench
Yugo Nagata <nagata@sraoss.co.jp>
From: Yugo Nagata <nagata@sraoss.co.jp>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Fujii Masao <masao.fujii@gmail.com>, Rintaro Ikeda
<ikedarintarof@oss.nttdata.com>, Jakub Wartak
<jakub.wartak@enterprisedb.com>, "Hayato Kuroda (Fujitsu)"
<kuroda.hayato@fujitsu.com>, "slpmcf@gmail.com" <slpmcf@gmail.com>,
"boekewurm+postgres@gmail.com" <boekewurm+postgres@gmail.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Srinath
Reddy Sadipiralla <srinath2133@gmail.com>, Dilip Kumar
<dilipbalaut@gmail.com>
Date: 2025-11-13T12:00:33Z
Lists: pgsql-hackers
On Thu, 13 Nov 2025 18:17:37 +0800 Chao Li <li.evan.chao@gmail.com> wrote: > > > > On Nov 13, 2025, at 17:40, Yugo Nagata <nagata@sraoss.co.jp> wrote: > > > > The following script: > > > > \startpipeline > > <queries list 1> > > \syncpipeline > > <queries list 2> > > \endpipeline > > > > can be considered equivalent to: > > > > BEGIN; > > <queries list 1> > > END; > > BEGIN; > > <queries list 2> > > END; > > This looks like that every \sysnpipeline will start a new transaction, is that true? Yes, it causes a new transaction to start. In a pipeline, an implicit transaction block is started, and \syncpipeline closes it. Then, a new implicit transaction begins. Here’s a simple example to illustrate this: $ cat pipeline_tx.sql drop table if exists tbl; create table tbl (i int); \startpipeline insert into tbl values(1); insert into tbl values(2); \syncpipeline insert into tbl values(3); insert into tbl values(4); \endpipeline $ pgbench -f pipeline_tx.sql -t 1 -M extended -n > /dev/null $ psql -c "select xmin, i from tbl" xmin | i ------+--- 1268 | 1 1268 | 2 1269 | 3 1269 | 4 (4 rows) Regards, Yugo Nagata -- Yugo Nagata <nagata@sraoss.co.jp>