Re: Speed dblink using alternate libpq tuple storage
Kyotaro Horiguchi <horiguchi.kyotaro@oss.ntt.co.jp>
From: Kyotaro HORIGUCHI <horiguchi.kyotaro@oss.ntt.co.jp>
To: markokr@gmail.com
Cc: shigeru.hanada@gmail.com, mmoncure@gmail.com, pgsql-hackers@postgresql.org, greg@2ndquadrant.com
Date: 2012-02-16T08:49:34Z
Lists: pgsql-hackers
Attachments
- libpq_rowproc_20120216.patch (text/x-patch) patch
- libpq_rowproc_doc_20120216.patch (text/x-patch) patch
- dblink_use_rowproc_20120216.patch (text/x-patch) patch
- early_exit_20120216.diff (text/x-patch) patch
Hello,
I added the function PQskipRemainingResult() and use it in
dblink. This reduces the number of executing try-catch block from
the number of rows to one per query in dblink.
- fe-exec.c : new function PQskipRemainingResult.
- dblink.c : using PQskipRemainingResult in dblink_record_internal().
- libpq.sgml: documentation for PQskipRemainingResult and related
change in RowProcessor.
> Instead I added simple feature: rowProcessor can return '2',
> in which case getAnotherTuple() does early exit without setting
> any error state. In user side it appears as PQisBusy() returned
> with TRUE result. All pointers stay valid, so callback can just
> stuff them into some temp area.
...
> It's included in main patch, but I also attached it as separate patch
> so that it can be examined separately and reverted if not acceptable.
This patch is based on the patch above and composed in the same
manner - main three patches include all modifications and the '2'
patch separately.
This patch is not rebased to the HEAD because the HEAD yields
error about the symbol LEAKPROOF...
regards,
--
Kyotaro Horiguchi
NTT Open Source Software Center