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

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Fix for "q" with psql display paging dumps out of psql
Date: 2004-12-01 23:03:54
Message-ID: 200412012303.iB1N3sd02672@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


You will be glad to know that 8.0 will use a different implementation
for thread handling of SIGPIPE, though your asynchronous handling of
SIGPIPE will still cause problems.

---------------------------------------------------------------------------

Jim Seymour wrote:
> 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
> >
>
> ---------------------------(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
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2004-12-01 23:44:24 Re: [HACKERS] plperl Safe restrictions
Previous Message Tom Lane 2004-12-01 22:48:28 Re: New compile warnings for inheritance