I think I'd like to quibble with some of the names a bit, though.
That is a good idea, because I'm not a native English speaker and I was not so sure for many options.
The patch adds --fill-factor, but I think we should spell it without the hyphen: --fillfactor.
Fine with me.
I think --quiet-log should be spelled --quiet.
ISTM that --quiet usually means "not verbose on stdout", so I added log because this was specific to the log output, and that there may be a need for a --quiet option for stdout at some time.
I think --connect for each connection is not very descriptive; maybe --connection-per-transaction or something, although that's kind of long.
Yes, I think that it is too long. You have to type them! What about '--reconnect'?
I think -M should be aliased to --protocol, not --query-mode.
Fine with me.
--skip-some-update is incorrectly pluralized; if that's what we're going to use, it should be --skip-some-updates.
Indeed.
Alternatively, we could use --update-large-tables-only, which might make the intent more clear.
Yep, but quite long.
On another note, it doesn't look like this updates the output of pgbench --help, which seems important.
Indeed, it should.Please find attached a v4 which takes into account most of your comments, but "very very long" option names.
-- Fabien.
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c index 1303217..e8126f5 100644 --- a/contrib/pgbench/pgbench.c +++ b/contrib/pgbench/pgbench.c @@ -329,11 +329,16 @@ usage(void) "Usage:\n" " %s [OPTION]... [DBNAME]\n" "\nInitialization options:\n" - " -i invokes initialization mode\n" - " -F NUM fill factor\n" - " -n do not run VACUUM after initialization\n" - " -q quiet logging (one message each 5 seconds)\n" - " -s NUM scaling factor\n" + " -i, --initialize\n" + " invokes initialization mode\n" + " -F NUM, --fillfactor NUM\n" + " set fill factor\n" + " -n, --no-vacuum\n" + " do not run VACUUM after initialization\n" + " -q, --quiet-log\n" + " quiet logging (one message each 5 seconds)\n" + " -s NUM, --scale NUM\n" + " scaling factor\n" " --foreign-keys\n" " create foreign key constraints between tables\n" " --index-tablespace=TABLESPACE\n" @@ -343,32 +348,50 @@ usage(void) " --unlogged-tables\n" " create tables as unlogged tables\n" "\nBenchmarking options:\n" - " -c NUM number of concurrent database clients (default: 1)\n" - " -C establish new connection for each transaction\n" - " -D VARNAME=VALUE\n" + " -c NUM, --client NUM\n" + " number of concurrent database clients (default: 1)\n" + " -C, --connect\n" + " establish new connection for each transaction\n" + " -D VARNAME=VALUE, --define VARNAME=VALUE\n" " define variable for use by custom script\n" - " -f FILENAME read transaction script from FILENAME\n" - " -j NUM number of threads (default: 1)\n" - " -l write transaction times to log file\n" - " -M simple|extended|prepared\n" - " protocol for submitting queries to server (default: simple)\n" - " -n do not run VACUUM before tests\n" - " -N do not update tables \"pgbench_tellers\" and \"pgbench_branches\"\n" - " -r report average latency per command\n" - " -s NUM report this scale factor in output\n" - " -S perform SELECT-only transactions\n" - " -t NUM number of transactions each client runs (default: 10)\n" - " -T NUM duration of benchmark test in seconds\n" - " -v vacuum all four standard tables before tests\n" + " -f FILENAME, --file FILENAME\n" + " read transaction script from FILENAME\n" + " -j NUM, --jobs NUM\n" + " number of threads (default: 1)\n" + " -l, --log write transaction times to log file\n" + " -M simple|extended|prepared, --protocole ...\n" + " protocol for submitting queries to server " + "(default: simple)\n" + " -n, --no-vacuum\n" + " do not run VACUUM before tests\n" + " -N, --skip-some-updates\n" + " do not update tables \"pgbench_tellers\"" + " and \"pgbench_branches\"\n" + " -r, --report-latencies\n" + " report average latency per command\n" + " -s NUM, --scale NUM\n" + " report this scale factor in output\n" + " -S, --select-only\n" + " perform SELECT-only transactions\n" + " -t NUM, --transactions NUM\n" + " number of transactions each client runs " + "(default: 10)\n" + " -T NUM, --time NUM\n" + " duration of benchmark test in seconds\n" + " -v, --vacuum-all\n" + " vacuum all four standard tables before tests\n" " --aggregate-interval=NUM\n" " aggregate data over NUM seconds\n" " --sampling-rate=NUM\n" " fraction of transactions to log (e.g. 0.01 for 1%% sample)\n" "\nCommon options:\n" - " -d print debugging output\n" - " -h HOSTNAME database server host or socket directory\n" - " -p PORT database server port number\n" - " -U USERNAME connect as specified database user\n" + " -d, --debug print debugging output\n" + " -h HOSTNAME, --host HOSTNAME\n" + " database server host or socket directory\n" + " -p PORT, --port PORT\n" + " database server port number\n" + " -U USERNAME, --username USERNAME\n" + " connect as specified database user\n" " -V, --version output version information, then exit\n" " -?, --help show this help, then exit\n" "\n" @@ -2109,6 +2132,30 @@ int main(int argc, char **argv) { static struct option long_options[] = { + /* systematic long/short named options*/ + {"client", required_argument, NULL, 'c'}, + {"connect", no_argument, NULL, 'C'}, + {"debug", no_argument, NULL, 'd'}, + {"define", required_argument, NULL, 'D'}, + {"file", required_argument, NULL, 'f'}, + {"fillfactor", required_argument, NULL, 'F'}, + {"host", required_argument, NULL, 'h'}, + {"initialize", no_argument, NULL, 'i'}, + {"jobs", required_argument, NULL, 'j'}, + {"log", no_argument, NULL, 'l'}, + {"no-vacuum", no_argument, NULL, 'n'}, + {"port", required_argument, NULL, 'p'}, + {"protocol", required_argument, NULL, 'M'}, + {"quiet-log", no_argument, NULL, 'q'}, + {"report-latencies", no_argument, NULL, 'r'}, + {"scale", required_argument, NULL, 's'}, + {"select-only", no_argument, NULL, 'S'}, + {"skip-some-updates", no_argument, NULL, 'N'}, + {"time", required_argument, NULL, 'T'}, + {"transactions", required_argument, NULL, 't'}, + {"username", required_argument, NULL, 'U'}, + {"vacuum-all", no_argument, NULL, 'v'}, + /* long-named only options */ {"foreign-keys", no_argument, &foreign_keys, 1}, {"index-tablespace", required_argument, NULL, 3}, {"tablespace", required_argument, NULL, 2}, diff --git a/doc/src/sgml/pgbench.sgml b/doc/src/sgml/pgbench.sgml index 8775606..5a367ac 100644 --- a/doc/src/sgml/pgbench.sgml +++ b/doc/src/sgml/pgbench.sgml @@ -150,6 +150,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-i</option></term> + <term><option>--initialize</option></term> <listitem> <para> Required to invoke initialization mode. @@ -159,6 +160,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-F</option> <replaceable>fillfactor</></term> + <term><option>--fillfactor</option> <replaceable>fillfactor</></term> <listitem> <para> Create the <structname>pgbench_accounts</>, @@ -171,6 +173,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-n</option></term> + <term><option>--no-vacuum</option></term> <listitem> <para> Perform no vacuuming after initialization. @@ -180,6 +183,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-q</option></term> + <term><option>--quiet-log</option></term> <listitem> <para> Switch logging to quiet mode, producing only one progress message per 5 @@ -191,6 +195,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-s</option> <replaceable>scale_factor</></term> + <term><option>--scale</option> <replaceable>scale_factor</></term> <listitem> <para> Multiply the number of rows generated by the scale factor. @@ -259,6 +264,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-c</option> <replaceable>clients</></term> + <term><option>--client</option> <replaceable>clients</></term> <listitem> <para> Number of clients simulated, that is, number of concurrent database @@ -269,6 +275,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-C</option></term> + <term><option>--connect</option></term> <listitem> <para> Establish a new connection for each transaction, rather than @@ -280,6 +287,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-d</option></term> + <term><option>--debug</option></term> <listitem> <para> Print debugging output. @@ -289,6 +297,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-D</option> <replaceable>varname</><literal>=</><replaceable>value</></term> + <term><option>--define</option> <replaceable>varname</><literal>=</><replaceable>value</></term> <listitem> <para> Define a variable for use by a custom script (see below). @@ -299,6 +308,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-f</option> <replaceable>filename</></term> + <term><option>--file</option> <replaceable>filename</></term> <listitem> <para> Read transaction script from <replaceable>filename</>. @@ -311,6 +321,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-j</option> <replaceable>threads</></term> + <term><option>--jobs</option> <replaceable>threads</></term> <listitem> <para> Number of worker threads within <application>pgbench</application>. @@ -324,6 +335,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-l</option></term> + <term><option>--log</option></term> <listitem> <para> Write the time taken by each transaction to a log file. @@ -334,6 +346,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-M</option> <replaceable>querymode</></term> + <term><option>--protocol</option> <replaceable>querymode</></term> <listitem> <para> Protocol to use for submitting queries to the server: @@ -356,6 +369,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-n</option></term> + <term><option>--no-vacuum</option></term> <listitem> <para> Perform no vacuuming before running the test. @@ -370,6 +384,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-N</option></term> + <term><option>--skip-some-updates</option></term> <listitem> <para> Do not update <structname>pgbench_tellers</> and @@ -382,6 +397,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-r</option></term> + <term><option>--report-latencies</option></term> <listitem> <para> Report the average per-statement latency (execution time from the @@ -393,6 +409,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-s</option> <replaceable>scale_factor</></term> + <term><option>--scale</option> <replaceable>scale_factor</></term> <listitem> <para> Report the specified scale factor in <application>pgbench</>'s @@ -407,6 +424,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-S</option></term> + <term><option>--select-only</option></term> <listitem> <para> Perform select-only transactions instead of TPC-B-like test. @@ -416,6 +434,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-t</option> <replaceable>transactions</></term> + <term><option>--transactions</option> <replaceable>transactions</></term> <listitem> <para> Number of transactions each client runs. Default is 10. @@ -425,6 +444,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-T</option> <replaceable>seconds</></term> + <term><option>--time</option> <replaceable>seconds</></term> <listitem> <para> Run the test for this many seconds, rather than a fixed number of @@ -436,6 +456,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-v</option></term> + <term><option>--vacuum-all</option></term> <listitem> <para> Vacuum all four standard tables before running the test. @@ -495,6 +516,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-h</option> <replaceable>hostname</></term> + <term><option>--host</option> <replaceable>hostname</></term> <listitem> <para> The database server's host name @@ -504,6 +526,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-p</option> <replaceable>port</></term> + <term><option>--port</option> <replaceable>port</></term> <listitem> <para> The database server's port number @@ -513,6 +536,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> <varlistentry> <term><option>-U</option> <replaceable>login</></term> + <term><option>--username</option> <replaceable>login</></term> <listitem> <para> The user name to connect as
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers