About the patch:
I'm generally in favor of providing more options to pgbench, especially if
it can give optimization ideas to the performance conscious user.
I think that the name should be "tpcb-like-plfunc": the script does not
implement tpcb per spec, and such a function could be written in another
language with some performance benefit, or not.
Maybe that mean to relax the prefix condition to "take the first matching
name" when prefix are used.
If you are reimplementing the transaction anyway, you could consider using
UPDATE RETURNING instead of SELECT to get the balance. On the other hand
the doc says that the "steps" are put in a PL function, so maybe it should
reflect the original script.
I'm surprised by:
"select * from pgbench_transaction(:aid, :bid, :tid, :delta);\n"
Why not simply:
"select pgbench_transaction(:aid, :bid, :tid, :delta);\n"
I would suggest to use a more precise function name, in case other
functions are thought of. Maybe "pgbench_tpcb_like_plfunc".
I would suggest to indent better the PL/function and put keywords and
types in capital, and add explicitely the properties of the function (eg
STRICT, VOLATILE?).
There is a spurious space at the end of the executeStatement call line.
The patch potentially interacts with other patches in the long and
slow queue...
As usual with pgbench there are no regression tests.
--
Fabien.