pgsql: pgbench: Fail cleanly when finding a COPY result state

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: pgbench: Fail cleanly when finding a COPY result state
Date: 2025-10-03 05:04:54
Message-ID: E1v4XyQ-001CtG-08@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

pgbench: Fail cleanly when finding a COPY result state

Currently, pgbench aborts when a COPY response is received in
readCommandResponse(). However, as PQgetResult() returns an empty
result when there is no asynchronous result, through getCopyResult(),
the logic done at the end of readCommandResponse() for the error path
leads to an infinite loop.

This commit forcefully exits the COPY state with PQendcopy() before
moving to the error handler when fiding a COPY state, avoiding the
infinite loop. The COPY protocol is not supported by pgbench anyway, as
an error is assumed in this case, so giving up is better than having the
tool be stuck forever. pgbench was interruptible in this state.

A TAP test is added to check that an error happens if trying to use
COPY.

Author: Anthonin Bonnefoy <anthonin(dot)bonnefoy(at)datadoghq(dot)com>
Discussion: https://postgr.es/m/CAO6_XqpHyF2m73ifV5a=5jhXxH2chk=XrgefY+eWWPe2Eft3=A@mail.gmail.com
Backpatch-through: 13

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/902c08887aa183100b161ef48f1a2434af079213

Modified Files
--------------
src/bin/pgbench/pgbench.c | 14 ++++++++++++++
src/bin/pgbench/t/001_pgbench_with_server.pl | 11 +++++++++++
2 files changed, 25 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Richard Guo 2025-10-03 07:35:02 pgsql: Fix incorrect function reference in comment
Previous Message Tatsuo Ishii 2025-10-03 00:59:45 pgsql: Add IGNORE NULLS/RESPECT NULLS option to Window functions.