Re: Feature: psql - display current search_path in prompt

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:37:57
Message-ID: 6DF8F032-50CD-416C-8784-C669C79BA165@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On 10 Jun 2025, at 4:09 PM, Florents Tselai <florents(dot)tselai(at)gmail(dot)com> wrote:
>
>
>
>> 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

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.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Geier 2025-06-10 14:21:58 Re: Buffer overflow in SerializeLibraryState() found by Address Sanitizer
Previous Message Florents Tselai 2025-06-10 13:09:08 Re: Feature: psql - display current search_path in prompt