Re: display hot standby state in psql prompt

Jim Jones <jim.jones@uni-muenster.de>

From: Jim Jones <jim.jones@uni-muenster.de>
To: Chao Li <li.evan.chao@gmail.com>, Fujii Masao <masao.fujii@gmail.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>, Srinath Reddy Sadipiralla <srinath2133@gmail.com>, Greg Sabino Mullane <htamfids@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-30T09:20:50Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. psql: Add %i prompt escape to indicate hot standby status.

  2. Mark search_path as GUC_REPORT

Hi Chao

On 30/10/2025 08:51, Chao Li wrote:
> I did a quick test, and found a problem. I shutdown the server, and “\c” reconnecting failed, but psql still show “read/write”, which seems wrong:
> 
> "read/write"\c
> connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
> 	Is the server running locally and accepting connections on that socket?
> Previous connection kept

I can see that a "read/write" prompt in this case sounds misleading, but
I am not entirely sure it is a problem. The message says "Previous
connection kept", which might suggest that the previous parameter values
are cached? See %p:

postgres=# \set PROMPT1 '[%p] # '
[1268754] # \c
connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file
or directory
        Is the server running locally and accepting connections on that
socket?
Previous connection kept
[1268754] #

The backend pid is still displayed, although the server is no longer
running.
 > Why wrap “unknown” in "_()” but not “read-only” and “read/write”?
It didn't occur to me that read-only and read/write needed translation,
but I guess you're right. I'll add to the next version.

Thanks for the review. Much appreciated!

Best, Jim