commit 48e6db311368619c360879bf222c28c98e901879
parent b20855daf9f6afe14c41880d0d1dc7c25fa3dd5f
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 6 Aug 2026 22:44:56 +0200
fix cmp for amount normalization
Diffstat:
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/exchangedb/sql-schema/exchange_statistics_helpers.sql b/src/exchangedb/sql-schema/exchange_statistics_helpers.sql
@@ -614,7 +614,7 @@ BEGIN
my_min_serial = my_irec.event_delimiter;
my_rval.rvalue.val = (my_rval.rvalue).val + (my_irec.cumulative_value).val + (my_irec.cumulative_value).frac / 100000000;
my_rval.rvalue.frac = (my_rval.rvalue).frac + (my_irec.cumulative_value).frac % 100000000;
- IF (my_rval.rvalue).frac > 100000000
+ IF (my_rval.rvalue).frac >= 100000000
THEN
my_rval.rvalue.frac = (my_rval.rvalue).frac - 100000000;
my_rval.rvalue.val = (my_rval.rvalue).val + 1;
@@ -687,13 +687,16 @@ BEGIN
UPDATE exchange_statistic_interval_amount AS msia SET
cumulative_value.val = (cumulative_value).val + my_delta_value
+ CASE
- WHEN (cumulative_value).frac + my_delta_frac > 100000000
+ WHEN (cumulative_value).frac + my_delta_frac >= 100000000
THEN 1
ELSE 0
END,
- cumulative_value.frac = (cumulative_value).frac + my_delta_value
+ -- Note: the fraction, not the value; this used to add
+ -- my_delta_value here and so replaced the fraction of the
+ -- carried-over amount with its integer part.
+ cumulative_value.frac = (cumulative_value).frac + my_delta_frac
- CASE
- WHEN (cumulative_value).frac + my_delta_frac > 100000000
+ WHEN (cumulative_value).frac + my_delta_frac >= 100000000
THEN 100000000
ELSE 0
END,