mirror of
https://github.com/postgres/postgres.git
synced 2025-05-12 16:21:30 +03:00
Use carriage returns for data insertion logs in pgbench on terminal
This is similar to what pg_basebackup and pg_rewind do when reporting cumulative data, and that's more user-friendly. Carriage returns are now used when stderr points to a terminal, and newlines are used in other cases, like a redirection to a log file. Author: Amit Langote Reviewed-by: Fabien Coelho Discussion: https://postgr.es/m/CA+HiwqFNwEjPeVaQsp2L7DyCPv1Eg1guwhrVhzMYqUJUk8ULKg@mail.gmail.com
This commit is contained in:
parent
85b9ef5fe7
commit
d37ddb745b
@ -3835,6 +3835,9 @@ initGenerateDataClientSide(PGconn *con)
|
|||||||
remaining_sec;
|
remaining_sec;
|
||||||
int log_interval = 1;
|
int log_interval = 1;
|
||||||
|
|
||||||
|
/* Stay on the same line if reporting to a terminal */
|
||||||
|
char eol = isatty(fileno(stderr)) ? '\r' : '\n';
|
||||||
|
|
||||||
fprintf(stderr, "generating data (client-side)...\n");
|
fprintf(stderr, "generating data (client-side)...\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3910,10 +3913,10 @@ initGenerateDataClientSide(PGconn *con)
|
|||||||
elapsed_sec = INSTR_TIME_GET_DOUBLE(diff);
|
elapsed_sec = INSTR_TIME_GET_DOUBLE(diff);
|
||||||
remaining_sec = ((double) scale * naccounts - j) * elapsed_sec / j;
|
remaining_sec = ((double) scale * naccounts - j) * elapsed_sec / j;
|
||||||
|
|
||||||
fprintf(stderr, INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s)\n",
|
fprintf(stderr, INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s)%c",
|
||||||
j, (int64) naccounts * scale,
|
j, (int64) naccounts * scale,
|
||||||
(int) (((int64) j * 100) / (naccounts * (int64) scale)),
|
(int) (((int64) j * 100) / (naccounts * (int64) scale)),
|
||||||
elapsed_sec, remaining_sec);
|
elapsed_sec, remaining_sec, eol);
|
||||||
}
|
}
|
||||||
/* let's not call the timing for each row, but only each 100 rows */
|
/* let's not call the timing for each row, but only each 100 rows */
|
||||||
else if (use_quiet && (j % 100 == 0))
|
else if (use_quiet && (j % 100 == 0))
|
||||||
@ -3927,16 +3930,19 @@ initGenerateDataClientSide(PGconn *con)
|
|||||||
/* have we reached the next interval (or end)? */
|
/* have we reached the next interval (or end)? */
|
||||||
if ((j == scale * naccounts) || (elapsed_sec >= log_interval * LOG_STEP_SECONDS))
|
if ((j == scale * naccounts) || (elapsed_sec >= log_interval * LOG_STEP_SECONDS))
|
||||||
{
|
{
|
||||||
fprintf(stderr, INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s)\n",
|
fprintf(stderr, INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s)%c",
|
||||||
j, (int64) naccounts * scale,
|
j, (int64) naccounts * scale,
|
||||||
(int) (((int64) j * 100) / (naccounts * (int64) scale)), elapsed_sec, remaining_sec);
|
(int) (((int64) j * 100) / (naccounts * (int64) scale)), elapsed_sec, remaining_sec, eol);
|
||||||
|
|
||||||
/* skip to the next interval */
|
/* skip to the next interval */
|
||||||
log_interval = (int) ceil(elapsed_sec / LOG_STEP_SECONDS);
|
log_interval = (int) ceil(elapsed_sec / LOG_STEP_SECONDS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (eol != '\n')
|
||||||
|
fputc('\n', stderr); /* Need to move to next line */
|
||||||
|
|
||||||
if (PQputline(con, "\\.\n"))
|
if (PQputline(con, "\\.\n"))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "very last PQputline failed\n");
|
fprintf(stderr, "very last PQputline failed\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user