Hi Florents On 10.06.25 13:36, Florents Tselai wrote: > > On Tue, Jun 10, 2025 at 2:08 AM Jelte Fennema-Nio <postg...@jeltef.nl > <mailto:postg...@jeltef.nl>> wrote: > > On Mon, 9 Jun 2025 at 17:54, Florents Tselai > <florents.tse...@gmail.com <mailto:florents.tse...@gmail.com>> wrote: > > Here’s a quick attempt that makes %S substitue for a search_path > > Like > > \set PROMPT1 'user:%n search_path: %S' > > + else > + return PQuser(pset.db); > > That seems like a copy paste error. If we don't have data for it, we > should either use the empty string, or some string like "<unknown>". > > > Opted for an empty string > > > Other than that, the patch looks good (but I haven't tested it yet). >
I've taken a quick look at the patch, and it seems to work as expected. == PROMPT1 == postgres=# \set PROMPT1 '(search_path: %S) ;; ' (search_path: "$user", public) ;; SET search_path TO s1, public; SET (search_path: s1, public) ;; SET search_path TO s2, public; SET (search_path: s2, public) ;; RESET search_path; RESET (search_path: "$user", public) ;; == PROMPT2 == postgres=# \set PROMPT2 '(search_path: %S) ** ' postgres=# SELECT (search_path: "$user", public) ** ^C postgres=# SET search_path TO s1, public; SET postgres=# SELECT (search_path: s1, public) ** ^C postgres=# SET search_path TO s2, public; SET postgres=# SELECT (search_path: s2, public) ** ^C postgres=# RESET search_path; RESET postgres=# SELECT (search_path: "$user", public) ** == PROMPT3 == postgres=# \set PROMPT3 '(search_path: %S) ## ' postgres=# COPY t1 (a) FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. (search_path: "$user", public) ## 1 (search_path: "$user", public) ## 2 (search_path: "$user", public) ## \. COPY 2 postgres=# SET search_path TO s1, public; SET postgres=# COPY t1 (a) FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. (search_path: s1, public) ## 42 (search_path: s1, public) ## 73 (search_path: s1, public) ## \. COPY 2 postgres=# RESET search_path; RESET postgres=# COPY t1 (a) FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. (search_path: "$user", public) ## 0 (search_path: "$user", public) ## 1 (search_path: "$user", public) ## \. COPY 2 Documentation looks ok as well -- it aligns with the other entries in the file. > > Btw - I haven't worked on bin/psql code; > aren't these auto tested? I also couldn't find any test related to psql's PROMPT*. Perhaps Jelte knows more about it? Best regards, Jim