Re: [patch] libpq one-row-at-a-time API

Marko Kreen <markokr@gmail.com>

From: Marko Kreen <markokr@gmail.com>
To: Postgres Hackers <pgsql-hackers@postgresql.org>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2012-07-21T19:49:07Z
Lists: pgsql-hackers

Attachments

Here is 2 approaches how to get to state where only PQsetSingleRowMode()
is available.  Both on top of REL9_2_STABLE branch.

a) Remove callback hooks, keep rowBuf, implement single-row-mode on
   top of that.   This was posted before, I just additionally removed
   the PQgetRowData() function.

	git pull git://github.com/markokr/postgres.git single-row-mode1
	https://github.com/markokr/postgres/commits/single-row-mode1

   Commits:
	libpq: Single-row based processing
	libpq, dblink: Remove row processor API

   Advantage: makes easier to play with PQgetRowData() or potatial
   faster PGresult creation methods.  Smaller change compared to
   libpq from 9.2beta than b).

b) Revert row-callback changes completely, implement single-row-mode on
   top of virgin libpq.  Only problem here was keeping fixes implemented
   as part of row-callback patch.  Single-row-mode itself is quite simple.

	git pull git://github.com/markokr/postgres.git  single-row-mode1
	https://github.com/markokr/postgres/commits/single-row-mode1

   Feature patch:
	https://github.com/markokr/postgres/commit/b5e822125c655f189875401c61317242705143b9

   Commits:
	dblink: revert conversion to row processor API patch
	libpq: revert row processor API patch
	libpq: random fixes
	libpq: single-row mode
	dblink: use single-row-mode

   Advantage: smaller change compared to libpq from 9.1 than a).

As the patch has suffered a lot from trying to provide both macro- and
micro-optimization (on-the-fly row processing vs. more efficient row
processing), maybe b) is safer choice for 9.2?

In case somebody wants to look at the patches without git (or web),
I attaches them as tgz too.

-- 
marko