Обсуждение: 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