Fix "pg_bench -C -M prepared".
authorTom Lane <[email protected]>
Thu, 17 Mar 2016 03:18:08 +0000 (23:18 -0400)
committerTom Lane <[email protected]>
Thu, 17 Mar 2016 03:18:08 +0000 (23:18 -0400)
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.

contrib/pgbench/pgbench.c

index ad4374feca0c7ff65217e13e6e690e0cc0b77111..d58f90638e1c1fe29cc9b29d14424076fab56738 100644 (file)
@@ -178,7 +178,7 @@ typedef struct
    int         state;          /* state No. */
    int         cnt;            /* xacts count */
    int         ecnt;           /* error count */
-   int         listen;         /* 0 indicates that an async query has been
+   int         listen;         /* 1 indicates that an async query has been
                                 * sent */
    int         sleeping;       /* 1 indicates that the client is napping */
    int64       until;          /* napping until (usec) */
@@ -936,6 +936,11 @@ top:
        }
        INSTR_TIME_SET_CURRENT(end);
        INSTR_TIME_ACCUM_DIFF(*conn_time, end, start);
+
+       /* Reset session-local state */
+       st->listen = 0;
+       st->sleeping = 0;
+       memset(st->prepared, 0, sizeof(st->prepared));
    }
 
    /* Record transaction start time if logging is enabled */