pgbench: consolidate a few PQfinish calls.
authorAndres Freund <[email protected]>
Thu, 1 Mar 2018 09:02:57 +0000 (01:02 -0800)
committerAndres Freund <[email protected]>
Thu, 1 Mar 2018 09:02:57 +0000 (01:02 -0800)
Author: Doug Rady
Discussion: https://postgr.es/m/6323D83C-9FDA-4EE1-B0ED-6971E585066A@amazon.com

src/bin/pgbench/pgbench.c

index d4209421f50afd145ffb61ddc16937ed719224d3..5c07dd9ca5ea629d778ed8cc90b4cf483fd8682e 100644 (file)
@@ -502,6 +502,7 @@ static void pgbench_error(const char *fmt,...) pg_attribute_printf(1, 2);
 static void addScript(ParsedScript script);
 static void *threadRun(void *arg);
 static void setalarm(int seconds);
+static void finishCon(CState *st);
 
 
 /* callback functions for our flex lexer */
@@ -2982,8 +2983,7 @@ doCustom(TState *thread, CState *st, StatsData *agg)
 
                                if (is_connect)
                                {
-                                       PQfinish(st->con);
-                                       st->con = NULL;
+                                       finishCon(st);
                                        INSTR_TIME_SET_ZERO(now);
                                }
 
@@ -3020,11 +3020,7 @@ doCustom(TState *thread, CState *st, StatsData *agg)
                                 */
                        case CSTATE_ABORTED:
                        case CSTATE_FINISHED:
-                               if (st->con != NULL)
-                               {
-                                       PQfinish(st->con);
-                                       st->con = NULL;
-                               }
+                               finishCon(st);
                                return;
                }
        }
@@ -3172,13 +3168,7 @@ disconnect_all(CState *state, int length)
        int                     i;
 
        for (i = 0; i < length; i++)
-       {
-               if (state[i].con)
-               {
-                       PQfinish(state[i].con);
-                       state[i].con = NULL;
-               }
-       }
+               finishCon(&state[i]);
 }
 
 /*
@@ -5266,8 +5256,7 @@ threadRun(void *arg)
                        {
                                /* interrupt client that has not started a transaction */
                                st->state = CSTATE_FINISHED;
-                               PQfinish(st->con);
-                               st->con = NULL;
+                               finishCon(st);
                                remains--;
                        }
                        else if (st->state == CSTATE_SLEEP || st->state == CSTATE_THROTTLE)
@@ -5547,6 +5536,16 @@ done:
        return NULL;
 }
 
+static void
+finishCon(CState *st)
+{
+       if (st->con != NULL)
+       {
+               PQfinish(st->con);
+               st->con = NULL;
+       }
+}
+
 /*
  * Support for duration option: set timer_exceeded after so many seconds.
  */