commit f92a67b1f2a9109b30ae26169496c8a99ef3be8e
parent b476f8aef4b07f25b362a24d1419398feff30a3f
Author: Christian Grothoff <christian@grothoff.org>
Date: Mon, 5 Jan 2026 12:20:13 +0100
fix statistics trigger
Diffstat:
1 file changed, 43 insertions(+), 11 deletions(-)
diff --git a/src/backenddb/merchant-0028.sql b/src/backenddb/merchant-0028.sql
@@ -171,17 +171,45 @@ AS $$
DECLARE
my_instance INT8;
BEGIN
- SELECT mct.merchant_serial
- INTO my_instance
- FROM merchant_expected_transfers met
- JOIN merchant_accounts ma
- USING (account_serial)
- WHERE met.expected_credit_serial = NEW.expected_credit_serial;
- CALL merchant_do_bump_amount_stat
- ('wire-fees-paid'
- ,my_instance
- ,CURRENT_TIMESTAMP(0)::TIMESTAMP
- ,NEW.wire_fee);
+ IF NEW.wire_fee IS NOT NULL
+ THEN
+ SELECT ma.merchant_serial
+ INTO my_instance
+ FROM merchant_expected_transfers met
+ JOIN merchant_accounts ma
+ USING (account_serial)
+ WHERE met.expected_credit_serial = NEW.expected_credit_serial;
+ CALL merchant_do_bump_amount_stat
+ ('wire-fees-paid'
+ ,my_instance
+ ,CURRENT_TIMESTAMP(0)::TIMESTAMP
+ ,NEW.wire_fee);
+ END IF;
+ RETURN NEW;
+END $$;
+
+
+CREATE FUNCTION merchant_expected_transfers_update_statistics_trigger()
+RETURNS trigger
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ my_instance INT8;
+BEGIN
+ IF NEW.wire_fee IS NOT NULL AND OLD.wire_fee IS NULL
+ THEN
+ SELECT ma.merchant_serial
+ INTO my_instance
+ FROM merchant_expected_transfers met
+ JOIN merchant_accounts ma
+ USING (account_serial)
+ WHERE met.expected_credit_serial = NEW.expected_credit_serial;
+ CALL merchant_do_bump_amount_stat
+ ('wire-fees-paid'
+ ,my_instance
+ ,CURRENT_TIMESTAMP(0)::TIMESTAMP
+ ,NEW.wire_fee);
+ END IF;
RETURN NEW;
END $$;
@@ -191,6 +219,10 @@ CREATE TRIGGER merchant_expected_transfers_on_insert_statistic
AFTER INSERT
ON merchant_expected_transfers
FOR EACH ROW EXECUTE FUNCTION merchant_expected_transfers_insert_statistics_trigger();
+CREATE TRIGGER merchant_expected_transfers_on_update_statistic
+ AFTER INSERT
+ ON merchant_expected_transfers
+ FOR EACH ROW EXECUTE FUNCTION merchant_expected_transfers_update_statistics_trigger();