Thread: BUG #16956: psql won't load command history
The following bug has been logged on the website: Bug reference: 16956 Logged by: Robin Knipe Email address: robin.knipe@gmail.com PostgreSQL version: 12.6 Operating system: kubuntu-18.04.2, docker postgres:12-alpine Description: Running the `psql` command from docker (postgres:12-alpine), fails to load the `.psql_history` command contents. Strangely, the session's commands ARE SAVED though! Also I can read the history contents in the psql session, as the following raw output shows: ``` levqa=> \echo `echo $PSQL_HISTORY` /.psql_history levqa=> \echo `tail $PSQL_HISTORY` _HiStOrY_V2_ _HiStOrY_V2_ _HiStOrY_V2_ _HiStOrY_V2_ echo\040HISTCONTROL\012; `echo\040HISTCONTROL`\012; \134echo\040:HISTCONTROL \134echo\040:HISTFILE \134set\040HISTFILE\040/.psql_history \134echo\040:HISTFILE levqa=> ``` FYI: the docker command I'm running: ``` docker run \ -it \ --entrypoint=bash \ --network=host \ --mount type=bind,source="$( ls ~/.psql_history )",target="/.psql_history" \ -e PGPASSWORD="${PASS}" \ -e PSQL_HISTORY="/.psql_history" \ postgres:12-alpine \ -wh localhost \ "${NAME}" \ "${USER}" ```
PG Bug reporting form <noreply@postgresql.org> writes: > Running the `psql` command from docker (postgres:12-alpine), fails to load > the `.psql_history` command contents. Strangely, the session's commands ARE > SAVED though! Also I can read the history contents in the psql session, as > the following raw output shows: > ``` > levqa=> \echo `echo $PSQL_HISTORY` > /.psql_history > levqa=> \echo `tail $PSQL_HISTORY` > _HiStOrY_V2_ > _HiStOrY_V2_ > _HiStOrY_V2_ > _HiStOrY_V2_ > echo\040HISTCONTROL\012; > `echo\040HISTCONTROL`\012; > \134echo\040:HISTCONTROL > \134echo\040:HISTFILE > \134set\040HISTFILE\040/.psql_history > \134echo\040:HISTFILE > levqa=> > ``` No concrete ideas to offer, but I'm pretty sure that that history-file format is only supposed to have one "_HiStOrY_V2_" marker line at the start. Maybe getting rid of the extras would de-confuse it. Anyway, none of Postgres' own code touches that file. If there's a bug here, it's in libedit. regards, tom lane
Hi Tom
Thanks for your reply. I think those _HiStOrY_V2_ entries are just the start of the saved session, so the multiples there signify empty sessions, where I've started a session, checked for history (by pressing up arrow) and then exited again without entering any commands. I'll see if I can report the bug to `libedit`...
Thanks,
Robin.
On Thu, 8 Apr 2021 at 17:04, Tom Lane <tgl@sss.pgh.pa.us> wrote:
PG Bug reporting form <noreply@postgresql.org> writes:
> Running the `psql` command from docker (postgres:12-alpine), fails to load
> the `.psql_history` command contents. Strangely, the session's commands ARE
> SAVED though! Also I can read the history contents in the psql session, as
> the following raw output shows:
> ```
> levqa=> \echo `echo $PSQL_HISTORY`
> /.psql_history
> levqa=> \echo `tail $PSQL_HISTORY`
> _HiStOrY_V2_
> _HiStOrY_V2_
> _HiStOrY_V2_
> _HiStOrY_V2_
> echo\040HISTCONTROL\012;
> `echo\040HISTCONTROL`\012;
> \134echo\040:HISTCONTROL
> \134echo\040:HISTFILE
> \134set\040HISTFILE\040/.psql_history
> \134echo\040:HISTFILE
> levqa=>
> ```
No concrete ideas to offer, but I'm pretty sure that that history-file
format is only supposed to have one "_HiStOrY_V2_" marker line at the
start. Maybe getting rid of the extras would de-confuse it.
Anyway, none of Postgres' own code touches that file. If there's a
bug here, it's in libedit.
regards, tom lane