diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 78f1e6b1e32608f6bd5e4fd4ca5a8746abb3b4a0..ae3624721e11bae0f2a6c57c83920c07550404a1 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -4652,10 +4652,21 @@ threadRun(void *arg) (cur.cnt - last.cnt); if (progress_timestamp) - sprintf(tbuf, "%.03f s", - INSTR_TIME_GET_MILLISEC(now_time) / 1000.0); + { + /* + * On some platforms the current system timestamp is + * available in now_time, but rather than get entangled + * with that, we just eat the cost of an extra syscall in + * all cases. + */ + struct timeval tv; + + gettimeofday(&tv, NULL); + snprintf(tbuf, sizeof(tbuf), "%ld.%03ld s", + (long) tv.tv_sec, (long) (tv.tv_usec / 1000)); + } else - sprintf(tbuf, "%.1f s", total_run); + snprintf(tbuf, sizeof(tbuf), "%.1f s", total_run); fprintf(stderr, "progress: %s, %.1f tps, lat %.3f ms stddev %.3f",