| From: | Marko Kreen <markokr(at)gmail(dot)com> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)oss(dot)ntt(dot)co(dot)jp>, greg(at)2ndquadrant(dot)com, pgsql-hackers(at)postgresql(dot)org, mmoncure(at)gmail(dot)com, shigeru(dot)hanada(at)gmail(dot)com |
| Subject: | Re: Speed dblink using alternate libpq tuple storage |
| Date: | 2012-04-05 16:30:04 |
| Message-ID: | 20120405163004.GA27513@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, Apr 04, 2012 at 06:41:00PM -0400, Tom Lane wrote:
> Marko Kreen <markokr(at)gmail(dot)com> writes:
> > On Wed, Apr 4, 2012 at 10:17 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >> Given the lack of consensus around the suspension API, maybe the best
> >> way to get the underlying libpq patch to a committable state is to take
> >> it out --- that is, remove the "return zero" option for row processors.
>
> > Agreed.
>
> Done that way.
Minor cleanups:
* Change callback return value to be 'bool': 0 is error.
Currently the accepted return codes are 1 and -1,
which is weird.
If we happen to have the 'early-exit' logic in the future,
it should not work via callback return code. So keeping the 0
in reserve is unnecessary.
* Support exceptions in multi-statement PQexec() by storing
finished result under PGconn temporarily. Without doing it,
the result can leak if callback longjmps while processing
next result.
* Add <caution> to docs for permanently keeping custom callback.
This API fragility is also reason why early-exit (if it appears)
should not work via callback - instead it should give safer API.
--
marko
| Attachment | Content-Type | Size |
|---|---|---|
| rowproc-cleanups.diff | text/x-diff | 6.4 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jeff Janes | 2012-04-05 16:30:49 | Re: patch: improve SLRU replacement algorithm |
| Previous Message | Tom Lane | 2012-04-05 16:29:23 | Re: pgsql_fdw, FDW for PostgreSQL server |