From: | Florents Tselai <florents(dot)tselai(at)gmail(dot)com> |
---|---|
To: | Jim Jones <jim(dot)jones(at)uni-muenster(dot)de> |
Cc: | Jelte Fennema-Nio <postgres(at)jeltef(dot)nl>, Lauri Siltanen <lauri(dot)siltanen(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Feature: psql - display current search_path in prompt |
Date: | 2025-06-10 13:09:08 |
Message-ID: | B54C21FA-A175-4DC6-8E9A-BA81BE564736@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On 10 Jun 2025, at 3:51 PM, Jim Jones <jim(dot)jones(at)uni-muenster(dot)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 <postgres(at)jeltef(dot)nl
>> <mailto:postgres(at)jeltef(dot)nl>> wrote:
>>
>> On Mon, 9 Jun 2025 at 17:54, Florents Tselai
>> <florents(dot)tselai(at)gmail(dot)com <mailto:florents(dot)tselai(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Florents Tselai | 2025-06-10 13:37:57 | Re: Feature: psql - display current search_path in prompt |
Previous Message | Daniel Gustafsson | 2025-06-10 13:06:24 | Re: Buffer overflow in SerializeLibraryState() found by Address Sanitizer |