Remove workaround for ancient incompatibility between readline and libedit

Enterprise / PostgreSQL - Tom Lane [sss.pgh.pa.us] - 14 March 2015 12:43 UTC

GNU readline defines the return value of write_history() as "zero if OK, else an errno code". libedit's version of that function used to have a different definition (to wit, "-1 if error, else the number of lines written to the file"). We tried to work around that by checking whether errno had become nonzero, but this method has never been kosher according to the published API of either library. It's reportedly completely broken in recent Ubuntu releases: psql bleats about "No such file or directory" when saving ~/.psql_history, even though the write worked fine.

However, libedit has been following the readline definition since somewhere around 2006, so it seems all right to finally break compatibility with ancient libedit releases and trust that the return value is what readline specifies. (I'm not sure when the various Linux distributions incorporated this fix, but I did find that OS X has been shipping fixed versions since 10.5/Leopard.)

If anyone is still using such an ancient libedit, they will find that psql complains it can't write ~/.psql_history at exit, even when the file was written correctly. This is no worse than the behavior we're fixing for current releases.

Back-patch to all supported branches.

df9ebf1 Remove workaround for ancient incompatibility between readline and libedit.
src/bin/psql/input.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)

Upstream: git.postgresql.org


  • Share