Re: extend pgbench expressions with functions

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Cc: PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: extend pgbench expressions with functions
Date: 2015-07-26 09:37:37
Message-ID: alpine.DEB.2.10.1507261101310.25082@sto
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Hello Heikki,

>> As soon as we add more functions, the way they are documented needs to be
>> reworked too; we'll need to add a table in the manual to list them.
>
> Here is a v8 with "abs", "min", "max", "random", "gaussian" et
> "exponential".
>
> [...]
>
> There is no real doc, WIP...

Here is a v9 with a doc. The implicit typing of expressions is improved.

I also added two debug functions which allow to show intermediate integer
(idebug) or double (ddebug).

\set i idebug(random(1, 10))

will print the random value and assign it to i.

I updated the defaut scripts, which seems to speed up meta command
evaluations. The initial version does less than 2 million evals per
second:

sh> cat before.sql
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts

sh> ./pgbench -T 3 -P 1 -f before.sql
[...]
tps = 1899004.793098 (excluding connections establishing)

The updated version does more than 3 million evals per second:

sh> cat after.sql
\set aid random(1, 100000 * :scale)

sh> ./pgbench -T 3 -P 1 -f after.sql
[...]
tps = 3143168.813690 (excluding connections establishing)

Suggestion:

A possibility would be to remove altogether the \setrandom stuff as the
functionality is available through \set, maybe with an error message to
advise about using \set with one of the random functions. That would
remove about 200 ugly locs...

Another option would be to translate the setrandom stuff into a \set
expression, that would maybe save 100 locs for the eval, but keep and
expand a little the "manual" parser part.

--
Fabien.

Attachment Content-Type Size
pgbench-expr-abs-9.patch text/x-diff 22.8 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2015-07-26 12:46:56 Re: Improving replay of XLOG_BTREE_VACUUM records
Previous Message Charles Clavadetscher 2015-07-26 08:59:20 Re: Speakers Wanted for pgDay Cuba