]> granicus.if.org Git - postgresql/commitdiff
Provide pgbench --show-script to dump built-in scripts.
authorThomas Munro <tmunro@postgresql.org>
Mon, 15 Jul 2019 23:53:12 +0000 (11:53 +1200)
committerThomas Munro <tmunro@postgresql.org>
Mon, 15 Jul 2019 23:57:49 +0000 (11:57 +1200)
Author: Fabien Coelho
Reviewed-by: Ibrar Ahmed
Discussion: https://postgr.es/m/alpine.DEB.2.21.1904081737390.5867%40lancre

doc/src/sgml/ref/pgbench.sgml
src/bin/pgbench/pgbench.c
src/bin/pgbench/t/002_pgbench_no_server.pl

index 09af9f1a7dcbfa87865ae612cdaf6ecb7316bc2f..816f9cc4c7e0be0b99c83460fada7462917b91b9 100644 (file)
@@ -355,7 +355,6 @@ pgbench <optional> <replaceable>options</replaceable> </optional> <replaceable>d
       </listitem>
      </varlistentry>
 
-
      <varlistentry>
       <term><option>-c</option> <replaceable>clients</replaceable></term>
       <term><option>--client=</option><replaceable>clients</replaceable></term>
@@ -617,6 +616,16 @@ pgbench <optional> <replaceable>options</replaceable> </optional> <replaceable>d
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>--show-script</option><replaceable>scriptname</replaceable></term>
+      <listitem>
+       <para>
+        Show the actual code of builtin script <replaceable>scriptname</replaceable>
+        on stderr, and exit immediately.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-t</option> <replaceable>transactions</replaceable></term>
       <term><option>--transactions=</option><replaceable>transactions</replaceable></term>
index 23087ef0a246d38cebd813b220d13a1307b95e5b..570cf3306af2bc9efb4619afe860469a0fc9af4e 100644 (file)
@@ -651,6 +651,7 @@ usage(void)
                   "  --progress-timestamp     use Unix epoch timestamps for progress\n"
                   "  --random-seed=SEED       set random seed (\"time\", \"rand\", integer)\n"
                   "  --sampling-rate=NUM      fraction of transactions to log (e.g., 0.01 for 1%%)\n"
+                  "  --show-script=NAME       show builtin script code, then exit\n"
                   "\nCommon options:\n"
                   "  -d, --debug              print debugging output\n"
                   "  -h, --host=HOSTNAME      database server host or socket directory\n"
@@ -4684,7 +4685,7 @@ listAvailableScripts(void)
 
        fprintf(stderr, "Available builtin scripts:\n");
        for (i = 0; i < lengthof(builtin_script); i++)
-               fprintf(stderr, "\t%s\n", builtin_script[i].name);
+               fprintf(stderr, "  %13s: %s\n", builtin_script[i].name, builtin_script[i].desc);
        fprintf(stderr, "\n");
 }
 
@@ -5124,6 +5125,7 @@ main(int argc, char **argv)
                {"log-prefix", required_argument, NULL, 7},
                {"foreign-keys", no_argument, NULL, 8},
                {"random-seed", required_argument, NULL, 9},
+               {"show-script", required_argument, NULL, 10},
                {NULL, 0, NULL, 0}
        };
 
@@ -5476,6 +5478,14 @@ main(int argc, char **argv)
                                        exit(1);
                                }
                                break;
+                       case 10:                        /* list */
+                               {
+                                       const BuiltinScript *s = findBuiltin(optarg);
+
+                                       fprintf(stderr, "-- %s: %s\n%s\n", s->name, s->desc, s->script);
+                                       exit(0);
+                               }
+                               break;
                        default:
                                fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
                                exit(1);
index 69a6d03bb3f8ffe5e12990eb4b218742ce44751a..f7fa18418b42c29e09db07e8b7bde33d769849ef 100644 (file)
@@ -218,6 +218,15 @@ pgbench(
        ],
        'pgbench builtin list');
 
+# builtin listing
+pgbench(
+       '--show-script se',
+       0,
+       [qr{^$}],
+       [ qr{select-only: }, qr{SELECT abalance FROM pgbench_accounts WHERE},
+         qr{(?!UPDATE)}, qr{(?!INSERT)} ],
+       'pgbench builtin listing');
+
 my @script_tests = (
 
        # name, err, { file => contents }