From 7f332b7f3e667e7c69a24b556c2bc5405ba6be4c Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Tue, 28 Oct 2025 12:05:17 -0500 Subject: [PATCH v5 1/1] Add psql PROMPT variable for the current search_path. The new %S substitution shows the current search_path. Note that this only works when connected to Postgres v18 or newer, since search_path was first marked as GUC_REPORT in commit 28a1121fd9. On older versions that don't report search_path, %S is replaced with a question mark. Suggested-by: Lauri Siltanen Author: Florents Tselai Reviewed-by: Jelte Fennema-Nio Reviewed-by: Jim Jones Reviewed-by: Chao Li Discussion: https://postgr.es/m/CANsM767JhTKCRagTaq5Lz52fVwLPVkhSpyD1C%2BOrridGv0SO0A%40mail.gmail.com --- doc/src/sgml/ref/psql-ref.sgml | 10 ++++++++++ src/bin/psql/prompt.c | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 1a339600bc4..f6760b81370 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -4974,6 +4974,16 @@ testdb=> INSERT INTO my_table VALUES (:'content'); + + %S + + + The current , or ? + if connected to a server running PostgreSQL 17 or older. + + + + %s The name of the service. diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c index b08d7328fbf..59a2ceee07a 100644 --- a/src/bin/psql/prompt.c +++ b/src/bin/psql/prompt.c @@ -34,6 +34,7 @@ * %P - pipeline status: on, off or abort * %> - database server port number * %n - database user name + * %S - search_path * %s - service * %/ - current database * %~ - like %/ but "~" when database name equals user name @@ -167,6 +168,16 @@ get_prompt(promptStatus_t status, ConditionalStack cstack) if (pset.db) strlcpy(buf, session_username(), sizeof(buf)); break; + /* search_path */ + case 'S': + if (pset.db) + { + const char *sp = PQparameterStatus(pset.db, "search_path"); + + /* Use ? for versions that don't report search_path. */ + strlcpy(buf, sp ? sp : "?", sizeof(buf)); + } + break; /* service name */ case 's': { -- 2.39.5 (Apple Git-154)