mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
Better fix for misuse of Float8GetDatumFast().
We can use that macro as long as we put the value into a local variable.
Commit 735cd6128
was not wrong on its own terms, but I think this way
looks nicer, and it should save a few cycles on 32-bit machines.
This commit is contained in:
parent
7655f4ccea
commit
2c33e0fbce
@ -1246,7 +1246,6 @@ pgss_store(const char *query, uint32 queryId,
|
|||||||
e->counters.min_time = total_time;
|
e->counters.min_time = total_time;
|
||||||
if (e->counters.max_time < total_time)
|
if (e->counters.max_time < total_time)
|
||||||
e->counters.max_time = total_time;
|
e->counters.max_time = total_time;
|
||||||
|
|
||||||
}
|
}
|
||||||
e->counters.rows += rows;
|
e->counters.rows += rows;
|
||||||
e->counters.shared_blks_hit += bufusage->shared_blks_hit;
|
e->counters.shared_blks_hit += bufusage->shared_blks_hit;
|
||||||
@ -1491,6 +1490,7 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo,
|
|||||||
bool nulls[PG_STAT_STATEMENTS_COLS];
|
bool nulls[PG_STAT_STATEMENTS_COLS];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
Counters tmp;
|
Counters tmp;
|
||||||
|
double stddev;
|
||||||
int64 queryid = entry->key.queryid;
|
int64 queryid = entry->key.queryid;
|
||||||
|
|
||||||
memset(values, 0, sizeof(values));
|
memset(values, 0, sizeof(values));
|
||||||
@ -1577,15 +1577,12 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo,
|
|||||||
* sample variance, as we have data for the whole population,
|
* sample variance, as we have data for the whole population,
|
||||||
* so Bessel's correction is not used, and we don't divide by
|
* so Bessel's correction is not used, and we don't divide by
|
||||||
* tmp.calls - 1.
|
* tmp.calls - 1.
|
||||||
*
|
|
||||||
* We're calculating the stddev on the fly, so it's not in the tmp
|
|
||||||
* structure, so we can't use the Float8GetDatumFast macro here.
|
|
||||||
*/
|
*/
|
||||||
if (tmp.calls > 1)
|
if (tmp.calls > 1)
|
||||||
values[i++] =
|
stddev = sqrt(tmp.sum_var_time / tmp.calls);
|
||||||
Float8GetDatum(sqrt(tmp.sum_var_time / tmp.calls));
|
|
||||||
else
|
else
|
||||||
values[i++] = Float8GetDatum(0.0);
|
stddev = 0.0;
|
||||||
|
values[i++] = Float8GetDatumFast(stddev);
|
||||||
}
|
}
|
||||||
values[i++] = Int64GetDatumFast(tmp.rows);
|
values[i++] = Int64GetDatumFast(tmp.rows);
|
||||||
values[i++] = Int64GetDatumFast(tmp.shared_blks_hit);
|
values[i++] = Int64GetDatumFast(tmp.shared_blks_hit);
|
||||||
|
Loading…
Reference in New Issue
Block a user