Allow total number of transactions in pgbench to exceed INT_MAX.

Change the total-transactions counters from int32 to int64 to accommodate
cases where we do more than 2^31 transactions during a run.  This patch
does not change the INT_MAX limit on explicit "-t" parameters, but it
does allow the product of the -t and -c parameters to exceed INT_MAX, or
allow a -T limit that is large enough that more than 2^31 transactions
can be completed.  While pgbench did not actually fail in such cases,
it did print an incorrect total-transactions count, and some of the
derived numbers such as TPS would have been wrong as well.

Tomas Vondra
This commit is contained in:
Tom Lane 2014-05-25 16:33:29 -04:00
parent 9fa93530c8
commit 9a65fb3507
1 changed files with 6 additions and 6 deletions

View File

@ -239,7 +239,7 @@ typedef struct
typedef struct
{
instr_time conn_time;
int xacts;
int64 xacts;
int64 latencies;
int64 sqlats;
int64 throttle_lag;
@ -2180,7 +2180,7 @@ process_builtin(char *tb)
/* print out results */
static void
printResults(int ttype, int normal_xacts, int nclients,
printResults(int ttype, int64 normal_xacts, int nclients,
TState *threads, int nthreads,
instr_time total_time, instr_time conn_total_time,
int64 total_latencies, int64 total_sqlats,
@ -2213,13 +2213,13 @@ printResults(int ttype, int normal_xacts, int nclients,
if (duration <= 0)
{
printf("number of transactions per client: %d\n", nxacts);
printf("number of transactions actually processed: %d/%d\n",
normal_xacts, nxacts * nclients);
printf("number of transactions actually processed: " INT64_FORMAT "/" INT64_FORMAT "\n",
normal_xacts, (int64) nxacts * nclients);
}
else
{
printf("duration: %d s\n", duration);
printf("number of transactions actually processed: %d\n",
printf("number of transactions actually processed: " INT64_FORMAT "\n",
normal_xacts);
}
@ -2359,7 +2359,7 @@ main(int argc, char **argv)
instr_time start_time; /* start up time */
instr_time total_time;
instr_time conn_total_time;
int total_xacts = 0;
int64 total_xacts = 0;
int64 total_latencies = 0;
int64 total_sqlats = 0;
int64 throttle_lag = 0;