]> granicus.if.org Git - postgresql/commitdiff
Fix "pg_bench -C -M prepared".
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 17 Mar 2016 03:18:08 +0000 (23:18 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
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 9e58779cc46618ac3fb2404d3f9696268e9fb2b1..172e41a32f7f362bb4c33d426e7ba8e64b83016e 100644 (file)
@@ -170,7 +170,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) */
@@ -910,6 +910,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 */