summaryrefslogtreecommitdiff
path: root/src/exchangedb/exchange_do_purse_merge.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/exchange_do_purse_merge.sql')
-rw-r--r--src/exchangedb/exchange_do_purse_merge.sql35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/exchangedb/exchange_do_purse_merge.sql b/src/exchangedb/exchange_do_purse_merge.sql
index 85bae999f..9780c016c 100644
--- a/src/exchangedb/exchange_do_purse_merge.sql
+++ b/src/exchangedb/exchange_do_purse_merge.sql
@@ -33,6 +33,8 @@ DECLARE
my_purse_fee taler_amount;
my_partner_serial_id INT8;
my_in_reserve_quota BOOLEAN;
+ reserve RECORD;
+ balance taler_amount;
BEGIN
@@ -195,20 +197,27 @@ ELSE
my_amount.val = my_amount.val + my_amount.frac / 100000000;
my_amount.frac = my_amount.frac % 100000000;
+ SELECT *
+ INTO reserve
+ FROM exchange.reserves
+ WHERE reserve_pub=in_reserve_pub;
+
+ balance = reserve.current_balance;
+ balance.frac=balance.frac+my_amount.frac
+ - CASE
+ WHEN balance.frac + my_amount.frac >= 100000000
+ THEN 100000000
+ ELSE 0
+ END;
+ balance.val=balance.val+my_amount.val
+ + CASE
+ WHEN balance.frac + my_amount.frac >= 100000000
+ THEN 1
+ ELSE 0
+ END;
+
UPDATE exchange.reserves
- SET
- current_balance.frac=current_balance.frac+my_amount.frac
- - CASE
- WHEN current_balance.frac + my_amount.frac >= 100000000
- THEN 100000000
- ELSE 0
- END,
- current_balance.val=current.balance_val+my.amount_val
- + CASE
- WHEN current_balance.frac + my_amount.frac >= 100000000
- THEN 1
- ELSE 0
- END
+ SET current_balance=balance
WHERE reserve_pub=in_reserve_pub;
END IF;