aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2019-07-16 11:53:12 +1200
committerThomas Munro <tmunro@postgresql.org>2019-07-16 11:57:49 +1200
commit5823677acc567d7790cc68972de12f6718913d7d (patch)
treee2960adc10b7e79eedc8f267fabfa53ca236465e /src
parentce8f946764005e1bde5a538542205e55f81bb6cc (diff)
downloadpostgresql-5823677acc567d7790cc68972de12f6718913d7d.tar.gz
postgresql-5823677acc567d7790cc68972de12f6718913d7d.zip
Provide pgbench --show-script to dump built-in scripts.
Author: Fabien Coelho Reviewed-by: Ibrar Ahmed Discussion: https://postgr.es/m/alpine.DEB.2.21.1904081737390.5867%40lancre
Diffstat (limited to 'src')
-rw-r--r--src/bin/pgbench/pgbench.c12
-rw-r--r--src/bin/pgbench/t/002_pgbench_no_server.pl9
2 files changed, 20 insertions, 1 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 23087ef0a24..570cf3306af 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -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);
diff --git a/src/bin/pgbench/t/002_pgbench_no_server.pl b/src/bin/pgbench/t/002_pgbench_no_server.pl
index 69a6d03bb3f..f7fa18418b4 100644
--- a/src/bin/pgbench/t/002_pgbench_no_server.pl
+++ b/src/bin/pgbench/t/002_pgbench_no_server.pl
@@ -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 }