Re: Fix for "q" with psql display paging dumps out of psql

From: jseymour(at)linxnet(dot)com (Jim Seymour)
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Fix for "q" with psql display paging dumps out of psql
Date: 2004-11-28 14:55:23
Message-ID: 20041128145523.38FAA430E@jimsun.linxnet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I'm kind of wondering if anybody on the dev team noticed this and
what, if anything, they planned to do with it?

Jim

jseymour(at)linxnet(dot)com (Jim Seymour) wrote:
>
>
> Hi,
>
> Environment:
>
> SunOS 5.7 Generic_106541-29 sun4u sparc SUNW,UltraSPARC-IIi-Engine
> Postgresql-7.4.6
> Build config: --with-java --enable-thread-safety
> gcc version 3.3.1
> less-381
> readline-4.3
>
> $ echo $PAGER
> /usr/local/bin/less
> $ echo $LESS
> -e
>
> I recently upgraded from 7.4.2 to 7.4.6 and ran into an annoying
> problem. Thereafter, most times, "q"uitting out of paged display
> output would dump me straight out of psql if the query result was
> sufficiently large.
>
> A bit of debugging revealed psql receiving a SIGPIPE to be the
> problem.
>
> Building pgsql w/o --enable-thread-safety eliminated the problem.
>
> It looks like the culprit is asynchronous SIGPIPE signals under Solaris
> 7 when using thread-safe libraries. Here's a reference:
> <http://www.lambdacs.com/cpt/FAQ.html#Q339>.
>
> I do not know if Solaris 8 and beyond behave this way. (Apparently
> async SIGPIPE is not POSIX-compliant, so one hopes Sun has fixed this
> broken behaviour.)
>
> Here's a fix that's simple, effective and doesn't hurt anything else:
>
> ------------------------- begin included text --------------------------
> *** src/bin/psql/print.c-orig Wed Nov 17 08:04:47 2004
> --- src/bin/psql/print.c Sat Nov 20 10:43:22 2004
> ***************
> *** 1119,1124 ****
> --- 1119,1128 ----
> {
> pclose(output);
> #ifndef WIN32
> + /* The SIG_IGN is to compensate for broken Solaris 7
> + * (async) SIGPIPE handling with --enable-thread-safety
> + */
> + pqsignal(SIGPIPE, SIG_IGN);
> pqsignal(SIGPIPE, SIG_DFL);
> #endif
> }
> -------------------------- end included text ---------------------------
>
> Thanks to Andrew, over at SuperNews, for the idea.
>
> Regards,
> Jim
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Christopher Kings-Lynne 2004-11-28 14:57:12 Re: Error: column "nsptablespace" does not exist
Previous Message Bruce Momjian 2004-11-28 14:35:58 Re: Non-C locale and LIKE