postgres.git / summary / log / commit / refs

commit    47211af17a2dbee38b53b2ea6de81499dbb2c7f5
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Thu Mar 17 03:18:07 2016 +0000

    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.


src/bin/pgbench/pgbench.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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)); } /* [parent: 5db51464311e]