pgbench_transact.patch
text/x-patch
Filename: pgbench_transact.patch
Type: text/x-patch
Part: 0
Message:
Re: pgbench--new transaction type
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index bb18c89..0002498 100644
*** a/contrib/pgbench/pgbench.c
--- b/contrib/pgbench/pgbench.c
*************** char *pgoptions = NULL;
*** 142,147 ****
--- 142,148 ----
char *pgtty = NULL;
char *login = NULL;
char *dbName;
+ int transact = 0; /* run in single transaction */
volatile bool timer_exceeded = false; /* flag from signal handler */
*************** usage(const char *progname)
*** 349,354 ****
--- 350,356 ----
" -r report average latency per command\n"
" -s NUM report this scale factor in output\n"
" -S perform SELECT-only transactions\n"
+ " -1 Perform in single transaction (only makes sense for -S, probably)"
" -t NUM number of transactions each client runs (default: 10)\n"
" -T NUM duration of benchmark test in seconds\n"
" -v vacuum all four standard tables before tests\n"
*************** main(int argc, char **argv)
*** 1823,1829 ****
state = (CState *) xmalloc(sizeof(CState));
memset(state, 0, sizeof(CState));
! while ((c = getopt(argc, argv, "ih:nvp:dSNc:j:Crs:t:T:U:lf:D:F:M:")) != -1)
{
switch (c)
{
--- 1825,1831 ----
state = (CState *) xmalloc(sizeof(CState));
memset(state, 0, sizeof(CState));
! while ((c = getopt(argc, argv, "ih:nvp:dSNc:j:Crs:t:T:U:lf:D:F:M:1")) != -1)
{
switch (c)
{
*************** main(int argc, char **argv)
*** 1845,1850 ****
--- 1847,1855 ----
case 'd':
debug++;
break;
+ case '1':
+ transact = 1;
+ break;
case 'S':
ttype = 1;
break;
*************** threadRun(void *arg)
*** 2294,2299 ****
--- 2299,2309 ----
{
if ((state[i].con = doConnect()) == NULL)
goto done;
+ if (transact>0) {
+ executeStatement(state[i].con, "BEGIN");
+ //executeStatement(state[i].con, "lock table pgbench_accounts in access share mode");
+ fprintf(stderr, "Started Transaction\n");
+ };
}
}