diff options
Diffstat (limited to 'src/exchangedb/exchange_do_gc.sql')
-rw-r--r-- | src/exchangedb/exchange_do_gc.sql | 78 |
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 $$; - - - |