diff options
| author | Joseph <Joseph.xu@efrei.net> | 2022-12-21 07:28:46 -0500 | 
|---|---|---|
| committer | Joseph <Joseph.xu@efrei.net> | 2022-12-21 07:28:46 -0500 | 
| commit | 2030d6491005cd6e714b4a4ef40b13a7dc1bdc74 (patch) | |
| tree | 5f30b8fe27d2780d0f0201f85df26259ee3668ba /src/exchangedb/exchange_do_batch2_reserves_in_insert.sql | |
| parent | b90d25ecfcaad0bd421998360dff2c4629b5705b (diff) | |
update of batch 2 test
Diffstat (limited to 'src/exchangedb/exchange_do_batch2_reserves_in_insert.sql')
| -rw-r--r-- | src/exchangedb/exchange_do_batch2_reserves_in_insert.sql | 55 | 
1 files changed, 25 insertions, 30 deletions
| diff --git a/src/exchangedb/exchange_do_batch2_reserves_in_insert.sql b/src/exchangedb/exchange_do_batch2_reserves_in_insert.sql index 6a0cc6d7..0e2d37d8 100644 --- a/src/exchangedb/exchange_do_batch2_reserves_in_insert.sql +++ b/src/exchangedb/exchange_do_batch2_reserves_in_insert.sql @@ -46,20 +46,12 @@ LANGUAGE plpgsql  AS $$  DECLARE    curs_reserve_exist REFCURSOR; - ---  FOR SELECT reserve_pub ---  FROM reserves ---  WHERE in_reserve_pub = reserves.reserve_pub ---  OR in2_reserve_pub = reserves.reserve_pub;  DECLARE -  curs_transaction_exist CURSOR -  FOR SELECT reserve_pub -  FROM reserves_in -  WHERE in_reserve_pub = reserves_in.reserve_pub -  OR in2_reserve_pub = reserves_in.reserve_pub; +  curs_transaction_exist refcursor;  DECLARE    i RECORD; - +DECLARE +  r RECORD;  BEGIN    --SIMPLE INSERT ON CONFLICT DO NOTHING    transaction_duplicate=FALSE; @@ -138,6 +130,8 @@ BEGIN    PERFORM pg_notify(in_notify, NULL);    PERFORM pg_notify(in2_notify, NULL); +  OPEN curs_transaction_exist FOR +  WITH reserve_in_exist AS (    INSERT INTO reserves_in      (reserve_pub      ,wire_reference @@ -161,33 +155,34 @@ BEGIN      ,in2_exchange_account_name      ,in2_wire_source_h_payto      ,in_expiration_date) -    ON CONFLICT DO NOTHING; +    ON CONFLICT DO NOTHING +    RETURNING reserve_pub) +  SELECT * FROM reserve_in_exist; +  FETCH FROM curs_transaction_exist INTO r;    IF FOUND    THEN -    transaction_duplicate = FALSE;  /*HAPPY PATH THERE IS NO DUPLICATE TRANS AND NEW RESERVE*/ -    transaction_duplicate2 = FALSE; -    RETURN; -  ELSE -    FOR l IN curs_transaction_exist -    LOOP -      IF in_reserve_pub = l.reserve_pub -      THEN -         transaction_duplicate = TRUE; -      END IF; - -      IF in2_reserve_pub = l.reserve_pub +    IF in_reserve_pub = r.reserve_pub +    THEN +       transaction_duplicate = TRUE; +    END IF; +    IF in2_reserve_pub = i.reserve_pub +    THEN +       transaction_duplicate = TRUE; +    END IF; +    FETCH FROM curs_transaction_exist INTO r; +    IF FOUND +    THEN +      IF in_reserve_pub = r.reserve_pub        THEN -         transaction_duplicate2 = TRUE; +        transaction_duplicate = TRUE;        END IF; - -      IF transaction_duplicate AND transaction_duplicate2 +      IF in2_reserve_pub = i.reserve_pub        THEN -        RETURN; +        transaction_duplicate = TRUE;        END IF; -    END LOOP; +    END IF;    END IF; -  CLOSE curs_reserve_exist;    CLOSE curs_transaction_exist;    RETURN;  END $$; | 
