> On 10 Jun 2025, at 3:51 PM, Jim Jones <jim.jo...@uni-muenster.de> wrote: > > 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.
Thanks for the review. > >> >> 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? Doesn’t look like it though; e.g. this https://github.com/Florents-Tselai/postgres/commit/79fad725aa410d6c631d4ffe0f4120837f9b478c didn’t break anything - on Cirrus at least