diff options
Diffstat (limited to 'src/exchangedb/exchange_do_batch_reserves_update.sql')
-rw-r--r-- | src/exchangedb/exchange_do_batch_reserves_update.sql | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/exchangedb/exchange_do_batch_reserves_update.sql b/src/exchangedb/exchange_do_batch_reserves_update.sql index 82b6b84c1..ebb58a149 100644 --- a/src/exchangedb/exchange_do_batch_reserves_update.sql +++ b/src/exchangedb/exchange_do_batch_reserves_update.sql @@ -18,9 +18,8 @@ CREATE OR REPLACE FUNCTION exchange_do_batch_reserves_update( IN in_reserve_pub BYTEA, IN in_expiration_date INT8, IN in_wire_ref INT8, - IN in_credit_val INT8, - IN in_credit_frac INT4, - IN in_exchange_account_name VARCHAR, + IN in_credit taler_amount, + IN in_exchange_account_name TEXT, IN in_wire_source_h_payto BYTEA, IN in_notify text, OUT out_duplicate BOOLEAN) @@ -30,16 +29,14 @@ BEGIN INSERT INTO reserves_in (reserve_pub ,wire_reference - ,credit_val - ,credit_frac + ,credit ,exchange_account_section ,wire_source_h_payto ,execution_date) VALUES (in_reserve_pub ,in_wire_ref - ,in_credit_val - ,in_credit_frac + ,in_credit ,in_exchange_account_name ,in_wire_source_h_payto ,in_expiration_date) @@ -48,24 +45,26 @@ BEGIN THEN --IF THE INSERTION WAS A SUCCESS IT MEANS NO DUPLICATED TRANSACTION out_duplicate = FALSE; - UPDATE reserves + UPDATE reserves rs SET - current_balance_frac = current_balance_frac+in_credit_frac + current_balance.frac = (rs.current_balance).frac+in_credit.frac - CASE - WHEN current_balance_frac + in_credit_frac >= 100000000 + WHEN (rs.current_balance).frac + in_credit.frac >= 100000000 THEN 100000000 ELSE 1 END - ,current_balance_val = current_balance_val+in_credit_val + ,current_balance.val = (rs.current_balance).val+in_credit.val + CASE - WHEN current_balance_frac + in_credit_frac >= 100000000 + WHEN (rs.current_balance).frac + in_credit.frac >= 100000000 THEN 1 ELSE 0 END ,expiration_date=GREATEST(expiration_date,in_expiration_date) ,gc_date=GREATEST(gc_date,in_expiration_date) WHERE reserve_pub=in_reserve_pub; - PERFORM pg_notify(in_notify, NULL); + EXECUTE FORMAT ( + 'NOTIFY %s' + ,in_notify); ELSE out_duplicate = TRUE; END IF; |