Re: BUG #6602: concurrent psql session clobbers history

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #6602: concurrent psql session clobbers history
Дата
Msg-id 9540.1335376456@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #6602: concurrent psql session clobbers history  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-bugs
Peter Eisentraut <peter_e@gmx.net> writes:
> On tor, 2012-04-19 at 15:00 -0400, Tom Lane wrote:
>> i+pgbugs@avdd.tk writes:
>>> A concurrent psql session will overwrite the history of the first.  This
>>> does not look good: a database tool causing me to lose my data!

>> Works okay for me.  I suspect you need to take this up with whoever
>> packages libreadline for Ubuntu, because it's going to be libreadline's
>> problem not ours.

> It's probably actually using libedit for the history part.

[ after further research... ]  Mmm, maybe.  I can reproduce the
misbehavior on a Mac build using libedit.  There is a relevant-looking
comment in psql's saveHistory function:

         * On newer versions of libreadline, truncate the history file as
         * needed and then append what we've added.  This avoids overwriting
         * history from other concurrent sessions (although there are still
         * race conditions when two sessions exit at about the same time). If
         * we don't have those functions, fall back to write_history().

A check of the configure output shows that Apple's libedit lacks
append_history(), so that the fallback code path is used.  The phrasing
of this comment suggests that older versions of libreadline might be
lacking as well.

There's not a lot we can do about this issue when using a libreadline
or libedit that lacks the necessary support functions, I think.

            regards, tom lane

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6612: Functions can be called inside CHECK statements
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6605: wrong type cast from timestamp to timestamptz