merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit b434c05927b3e3179c2039f19affa5e0dcaec728
parent c1e45623cfb2a13d49f4a65a930413ae04b65098
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Sun, 23 Mar 2025 12:54:56 +0100

gc fix

Diffstat:
Msrc/backenddb/pg_statistics_helpers.sql | 26++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/backenddb/pg_statistics_helpers.sql b/src/backenddb/pg_statistics_helpers.sql @@ -932,7 +932,7 @@ BEGIN SUM(delta_frac) AS total_frac, COUNT(*) AS matches INTO my_sum - FROM merchant_statistic_counter_event + FROM merchant_statistic_amount_event WHERE imeta_serial_id=my_meta AND merchant_serial=my_instance AND delta_curr = my_currency @@ -944,14 +944,14 @@ BEGIN my_total_frac = my_sum.total_frac % 100000000; my_total_val = my_sum.total_val + my_sum.total_frac / 100000000; -- combine entries - DELETE FROM merchant_statistic_counter_event + DELETE FROM merchant_statistic_amount_event WHERE imeta_serial_id=my_meta AND merchant_serial=my_instance AND delta_curr = my_currency AND slot >= min_slot AND slot < max_slot; -- The previous delete ensures that this is a conflict-free INSERT - INSERT INTO merchant_statistic_counter_event + INSERT INTO merchant_statistic_amount_event (imeta_serial_id ,merchant_serial ,slot @@ -969,12 +969,12 @@ BEGIN min_slot = min_slot + my_precision; END LOOP; -- min_slot to end_slot by precision loop END LOOP; -- my_i loop - -- Finally, delete all events beyond the range we care about - DELETE FROM merchant_statistic_counter_event - WHERE merchant_serial=my_instance - AND imeta_serial_id=my_meta - AND slot > my_ranges[array_length(my_ranges,1)]; END LOOP; -- my_currency loop + -- Finally, delete all events beyond the range we care about + DELETE FROM merchant_statistic_amount_event + WHERE merchant_serial=my_instance + AND imeta_serial_id=my_meta + AND slot > my_ranges[array_length(my_ranges,1)]; END LOOP; -- my_rec loop END LOOP; -- my_instance loop END $$; @@ -989,6 +989,7 @@ LANGUAGE plpgsql AS $$ DECLARE my_rec RECORD; + my_range TEXT; my_now INT8; my_end INT8; BEGIN @@ -1000,17 +1001,18 @@ BEGIN ,ages[array_length(ages,1)] AS age FROM merchant_statistic_bucket_meta LOOP - my_end = my_now - age * range; -- age is given in multiples of the range (in seconds) - IF stype = 'amount' + my_range = '1 ' || my_rec.range::TEXT; + my_end = my_now - my_rec.age * EXTRACT(SECONDS FROM (SELECT my_range::INTERVAL)); -- age is given in multiples of the range (in seconds) + IF my_rec.stype = 'amount' THEN DELETE FROM merchant_statistic_bucket_amount - WHERE bmeta_serial_id = (my_rec).bmeta_serial_id + WHERE bmeta_serial_id = my_rec.bmeta_serial_id AND bucket_start >= my_end; ELSE DELETE FROM merchant_statistic_bucket_counter - WHERE bmeta_serial_id = (my_rec).bmeta_serial_id + WHERE bmeta_serial_id = my_rec.bmeta_serial_id AND bucket_start >= my_end; END IF; END LOOP;