Re: Multiple psql history files

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Multiple psql history files
Дата
Msg-id CAKFQuwYN=+JYPv0tzXWmueUtyab1ZbFOgpnyh+PA9T4qT2_5ig@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Multiple psql history files  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Tue, Oct 18, 2016 at 10:21 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Tue, Oct 18, 2016 at 9:45 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> One interesting point, if you wish to consider history as being
>> connection-specific, is what happens during a \c command.  Right
>> now the answer is "nothing" but you might wish it were different.

> ​Just to clarify/confirm a point inferred from the docs...
> If you place "\set HISTFILE​ ~/.psql_history- :DBNAME"
> ​into your .psqlrc file then when you perform a "\c" the .psqlrc file is
> re-read and the ​new value for DBNAME is used to generate a new history
> file name.

Um, no, I see no indication of that in the code.  Where did you read that
in the docs?

 
 DBNAME
The name of the database you are currently connected to. This is set every time you connect to a database (including program start-up), but can be unset.

​​HISTFILE
The file name that will be used to store the history list. The default value is ~/.psql_history. For example, putting:
\set HISTFILE ~/.psql_history- :DBNAME
in ~/.psqlrc will cause psql to maintain a separate history for each database.

​The "including program start-up" aspect to DBNAME means that it is changed upon using "\c"

I inferred the part about .psqlrc being re-read and thus taking on the new value of :DBNAME in the example.

psqlrc is later defined to be "the [system|user] startup file" so it was wrong to conclude that it was re-read upon issuing "\c" - though "connection startup" isn't a totally unreasonable interpretation of the timing at which this file is read.  Not everyone is going to associate the "rc" suffix with the file only being read during program startup.
 
If we wanted the history file to change at \c, I think the best way would
be to invent some escape-patterns that could be placed in the value of
HISTFILE, say along the lines of "\set HISTFILE ~/.psql_history-%h-%p",
and then specify that if the value contains any such patterns we'll dump
and reload the history file when reconnecting.  But TBH I don't think
it's worth the trouble.  I'd sure like to have seen multiple requests
for such functionality before we go to the trouble.

A slightly less invasive approach would be to have a "connection startup script" file..."psql-conn-rc"...that is re-read immediately after a successful connection is made to a database.

David J.



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Hash Indexes
Следующее
От: Robert Haas
Дата:
Сообщение: Re: Minor improvement to delete.sgml