Commit b2316088 authored by Heikki Linnakangas's avatar Heikki Linnakangas

Add :client_id automatic variable for custom pgbench scripts.

This makes it easier to write custom scripts that have different logic for
each client.

Gurjeet Singh, with some changes by me.
parent 46e1434f
......@@ -2544,6 +2544,20 @@ main(int argc, char **argv)
}
}
/*
* Define a :client_id variable that is unique per connection. But don't
* override an explicit -D switch.
*/
if (getVariable(&state[0], "client_id") == NULL)
{
for (i = 0; i < nclients; i++)
{
snprintf(val, sizeof(val), "%d", i);
if (!putVariable(&state[i], "startup", "client_id", val))
exit(1);
}
}
if (!is_no_vacuum)
{
fprintf(stderr, "starting vacuum...");
......
......@@ -600,13 +600,39 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
Variables can be set by the command-line <option>-D</> option,
explained above, or by the meta commands explained below.
In addition to any variables preset by <option>-D</> command-line options,
the variable <literal>scale</> is preset to the current scale factor.
there are a few variables that are preset automatically, listed in
<xref linkend="pgbench-automatic-variables">. A value specified for these
variables using <option>-D</> takes precedence over the automatic presets.
Once set, a variable's
value can be inserted into a SQL command by writing
<literal>:</><replaceable>variablename</>. When running more than
one client session, each session has its own set of variables.
</para>
<table id="pgbench-automatic-variables">
<title>Automatic variables</title>
<tgroup cols="2">
<thead>
<row>
<entry>Variable</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry> <literal>scale</literal> </entry>
<entry>current scale factor</entry>
</row>
<row>
<entry> <literal>client_id</literal> </entry>
<entry>unique number identifying the client session (starts from zero)</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Script file meta commands begin with a backslash (<literal>\</>).
Arguments to a meta command are separated by white space.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment