]> granicus.if.org Git - postgresql/commitdiff
Fix pgbench options -C and -R together
authorTeodor Sigaev <teodor@sigaev.ru>
Fri, 24 Mar 2017 16:23:13 +0000 (19:23 +0300)
committerTeodor Sigaev <teodor@sigaev.ru>
Fri, 24 Mar 2017 16:23:13 +0000 (19:23 +0300)
The bug is that prior to --rate doCustom was always disconnect/reconnect
without exiting, but with rate it returns if it has to wait. However threadRun
test whether there is a connection before recalling doCustom, so it was never
called.

Bug is not existed in head branch because of refactoring at
12788ae49e1933f463bc59a6efe46c4a01701b76, patch only 9.6

Author: Fabien Coelho
Reviewed-by: me
https://commitfest.postgresql.org/13/970/

src/bin/pgbench/pgbench.c

index 412f153230c681d3115a3fc670d24479bf358781..163dcad137f6477d9396fd0e33cda6df1920779e 100644 (file)
@@ -1967,7 +1967,6 @@ top:
                st->listen = false;
                st->sleeping = false;
                st->throttling = false;
-               st->is_throttled = false;
                memset(st->prepared, 0, sizeof(st->prepared));
        }
 
@@ -4345,6 +4344,12 @@ threadRun(void *arg)
                                                remains--;              /* I've aborted */
                                }
                        }
+                       else if (is_connect && st->sleeping)
+                       {
+                               /* it is sleeping for throttling, maybe it is done, let us try */
+                               if (!doCustom(thread, st, &aggs))
+                                       remains--;
+                       }
 
                        if (st->ecnt > prev_ecnt && commands[st->state]->type == META_COMMAND)
                        {