summaryrefslogtreecommitdiff
path: root/src/exchangedb/exchange_do_gc.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/exchange_do_gc.sql')
-rw-r--r--src/exchangedb/exchange_do_gc.sql78
1 files changed, 37 insertions, 41 deletions
diff --git a/src/exchangedb/exchange_do_gc.sql b/src/exchangedb/exchange_do_gc.sql
index c6331c18e..d4ecb3024 100644
--- a/src/exchangedb/exchange_do_gc.sql
+++ b/src/exchangedb/exchange_do_gc.sql
@@ -21,124 +21,120 @@ LANGUAGE plpgsql
AS $$
DECLARE
reserve_uuid_min INT8; -- minimum reserve UUID still alive
-DECLARE
melt_min INT8; -- minimum melt still alive
-DECLARE
coin_min INT8; -- minimum known_coin still alive
-DECLARE
- deposit_min INT8; -- minimum deposit still alive
-DECLARE
+ batch_deposit_min INT8; -- minimum deposit still alive
reserve_out_min INT8; -- minimum reserve_out still alive
-DECLARE
denom_min INT8; -- minimum denomination still alive
BEGIN
-DELETE FROM exchange.prewire
+DELETE FROM prewire
WHERE finished=TRUE;
-DELETE FROM exchange.wire_fee
+DELETE FROM wire_fee
WHERE end_date < in_ancient_date;
--- TODO: use closing fee as threshold?
-DELETE FROM exchange.reserves
+-- FIXME: use closing fee as threshold?
+DELETE FROM reserves
WHERE gc_date < in_now
- AND current_balance_val = 0
- AND current_balance_frac = 0;
+ AND current_balance = (0, 0);
SELECT
reserve_out_serial_id
INTO
reserve_out_min
- FROM exchange.reserves_out
+ FROM reserves_out
ORDER BY reserve_out_serial_id ASC
LIMIT 1;
-DELETE FROM exchange.recoup
+DELETE FROM recoup
WHERE reserve_out_serial_id < reserve_out_min;
--- FIXME: recoup_refresh lacks GC!
SELECT
reserve_uuid
INTO
reserve_uuid_min
- FROM exchange.reserves
+ FROM reserves
ORDER BY reserve_uuid ASC
LIMIT 1;
-DELETE FROM exchange.reserves_out
+DELETE FROM reserves_out
WHERE reserve_uuid < reserve_uuid_min;
-- FIXME: this query will be horribly slow;
-- need to find another way to formulate it...
-DELETE FROM exchange.denominations
+DELETE FROM denominations
WHERE expire_legal < in_now
AND denominations_serial NOT IN
(SELECT DISTINCT denominations_serial
- FROM exchange.reserves_out)
+ FROM reserves_out)
AND denominations_serial NOT IN
(SELECT DISTINCT denominations_serial
- FROM exchange.known_coins
+ FROM known_coins
WHERE coin_pub IN
(SELECT DISTINCT coin_pub
- FROM exchange.recoup))
+ FROM recoup))
AND denominations_serial NOT IN
(SELECT DISTINCT denominations_serial
- FROM exchange.known_coins
+ FROM known_coins
WHERE coin_pub IN
(SELECT DISTINCT coin_pub
- FROM exchange.recoup_refresh));
+ FROM recoup_refresh));
SELECT
melt_serial_id
INTO
melt_min
- FROM exchange.refresh_commitments
+ FROM refresh_commitments
ORDER BY melt_serial_id ASC
LIMIT 1;
-DELETE FROM exchange.refresh_revealed_coins
+DELETE FROM refresh_revealed_coins
WHERE melt_serial_id < melt_min;
-DELETE FROM exchange.refresh_transfer_keys
+DELETE FROM refresh_transfer_keys
WHERE melt_serial_id < melt_min;
SELECT
known_coin_id
INTO
coin_min
- FROM exchange.known_coins
+ FROM known_coins
ORDER BY known_coin_id ASC
LIMIT 1;
-DELETE FROM exchange.deposits
+DELETE FROM recoup_refresh
WHERE known_coin_id < coin_min;
+DELETE FROM batch_deposits
+ WHERE wire_deadline < in_ancient_date;
+
SELECT
- deposit_serial_id
+ batch_deposit_serial_id
INTO
- deposit_min
- FROM exchange.deposits
- ORDER BY deposit_serial_id ASC
+ batch_deposit_min
+ FROM coin_deposits
+ ORDER BY batch_deposit_serial_id ASC
LIMIT 1;
-DELETE FROM exchange.refunds
- WHERE deposit_serial_id < deposit_min;
+DELETE FROM refunds
+ WHERE batch_deposit_serial_id < batch_deposit_min;
+DELETE FROM aggregation_tracking
+ WHERE batch_deposit_serial_id < batch_deposit_min;
+DELETE FROM coin_deposits
+ WHERE batch_deposit_serial_id < batch_deposit_min;
+
-DELETE FROM exchange.aggregation_tracking
- WHERE deposit_serial_id < deposit_min;
SELECT
denominations_serial
INTO
denom_min
- FROM exchange.denominations
+ FROM denominations
ORDER BY denominations_serial ASC
LIMIT 1;
-DELETE FROM exchange.cs_nonce_locks
+DELETE FROM cs_nonce_locks
WHERE max_denomination_serial <= denom_min;
END $$;
-
-
-