On Tue, Oct 18, 2016 at 10:21 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> "David G. Johnston" <david.g.johns...@gmail.com> writes:
> > On Tue, Oct 18, 2016 at 9:45 AM, Tom Lane <t...@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?
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

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

​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.

Reply via email to