Re: [GENERAL] Retrieving query results - Mailing list pgsql-general

From Michael Paquier
Subject Re: [GENERAL] Retrieving query results
Date
Msg-id CAB7nPqRnDMMKybjdC5fFd4XyDaE65UkMB2kAZ_NRm1T=AcZgCQ@mail.gmail.com
Whole thread Raw
In response to Re: [GENERAL] Retrieving query results  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On Sun, Aug 27, 2017 at 12:12 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Michael Paquier <michael.paquier@gmail.com> writes:
>> On Fri, Aug 25, 2017 at 8:10 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> I think the real problem occurs where we realloc the array bigger.
>
>> Looking at the surroundings, I think that it would be nice to have
>> pqAddTuple and PQsetvalue set an error message with this patch.
>
> Yeah, I was thinking about that myself - the existing design presumes
> that the only possible reason for failure of pqAddTuple is OOM, but
> it'd be better to distinguish "too many tuples" from true OOM.  So
> we should also refactor to make pqAddTuple responsible for setting
> the error message.  Might be best to do the refactoring first.

Attached are two patches:
1) 0001 refactors the code around pqAddTuple to be able to handle
error messages and assign them in PQsetvalue particularly.
2) 0002 adds sanity checks in pqAddTuple for overflows, maximizing the
size of what is allocated to INT_MAX but now more.

pqRowProcessor() still has errmsgp, but it is never used on HEAD. At
least with this set of patches it comes to be useful. We could rework
check_field_number() to use as well an error message string, but I
have left that out to keep things simple. Not sure if any complication
is worth compared to just copying the error message in case of an
unmatching column number.

Attached is as well a small program I have used to test PQsetvalue
through PQcopyResult to see if results get correctly allocated at each
call, looking at the error message stacks on the way.
--
Michael

Attachment

pgsql-general by date:

Previous
From: John Lawlor
Date:
Subject: [GENERAL] Installing 9.5 doesn't create 'postgres' unix account on Cent OS 7
Next
From: Michael Paquier
Date:
Subject: Re: [GENERAL] Extension coverage