@ -4222,6 +4222,8 @@ initGenerateDataClientSide(PGconn *con)
PGresult * res ;
int i ;
int64 k ;
int chars = 0 ;
int prev_chars = 0 ;
/* used to track elapsed time and estimate of the remaining time */
pg_time_usec_t start ;
@ -4304,10 +4306,10 @@ initGenerateDataClientSide(PGconn *con)
double elapsed_sec = PG_TIME_GET_DOUBLE ( pg_time_now ( ) - start ) ;
double 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)%c " ,
j , ( int64 ) naccounts * scale ,
( int ) ( ( ( int64 ) j * 100 ) / ( naccounts * ( int64 ) scale ) ) ,
elapsed_sec , remaining_sec , eol ) ;
chars = fprintf ( stderr , INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s) " ,
j , ( int64 ) naccounts * scale ,
( int ) ( ( ( int64 ) j * 100 ) / ( naccounts * ( int64 ) scale ) ) ,
elapsed_sec , remaining_sec ) ;
}
/* let's not call the timing for each row, but only each 100 rows */
else if ( use_quiet & & ( j % 100 = = 0 ) )
@ -4318,14 +4320,24 @@ initGenerateDataClientSide(PGconn *con)
/* have we reached the next interval (or end)? */
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)%c " ,
j , ( int64 ) naccounts * scale ,
( int ) ( ( ( int64 ) j * 100 ) / ( naccounts * ( int64 ) scale ) ) , elapsed_sec , remaining_sec , eol ) ;
chars = fprintf ( stderr , INT64_FORMAT " of " INT64_FORMAT " tuples (%d%%) done (elapsed %.2f s, remaining %.2f s) " ,
j , ( int64 ) naccounts * scale ,
( int ) ( ( ( int64 ) j * 100 ) / ( naccounts * ( int64 ) scale ) ) , elapsed_sec , remaining_sec ) ;
/* skip to the next interval */
log_interval = ( int ) ceil ( elapsed_sec / LOG_STEP_SECONDS ) ;
}
}
/*
* If the previous progress message is longer than the current one ,
* add spaces to the current line to fully overwrite any remaining
* characters from the previous message .
*/
if ( prev_chars > chars )
fprintf ( stderr , " %*c " , prev_chars - chars , ' ' ) ;
fputc ( eol , stderr ) ;
prev_chars = chars ;
}
if ( eol ! = ' \n ' )