pgstattuple uses data type double for other percentage calculations
and exposes those values to the users via the float8 data type.
However, scanned_percent in struct output_type is of type uint64, even
though it is later returned via Float8GetDatum(). Change it to use
double to be inline with other percentages.
Author: Bharath Rupireddy
Reviewed-by: Peter Eisentraut
Discussion: https://www.postgresql.org/message-id/
36ee692b-232f-0484-ce94-
dc39d82021ad%40enterprisedb.com
typedef struct output_type
{
uint64 table_len;
- uint64 scanned_percent;
+ double scanned_percent;
uint64 tuple_count;
uint64 tuple_len;
double tuple_percent;
*/
if (nblocks != 0)
{
- stat->scanned_percent = 100 * scanned / nblocks;
+ stat->scanned_percent = 100.0 * scanned / nblocks;
stat->tuple_percent = 100.0 * stat->tuple_len / stat->table_len;
stat->dead_tuple_percent = 100.0 * stat->dead_tuple_len / stat->table_len;
stat->free_percent = 100.0 * stat->free_space / stat->table_len;