pgsql: Fix psql's behavior with \g for a multiple-command string. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix psql's behavior with \g for a multiple-command string.
Date
Msg-id E1ofQmj-000kw9-5Z@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix psql's behavior with \g for a multiple-command string.

The pre-v15 behavior was to discard all but the last result,
but with the new behavior of printing all results by default,
we will send each such result to the \g file.  However,
we're still opening and closing the \g file for each result,
so you lose all but the last result anyway.  Move the output-file
state up to ExecQueryAndProcessResults so that we open/close the
\g file only once per command string.

To support this without changing other behavior, we must
adjust PrintQueryResult to have separate FILE * arguments
for query and status output (since status output has never
gone to the \g file).  That in turn makes it a good idea
to push the responsibility for fflush'ing output down to
PrintQueryTuples and PrintQueryStatus.

Also fix an infinite loop if COPY IN/OUT is attempted in \watch.
We used to reject that, but that error exit path got broken
somewhere along the line in v15.  There seems no real reason
to reject it anyway as the code now stands, so just remove
the error exit and make sure that COPY OUT data goes to the
right place.

Also remove PrintQueryResult's unused is_watch parameter,
and make some other cosmetic cleanups (adjust obsolete
comments, break some overly-long lines).

Daniel Vérité and Tom Lane

Discussion: https://postgr.es/m/4333844c-2244-4d6e-a49a-1d483fbe304f@manitou-mail.org

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/595580aa1243df5f199516ff11a27ba9680e6904

Modified Files
--------------
src/bin/psql/common.c | 238 ++++++++++++++++++++++++++++----------------------
1 file changed, 135 insertions(+), 103 deletions(-)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: pgsql: meson: respect -Dldap=disabled
Next
From: Jaime Casanova
Date:
Subject: Re: pgsql: Avoid improbable PANIC during heap_update.