done in 0.68 s (drop 0.06 s, create table 0.02 s, generate 0.34 s, vacuum 0.13 s, primary keys 0.13 s).See the durations on the last line.
It's even better with working TAP tests. -- Fabien.
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 99529de52a..76a5b87fe8 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -3941,32 +3941,48 @@ checkInitSteps(const char *initialize_steps) static void runInitSteps(const char *initialize_steps) { - PGconn *con; - const char *step; + PQExpBufferData stats; + PGconn *con; + const char *step; + double run_time = 0.0; + bool first = true; + + initPQExpBuffer(&stats); if ((con = doConnect()) == NULL) exit(1); for (step = initialize_steps; *step != '\0'; step++) { + instr_time start; + char *op = NULL; + + INSTR_TIME_SET_CURRENT(start); + switch (*step) { case 'd': + op = "drop"; initDropTables(con); break; case 't': + op = "create table"; initCreateTables(con); break; case 'g': + op = "generate", initGenerateData(con); break; case 'v': + op = "vacuum"; initVacuum(con); break; case 'p': + op = "primary keys"; initCreatePKeys(con); break; case 'f': + op = "foreign keys"; initCreateFKeys(con); break; case ' ': @@ -3977,10 +3993,28 @@ runInitSteps(const char *initialize_steps) PQfinish(con); exit(1); } + + if (op != NULL) + { + instr_time diff; + double elapsed_sec; + + INSTR_TIME_SET_CURRENT(diff); + INSTR_TIME_SUBTRACT(diff, start); + elapsed_sec = INSTR_TIME_GET_DOUBLE(diff); + + if (!first) + appendPQExpBufferStr(&stats, ", "); + + first = false; + appendPQExpBuffer(&stats, "%s %.2f s", op, elapsed_sec); + run_time += elapsed_sec; + } } - fprintf(stderr, "done.\n"); + fprintf(stderr, "done in %.2f s (%s).\n", run_time, stats.data); PQfinish(con); + termPQExpBuffer(&stats); } /* diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl index 62906d5e55..696dc2b36c 100644 --- a/src/bin/pgbench/t/001_pgbench_with_server.pl +++ b/src/bin/pgbench/t/001_pgbench_with_server.pl @@ -101,7 +101,7 @@ pgbench( [qr{^$}], [ qr{creating tables}, qr{vacuuming}, - qr{creating primary keys}, qr{done\.} + qr{creating primary keys}, qr{done in \d+\.\d\d s } ], 'pgbench scale 1 initialization',); @@ -116,7 +116,7 @@ pgbench( qr{vacuuming}, qr{creating primary keys}, qr{creating foreign keys}, - qr{done\.} + qr{done in \d+\.\d\d s } ], 'pgbench scale 1 initialization'); @@ -131,7 +131,7 @@ pgbench( qr{creating primary keys}, qr{.* of .* tuples \(.*\) done}, qr{creating foreign keys}, - qr{done\.} + qr{done in \d+\.\d\d s } ], 'pgbench --init-steps');