pgstattuple: Use double consistently for percentages

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
This commit is contained in:
Peter Eisentraut 2022-09-12 10:19:17 +02:00
parent 57796a0f15
commit 07d8af5e5e
1 changed files with 2 additions and 2 deletions

View File

@ -38,7 +38,7 @@ Datum pgstattuple_approx_internal(Oid relid, FunctionCallInfo fcinfo);
typedef struct output_type
{
uint64 table_len;
uint64 scanned_percent;
double scanned_percent;
uint64 tuple_count;
uint64 tuple_len;
double tuple_percent;
@ -203,7 +203,7 @@ statapprox_heap(Relation rel, output_type *stat)
*/
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;