gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: fix #7143


From: gnunet
Subject: [taler-exchange] branch master updated: fix #7143
Date: Tue, 11 Jan 2022 17:56:34 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 766a2911 fix #7143
766a2911 is described below

commit 766a291151e18ff08cfbf7bee0a322588e846cce
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Tue Jan 11 17:56:32 2022 +0100

    fix #7143
---
 src/exchangedb/withdraw.sql | 130 --------------------------------------------
 1 file changed, 130 deletions(-)

diff --git a/src/exchangedb/withdraw.sql b/src/exchangedb/withdraw.sql
deleted file mode 100644
index 0ac9a73f..00000000
--- a/src/exchangedb/withdraw.sql
+++ /dev/null
@@ -1,130 +0,0 @@
-CREATE OR REPLACE FUNCTION exchange_do_withdraw(
-  IN amount_val INT8,
-  IN amount_frac INT4,
-  IN h_denom_pub BYTEA,
-  IN rpub BYTEA,
-  IN reserve_sig BYTEA,
-  IN h_coin_envelope BYTEA,
-  IN denom_sig BYTEA,
-  IN now INT8,
-  IN min_reserve_gc INT8,
-  OUT reserve_found BOOLEAN,
-  OUT balance_ok BOOLEAN,
-  OUT kycok BOOLEAN,
-  OUT ruuid INT8,
-  OUT account_uuid INT8)
-LANGUAGE plpgsql
-AS $$
-DECLARE
-  reserve_gc INT8;
-DECLARE
-  denom_serial INT8;
-DECLARE
-  reserve_val INT8;
-DECLARE
-  reserve_frac INT4;
-BEGIN
-
-
-SELECT denominations_serial INTO denom_serial
-  FROM denominations
- WHERE denom_pub_hash=h_denom_pub;
-
-IF NOT FOUND
-THEN
-  -- denomination unknown, should be impossible!
-  reserve_found=FALSE;
-  balance_ok=FALSE;
-  kycok=FALSE;
-  ruuid=0;
-  account_uuid=0;
-  ASSERT false, 'denomination unknown';
-  RETURN;
-END IF;
-
-
-UPDATE reserves SET
-   gc_date=GREATEST(gc_date, min_reserve_gc)
-  ,current_balance_val=current_balance_val - amount_val
-     - CASE WHEN (current_balance_frac < amount_frac)
-         THEN 1
-         ELSE 0
-       END
-  ,current_balance_frac=current_balance_frac - amount_frac
-     + CASE WHEN (current_balance_frac < amount_frac)
-         THEN 100000000
-         ELSE 0
-       END
- WHERE reserves.reserve_pub=rpub
-   AND ( (current_balance_val > amount_val) OR
-         ( (current_balance_val = amount_val) AND
-           (current_balance_frac >= amount_frac) ) );
-
-balance_ok=FOUND;
-
--- Obtain KYC status based on the last wire transfer into
--- this reserve. FIXME: likely not adequate for reserves that got P2P 
transfers!
-SELECT
-   kyc_ok
-  ,wire_source_serial_id
-  ,reserve_uuid
-  INTO
-   kycok
-  ,account_uuid
-  ,ruuid
-  FROM reserves 
-  JOIN reserves_in USING (reserve_uuid)
-  JOIN wire_targets ON (wire_source_serial_id = wire_target_serial_id)
- WHERE reserves.reserve_pub=rpub
- LIMIT 1; -- limit 1 should not be required (without p2p transfers)
-
-IF NOT FOUND
-THEN
-  -- reserve unknown
-  reserve_found=FALSE;
-  balance_ok=FALSE;
-  kycok=FALSE;
-  account_uuid=0;
-  RETURN;
-END IF;
-
-reserve_found=TRUE;
-
-
--- We optimistically insert, and then on conflict declare
--- the query successful due to idempotency.
-INSERT INTO reserves_out
-  (h_blind_ev
-  ,denominations_serial
-  ,denom_sig
-  ,reserve_uuid
-  ,reserve_sig
-  ,execution_date
-  ,amount_with_fee_val
-  ,amount_with_fee_frac)
-VALUES
-  (h_coin_envelope
-  ,denom_serial
-  ,denom_sig
-  ,ruuid
-  ,reserve_sig
-  ,now
-  ,amount_val
-  ,amount_frac)
-ON CONFLICT DO NOTHING;
-
-IF NOT FOUND
-THEN
-  -- idempotent query, all constraints must be satisfied
-  balance_ok=TRUE;
-  -- rollback any potential balance update we may have made
-  ROLLBACK;
-  START TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-  RETURN;
-END IF;
-
-END $$;
-
-COMMENT ON FUNCTION exchange_do_withdraw(INT8, INT4, BYTEA, BYTEA, BYTEA, 
BYTEA, BYTEA, INT8, INT8)
-  IS 'Checks whether the reserve has sufficient balance for a withdraw 
operation (or the request is repeated and was previously approved) and if so 
updates the database with the result';
-

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]