Thread: BUG #16956: psql won't load command history

BUG #16956: psql won't load command history

From
PG Bug reporting form
Date:
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}"
```


Re: BUG #16956: psql won't load command history

From
Tom Lane
Date:
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



Re: BUG #16956: psql won't load command history

From
Robin Knipe
Date:
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