From: | Marko Kreen <markokr(at)gmail(dot)com> |
---|---|
To: | Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)oss(dot)ntt(dot)co(dot)jp> |
Cc: | 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-02-23 12:34:16 |
Message-ID: | 20120223123416.GA19113@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Feb 23, 2012 at 07:14:03PM +0900, Kyotaro HORIGUCHI wrote:
> Hello, this is new version of the patch.
Looks good.
> By the way, I would like to ask you one question. What is the
> reason why void* should be head or tail of the parameter list?
Aesthetical reasons:
1) PGresult and PGrowValue belong together.
2) void* is probably the context object for handler. When doing
object-oriented programming in C the main object is usually first.
Like libpq does - PGconn is always first argument.
But as libpq does not know the actual meaning of void* for handler,
is can be last param as well.
When I wrote the demo code, I noticed that it is unnatural to have
void* in the middle.
Last comment - if we drop the plan to make PQsetRowProcessorErrMsg()
usable outside of handler, we can simplify internal usage as well:
the PGresult->rowProcessorErrMsg can be dropped and let's use
->errMsg to transport the error message.
The PGresult is long-lived structure and adding fields for such
temporary usage feels wrong. There is no other libpq code between
row processor and getAnotherTuple, so the use is safe.
--
marko
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2012-02-23 12:36:15 | Re: Initial 9.2 pgbench write results |
Previous Message | Hitoshi Harada | 2012-02-23 11:35:53 | Re: Finer Extension dependencies |