summaryrefslogtreecommitdiff
path: root/src/exchangedb/exchange_do_melt.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/exchange_do_melt.sql')
-rw-r--r--src/exchangedb/exchange_do_melt.sql32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/exchangedb/exchange_do_melt.sql b/src/exchangedb/exchange_do_melt.sql
index c0290b561..0200986fa 100644
--- a/src/exchangedb/exchange_do_melt.sql
+++ b/src/exchangedb/exchange_do_melt.sql
@@ -19,8 +19,7 @@
CREATE OR REPLACE FUNCTION exchange_do_melt(
IN in_cs_rms BYTEA,
- IN in_amount_with_fee_val INT8,
- IN in_amount_with_fee_frac INT4,
+ IN in_amount_with_fee taler_amount,
IN in_rc BYTEA,
IN in_old_coin_pub BYTEA,
IN in_old_coin_sig BYTEA,
@@ -45,16 +44,14 @@ INSERT INTO exchange.refresh_commitments
(rc
,old_coin_pub
,old_coin_sig
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
,noreveal_index
)
VALUES
(in_rc
,in_old_coin_pub
,in_old_coin_sig
- ,in_amount_with_fee_val
- ,in_amount_with_fee_frac
+ ,in_amount_with_fee
,in_noreveal_index)
ON CONFLICT DO NOTHING;
@@ -84,13 +81,13 @@ THEN
-- operations, and then see if any of these
-- reveal operations was involved in a recoup.
PERFORM
- FROM exchange.recoup_refresh
+ FROM recoup_refresh
WHERE rrc_serial IN
(SELECT rrc_serial
- FROM exchange.refresh_revealed_coins
+ FROM refresh_revealed_coins
WHERE melt_serial_id IN
(SELECT melt_serial_id
- FROM exchange.refresh_commitments
+ FROM refresh_commitments
WHERE old_coin_pub=in_old_coin_pub));
IF NOT FOUND
THEN
@@ -104,24 +101,24 @@ out_zombie_bad=FALSE; -- zombie is OK
-- Check and update balance of the coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac-in_amount_with_fee_frac
+ remaining.frac=(kc.remaining).frac-in_amount_with_fee.frac
+ CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val-in_amount_with_fee_val
+ remaining.val=(kc.remaining).val-in_amount_with_fee.val
- CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 1
ELSE 0
END
WHERE coin_pub=in_old_coin_pub
- AND ( (remaining_val > in_amount_with_fee_val) OR
- ( (remaining_frac >= in_amount_with_fee_frac) AND
- (remaining_val >= in_amount_with_fee_val) ) );
+ AND ( ((kc.remaining).val > in_amount_with_fee.val) OR
+ ( ((kc.remaining).frac >= in_amount_with_fee.frac) AND
+ ((kc.remaining).val >= in_amount_with_fee.val) ) );
IF NOT FOUND
THEN
@@ -183,4 +180,3 @@ out_balance_ok=TRUE;
out_noreveal_index=in_noreveal_index;
END $$;
-