psql: Add pipeline status to prompt and some state variables
authorMichael Paquier
Tue, 25 Feb 2025 01:07:24 +0000 (10:07 +0900)
committerMichael Paquier
Tue, 25 Feb 2025 01:07:24 +0000 (10:07 +0900)
commit3ce357584e795762aa6dc45fafc21dccea7e5ec6
tree97dc2a4cb677b4a9d8d909aaf9794a1c656721a0
parentcbb9086c9ef64b020cb9036f50afc14644bbf734
psql: Add pipeline status to prompt and some state variables

This commit adds %P to psql prompts, able to report the status of a
pipeline depending on PQpipelineStatus(): on, off or abort.

The following variables are added to report the state of an ongoing
pipeline:
- PIPELINE_SYNC_COUNT: reports the number of piped syncs.
- PIPELINE_COMMAND_COUNT: reports the number of piped commands, a
command being either \bind, \bind_named, \close or \parse.
- PIPELINE_RESULT_COUNT: reports the results available to read with
\getresults.

These variables can be used with \echo or in a prompt, using "%:name:"
in PROMPT1, PROMPT2 or PROMPT3.  Some basic regression tests are added
for these.  The suggestion to use variables to show the details about
the status counters comes from me.  The original patch proposed was less
extensible, hardcoding the output in the prompt.

Author: Anthonin Bonnefoy 
Discussion: https://postgr.es/m/CAO6_XqroE7JuMEm1sWz55rp9fAYX2JwmcP_3m_v51vnOFdsLiQ@mail.gmail.com
doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/common.c
src/bin/psql/prompt.c
src/bin/psql/startup.c
src/test/regress/expected/psql_pipeline.out
src/test/regress/sql/psql_pipeline.sql