Re: PQexec() hangs on OOM - Mailing list pgsql-bugs

From Michael Paquier
Subject Re: PQexec() hangs on OOM
Date
Msg-id CAB7nPqQzyE8=8_NyTAJgJ05WLRfxOe-8CihsLQtomr9nExLkQw@mail.gmail.com
Whole thread Raw
In response to Re: PQexec() hangs on OOM  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-bugs
On Tue, Sep 8, 2015 at 12:13 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> On Mon, Sep 7, 2015 at 10:41 PM, Michael Paquier wrote:
>> In any case, attached are two patches:
>> - 0001 adds the OOM/failure handling for the BIND and COPY start
>> messages. This time the connection is not dropped. After a failure,
>> successive commands work as well, this addresses the previous issue
>> you reported.
>> - 0002 is a cleanup bonus, getRowDescriptions and getAnotherTuple have
>> some dead code that I think would be better removed, those are
>> remnants from a copy/paste from the similar code of protocol 2.
>
> And I forgot... Attached is a simple program to test BIND messages.

And it occurred to me after sleeping on it that what I sent earlier is
not enough: in the case where the server has sent only a partial
message, we should not move into an error code path, but simply get
back into the loop of pqGetResult and wait for additional input from
the server. Attached are patches to fix that.
Regards,
--
Michael

Attachment

pgsql-bugs by date:

Previous
From: Michael Paquier
Date:
Subject: Re: PQexec() hangs on OOM
Next
From: Fujii Masao
Date:
Subject: Re: GRANT USAGE ON SEQUENCE missing from psql command completion