summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-03-16 23:18:07 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-03-16 23:18:07 -0400
commit47211af17a2dbee38b53b2ea6de81499dbb2c7f5 (patch)
treea7d344633833c0c327081daa8d26a8a9ab4a5e53 /src
parent5db51464311eb7fe4e90030c6a514ff61e9f1c00 (diff)
Fix "pg_bench -C -M prepared".
This didn't work because when we dropped and re-established a database connection, we did not bother to reset session-specific state such as the statements-are-prepared flags. The st->prepared[] array certainly needs to be flushed, and I cleared a couple of other fields as well that couldn't possibly retain meaningful state for a new connection. In passing, fix some bogus comments and strange field order choices. Per report from Robins Tharakan.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pgbench/pgbench.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 5a3c6cd527f..d1f1ad28374 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -230,9 +230,9 @@ typedef struct
int id; /* client No. */
int state; /* state No. */
bool listen; /* whether an async query has been sent */
- bool is_throttled; /* whether transaction throttling is done */
bool sleeping; /* whether the client is napping */
bool throttling; /* whether nap is for throttling */
+ bool is_throttled; /* whether transaction throttling is done */
Variable *variables; /* array of variable definitions */
int nvariables;
int64 txn_scheduled; /* scheduled start time of transaction (usec) */
@@ -1522,6 +1522,13 @@ top:
}
INSTR_TIME_SET_CURRENT(end);
INSTR_TIME_ACCUM_DIFF(thread->conn_time, end, start);
+
+ /* Reset session-local state */
+ st->listen = false;
+ st->sleeping = false;
+ st->throttling = false;
+ st->is_throttled = false;
+ memset(st->prepared, 0, sizeof(st->prepared));
}
/*