On Thu, Aug 12, 2010 at 06:33:13PM -0400, Tom Lane wrote:
> "David E. Wheeler" <david@kineticode.com> writes:
> > I have this in my .psqlrc:
> > \set HISTFILE ~/.psql_history- :DBNAME
> > This is great, except when I change databases in a session:
>
> > % psql foo
> > foo % \c bar
> > You are now connected to database "bar".
> > SELECT true;
>
> > The last statement will be logged to ~/.psql_history-foo when it should go
> > to ~/.psql_history-bar.
>
> I don't think this is a bug. The history file is read at psql startup
> and written out (to the same file name) at exit. Those operations are
> quite expensive, so it would be insane to do them after every backslash
> command on the off chance that somebody was expecting to have changed
> the effective name of the history file. (Aside from the cost, this
> would greatly increase the race condition hazards from concurrent psql
> sessions trying to write the file at the same time.)
I think it would be enough to track previous and current database name,
and re-do the history code on change.
depesz
--
Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007