Thread: 6.4.2 psql/libpq not returning after error

6.4.2 psql/libpq not returning after error

From
John Wright
Date:
Hi,

I've just installed postgres-6.4.2 after using 6.3.1 and I've noticed that
when using psql and an error occurs psql locks up.

Something like:

SELECT 'XXX'::bool;

will return an error using psql from 6.3.1 but will not return at all using
the psql from 6.4.2.  gdb shows that it is waiting on a select().

(gdb) bt
#0  0x4010f4f3 in select ()
#1  0x40038c7c in pqWait ()
#2  0x40036f16 in PQgetResult ()
#3  0x400370ac in PQexec ()
#4  0x6698 in SendQuery (...

The console running postmaster does display an error, though.

My system is OpenBSD 2.5/i386.

Any ideas?  Known bug?  Patch about?

BFN, John
--
Calculating line numbers... (interrupt to abort)

Re: [INTERFACES] 6.4.2 psql/libpq not returning after error

From
Tom Lane
Date:
John Wright <juggler@oaktree.co.uk> writes:
> I've just installed postgres-6.4.2 after using 6.3.1 and I've noticed that
> when using psql and an error occurs psql locks up.
> SELECT 'XXX'::bool;
> will return an error using psql from 6.3.1 but will not return at all using
> the psql from 6.4.2.

It works for everyone else ... we could hardly have failed to notice
such an obvious problem ;-)

Are you perhaps trying to use a 6.4.x psql with a 6.3.x backend?  (The
older postmaster should've refused such a connection in the first place,
however, so that doesn't seem likely.)  It sounds like the backend is
failing to fflush() out the last few characters of its response, but
I'm at a loss to understand why that would be happening only for you
and not all over the place.  You might try attaching to the backend
process and using gdb to see where it's sitting...

            regards, tom lane