libedit history seems to be misbehaving / broken

From: Tomas Vondra <tomas(at)vondra(dot)me>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: libedit history seems to be misbehaving / broken
Date: 2024-10-27 17:47:10
Message-ID: 665e2b50-8969-42e1-b691-aabb9ea5ada5@vondra.me
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I accidentally built master with libedit (instead of the readline I use
most of the time, due to missing readline-devel package). And for a
while it was working fine, but then I realized the history is not
working anymore, and is broken in a weird way :-(

I'm not terribly familiar with libedit, so can't say if it's a bug in
libedit, or if we're just using it wrong in some way. I investigated
that while on a flight from pgconf.eu, but can't look into this further.
So let me at least share the behavior I observed, and what I found.

Note: All of this is with libedit-3.1-53.20240808cvs.fc40.x86_64, which
is what I currently get in Fedora 40.

Initially, history seems to work - more or less. Except for the detail
that we always "repeat" the last command from the history. So if you do
"SELECT 1" then the first query added to the history by the *next* psql
session is going to be "SELECT 1". And this happens even if you don't do
anything in psql. So if you enter & immediately exit 10x, you get 10
copies of the last query. Which is rather weird, and it also makes it
less convenient to walk the history (ctrl-r search is fine, ofc).

But there comes the following issue. Libedit identifies the history file
by adding _HiStOrY_V2_ as the first line. But it also limits the history
to 500 lines, and after adding the 501st line, it gets confused,
attempts to enforce the 500-line limit, and removes the first line,
which is the _HiStOrY_V2_ header. At which point the history stops to
work, more or less - psql can't access the history, apparently due the
header missing. We still append new entries at the end, can access
earlier commands from the same session, but nothing from the file.

And it stays broken forever, of course :-(

regards

--
Tomas Vondra

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2024-10-27 17:56:59 Re: Better error reporting from extension scripts (Was: Extend ALTER OPERATOR)
Previous Message Tom Lane 2024-10-27 17:41:54 Re: Better error reporting from extension scripts (Was: Extend ALTER OPERATOR)