aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2016-03-03 19:37:13 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2016-03-03 19:37:13 -0300
commitd561f1caecbbeca2f7adab39a29432923d15b8ef (patch)
tree7d70e8552435b68d4b055b379fa46a216a51a04b /src
parent2c83f435a3deca745c666e9778229d64cb2dfc79 (diff)
downloadpostgresql-d561f1caecbbeca2f7adab39a29432923d15b8ef.tar.gz
postgresql-d561f1caecbbeca2f7adab39a29432923d15b8ef.zip
pgbench: accept unambiguous builtin prefixes for -b
This makes it easier to use "-b se" instead of typing the full "-b select-only". Author: Fabien Coelho Reviewed-by: Michaƫl Paquier
Diffstat (limited to 'src')
-rw-r--r--src/bin/pgbench/pgbench.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 66cfdc9af8b..8b0b17a74ce 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -2746,22 +2746,36 @@ listAvailableScripts(void)
fprintf(stderr, "\n");
}
+/* return builtin script "name" if unambiguous */
static char *
findBuiltin(const char *name, char **desc)
{
- int i;
+ int i,
+ found = 0,
+ len = strlen(name);
+ char *commands = NULL;
for (i = 0; i < N_BUILTIN; i++)
{
- if (strncmp(builtin_script[i].name, name,
- strlen(builtin_script[i].name)) == 0)
+ if (strncmp(builtin_script[i].name, name, len) == 0)
{
*desc = builtin_script[i].desc;
- return builtin_script[i].commands;
+ commands = builtin_script[i].commands;
+ found++;
}
}
- fprintf(stderr, "no builtin script found for name \"%s\"\n", name);
+ /* ok, unambiguous result */
+ if (found == 1)
+ return commands;
+
+ /* error cases */
+ if (found == 0)
+ fprintf(stderr, "no builtin script found for name \"%s\"\n", name);
+ else /* found > 1 */
+ fprintf(stderr,
+ "ambiguous builtin name: %d builtin scripts found for prefix \"%s\"\n", found, name);
+
listAvailableScripts();
exit(1);
}