On Wed, Feb 1, 2012 at 10:32 AM, Kyotaro HORIGUCHI
>> Another thing: if realloc() fails, the old pointer stays valid.
>> So it needs to be assigned to temp variable first, before
>> overwriting old pointer.
> mmm. I've misunderstood of the realloc.. I'll fix there in the
> next patch.
Please wait a moment, I started doing small cleanups,
and now have some larger ones too. I'll send it soon.
OTOH, if you have already done something, you can send it,
I have various states in GIT so it should not be hard
to merge things.
>> And seems malloc() is preferable to palloc() to avoid
>> exceptions inside row processor. Although latter
>> one could be made to work, it might be unnecessary
>> complexity. (store current pqresult into remoteConn?)
> Hmm.. palloc may throw ERRCODE_OUT_OF_MEMORY so I must catch it
> and return NULL. That seems there is no difference to using
> malloc after all.. However, the inhibition of throwing exceptions
> in RowProcessor is not based on any certain fact, so palloc here
> may make sense if we can do that.
No, I was thinking about storing the result in connection
struct and then letting the exception pass, as the
PGresult can be cleaned later. Thus we could get rid
of TRY/CATCH in per-row handler. (At that point
the PGresult is already under PGconn, so maybe
it's enough to clean that one later?)
But for now, as the TRY is already there, it should be
also simple to move palloc usage inside it.
In response to
pgsql-hackers by date
|Next:||From: Chetan Suttraway||Date: 2012-02-01 10:23:53|
|Subject: patch for implementing SPI_gettypemod()|
|Previous:||From: Dean Rasheed||Date: 2012-02-01 09:09:56|
|Subject: Re: Index-only scan performance regression|