summaryrefslogtreecommitdiff
path: root/src/exchangedb/exchange_do_recoup_by_reserve.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/exchange_do_recoup_by_reserve.sql')
-rw-r--r--src/exchangedb/exchange_do_recoup_by_reserve.sql35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/exchangedb/exchange_do_recoup_by_reserve.sql b/src/exchangedb/exchange_do_recoup_by_reserve.sql
index 6a7ea725e..80f953c4a 100644
--- a/src/exchangedb/exchange_do_recoup_by_reserve.sql
+++ b/src/exchangedb/exchange_do_recoup_by_reserve.sql
@@ -25,8 +25,7 @@ RETURNS TABLE
coin_pub BYTEA,
coin_sig BYTEA,
coin_blind BYTEA,
- amount_val BIGINT,
- amount_frac INTEGER,
+ amount taler_amount,
recoup_timestamp BIGINT
)
LANGUAGE plpgsql
@@ -37,22 +36,25 @@ DECLARE
c_pub BYTEA;
BEGIN
SELECT reserve_uuid
- INTO res_uuid
- FROM exchange.reserves
- WHERE reserves.reserve_pub = res_pub;
+ INTO res_uuid
+ FROM reserves
+ WHERE reserve_pub = res_pub;
FOR blind_ev IN
SELECT h_blind_ev
- FROM exchange.reserves_out_by_reserve
- WHERE reserves_out_by_reserve.reserve_uuid = res_uuid
+ FROM reserves_out ro
+ JOIN reserve_history rh
+ ON (rh.serial_id = ro.reserve_out_serial_id)
+ WHERE rh.reserve_pub = res_pub
+ AND rh.table_name='reserves_out'
LOOP
SELECT robr.coin_pub
INTO c_pub
FROM exchange.recoup_by_reserve robr
WHERE robr.reserve_out_serial_id = (
- SELECT reserves_out.reserve_out_serial_id
- FROM exchange.reserves_out
- WHERE reserves_out.h_blind_ev = blind_ev
+ SELECT reserve_out_serial_id
+ FROM reserves_out
+ WHERE h_blind_ev = blind_ev
);
RETURN QUERY
SELECT kc.denom_sig,
@@ -60,16 +62,20 @@ BEGIN
rc.coin_pub,
rc.coin_sig,
rc.coin_blind,
- rc.amount_val,
- rc.amount_frac,
+ rc.amount,
rc.recoup_timestamp
FROM (
- SELECT *
+ SELECT denom_sig
+ ,denominations_serial
FROM exchange.known_coins
WHERE known_coins.coin_pub = c_pub
) kc
JOIN (
- SELECT *
+ SELECT coin_pub
+ ,coin_sig
+ ,coin_blind
+ ,amount
+ ,recoup_timestamp
FROM exchange.recoup
WHERE recoup.coin_pub = c_pub
) rc USING (coin_pub);
@@ -79,4 +85,3 @@ $$;
COMMENT ON FUNCTION exchange_do_recoup_by_reserve
IS 'Recoup by reserve as a function to make sure we hit only the needed partition and not all when joining as joins on distributed tables fetch ALL rows from the shards';
-