> On 10 Jun 2025, at 4:09 PM, Florents Tselai <florents.tse...@gmail.com> wrote: > > > >> 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
EDIT: There are test under `src/psql/t` , not sure though how much coverage they have, but most importantly how it’d look like for this case.