Thread: psql 'none' as a HISTFILE special case
If readline is used by psql, a history file is automatically used. This patch adds the special file name 'none', which if set as the HISTFILE parameter, will cause psql not to use the history file. - Martin -
Attachment
On Mon, 2006-08-21 at 19:27 +0300, Martin Atukunda wrote: > If readline is used by psql, a history file is automatically used. > This patch adds the special file name 'none', which if set as the > HISTFILE parameter, will cause psql not to use the history file. I think it would be cleaner to use a separate \set variable to control whether a history file is written, rather than needlessly overloading the meaning of HISTFILE. -Neil
Neil Conway <neilc@samurai.com> writes: > On Mon, 2006-08-21 at 19:27 +0300, Martin Atukunda wrote: >> If readline is used by psql, a history file is automatically used. >> This patch adds the special file name 'none', which if set as the >> HISTFILE parameter, will cause psql not to use the history file. > I think it would be cleaner to use a separate \set variable to control > whether a history file is written, rather than needlessly overloading > the meaning of HISTFILE. Why is this useful at all? There's already the -n (don't use readline) switch. regards, tom lane
Tom Lane wrote: > Neil Conway <neilc@samurai.com> writes: > > On Mon, 2006-08-21 at 19:27 +0300, Martin Atukunda wrote: > >> If readline is used by psql, a history file is automatically used. > >> This patch adds the special file name 'none', which if set as the > >> HISTFILE parameter, will cause psql not to use the history file. > > > I think it would be cleaner to use a separate \set variable to control > > whether a history file is written, rather than needlessly overloading > > the meaning of HISTFILE. > > Why is this useful at all? There's already the -n (don't use readline) > switch. Seems he wants readline without history, perhaps for security. Doesn't setting HISTFILE to /dev/null work? -- Bruce Momjian bruce@momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
On 8/21/06, Bruce Momjian <bruce@momjian.us> wrote: > Tom Lane wrote: > > Neil Conway <neilc@samurai.com> writes: > > > On Mon, 2006-08-21 at 19:27 +0300, Martin Atukunda wrote: > > >> If readline is used by psql, a history file is automatically used. > > >> This patch adds the special file name 'none', which if set as the > > >> HISTFILE parameter, will cause psql not to use the history file. > > > > > I think it would be cleaner to use a separate \set variable to control > > > whether a history file is written, rather than needlessly overloading > > > the meaning of HISTFILE. > > > > Why is this useful at all? There's already the -n (don't use readline) > > switch. > > Seems he wants readline without history, perhaps for security. Doesn't > setting HISTFILE to /dev/null work? > hmm, setting HISTFILE to /dev/null doesn't work on my MacOSX here. so I whipped up this patch. - Martin -
Am Freitag, 25. August 2006 17:03 schrieb Martin Atukunda: > hmm, setting HISTFILE to /dev/null doesn't work on my MacOSX here. Please elaborate on "doesn't work". -- Peter Eisentraut http://developer.postgresql.org/~petere/
On 8/25/06, Peter Eisentraut <peter_e@gmx.net> wrote: > Am Freitag, 25. August 2006 17:03 schrieb Martin Atukunda: > > hmm, setting HISTFILE to /dev/null doesn't work on my MacOSX here. > > Please elaborate on "doesn't work". > without any .psqlrc file I get the following error when quitting a psql session: could not save history to file "/Users/matlads/.psql_history": Invalid argument When I set HISTFILE to /dev/null I get the following: could not save history to file "/dev/null": Operation not permitted - Martin -
"Martin Atukunda" <matlads@gmail.com> writes: > On 8/25/06, Peter Eisentraut <peter_e@gmx.net> wrote: >> Please elaborate on "doesn't work". > without any .psqlrc file I get the following error when quitting a psql session: > could not save history to file "/Users/matlads/.psql_history": Invalid argument That is fixed in CVS HEAD. The current coding looks like: /* * return value of write_history is not standardized across GNU * readline and libedit. Therefore, check for errno becoming set * to see if the write failed. */ errno = 0; (void) write_history(fname); if (errno == 0) return true; psql_error("could not save history to file \"%s\": %s\n", fname, strerror(errno)); > When I set HISTFILE to /dev/null I get the following: > could not save history to file "/dev/null": Operation not permitted Hm. ktrace shows this happening: 23279 psql CALL open(0x302d70,0x601,0x1b6) 23279 psql NAMI "/dev/null" 23279 psql RET open 3 23279 psql CALL fchmod(0x3,0x180) 23279 psql RET fchmod -1 errno 1 Operation not permitted 23279 psql CALL close(0x3) 23279 psql RET close 0 23279 psql CALL write(0x2,0xbffff180,0x44) 23279 psql GIO fd 2 wrote 68 bytes "could not save history to file "/dev/null": Operation not permitted " 23279 psql RET write 68/0x44 23279 psql CALL exit(0) There's probably no way to get Apple's libedit to not try the fchmod, so what do we want to do here? Maybe special-case the string "/dev/null"? regards, tom lane
On 8/25/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > When I set HISTFILE to /dev/null I get the following: > > could not save history to file "/dev/null": Operation not permitted > > Hm. ktrace shows this happening: > > 23279 psql CALL open(0x302d70,0x601,0x1b6) > 23279 psql NAMI "/dev/null" > 23279 psql RET open 3 > 23279 psql CALL fchmod(0x3,0x180) > 23279 psql RET fchmod -1 errno 1 Operation not permitted > 23279 psql CALL close(0x3) > 23279 psql RET close 0 > 23279 psql CALL write(0x2,0xbffff180,0x44) > 23279 psql GIO fd 2 wrote 68 bytes > "could not save history to file "/dev/null": Operation not permitted > " > 23279 psql RET write 68/0x44 > 23279 psql CALL exit(0) > > There's probably no way to get Apple's libedit to not try the fchmod, > so what do we want to do here? Maybe special-case the string > "/dev/null"? If this is OK, I can up with a patch that special cases /dev/null as a HISTFILE if libedit is found. - Martin -
"Martin Atukunda" <matlads@gmail.com> writes: > On 8/25/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> There's probably no way to get Apple's libedit to not try the fchmod, >> so what do we want to do here? Maybe special-case the string >> "/dev/null"? > If this is OK, I can up with a patch that special cases /dev/null as a > HISTFILE if libedit is found. I was thinking of basically a one-liner addition to write_history to skip the whole thing if strcmp(fname, DEVNULL) == 0. Should be reasonably inoffensive on anyone's machine. regards, tom lane
On 8/25/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: > "Martin Atukunda" <matlads@gmail.com> writes: > > On 8/25/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> There's probably no way to get Apple's libedit to not try the fchmod, > >> so what do we want to do here? Maybe special-case the string > >> "/dev/null"? > > > If this is OK, I can up with a patch that special cases /dev/null as a > > HISTFILE if libedit is found. > > I was thinking of basically a one-liner addition to write_history > to skip the whole thing if strcmp(fname, DEVNULL) == 0. Should be > reasonably inoffensive on anyone's machine. I guess you meant saveHistory instead of write_history here. :) something like the attached diff - Martin -