On Fri, 27 Jun 2025 10:59:09 +0000
"Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com> wrote:
> > > Retrying the failed transaction is not necessary when the transaction
> > > failed due to SQL-level errors. Unlike real-world applications, pgbench
> > > does not need to complete specific transaction successfully. In the case
> > > of unique constraint violations, retrying the same transaction will
> > > likely to result in the same error again.
>
> I intended here that clients could throw away the failed transaction and start
> new one again in the case. I hope we are on the same page...
Could I confirm what you mean by "start new one"?
In the current pgbench, when a query raises an error (a deadlock or
serialization failure), it can be retried using the same random state.
This typically means the query will be retried with the same parameter values.
On the other hand, when the query ultimately fails (possibly after some retries),
the transaction is marked as a "failure", and the next transaction starts with a
new random state (i.e., with new parameter values).
Therefore, if a query fails due to a unique constraint violation and is retried
with the same parameters, it will keep failing on each retry.
Regards,
Yugo Nagata
--
Yugo Nagata <nagata@sraoss.co.jp>