diff options
author | Christian Grothoff <grothoff@gnunet.org> | 2022-03-14 07:34:21 +0100 |
---|---|---|
committer | Christian Grothoff <grothoff@gnunet.org> | 2022-03-14 07:34:21 +0100 |
commit | a8d80d519dda54be18edd7e717cac711b93edd57 (patch) | |
tree | 47f641203adfb0d69546ad1aaf0a23f1172d0b38 /src/exchangedb/exchange-0001.sql | |
parent | 7a74cde9c7bd4ddf709b832e750d7f57845e0515 (diff) | |
download | exchange-a8d80d519dda54be18edd7e717cac711b93edd57.tar.xz |
attempt to make GRID5K_MARCO_OPT superfluous
Diffstat (limited to 'src/exchangedb/exchange-0001.sql')
-rw-r--r-- | src/exchangedb/exchange-0001.sql | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/src/exchangedb/exchange-0001.sql b/src/exchangedb/exchange-0001.sql index 58a6b7288..77a9ba2a8 100644 --- a/src/exchangedb/exchange-0001.sql +++ b/src/exchangedb/exchange-0001.sql @@ -119,7 +119,7 @@ CREATE TABLE IF NOT EXISTS reserves ,current_balance_val INT8 NOT NULL ,current_balance_frac INT4 NOT NULL ,expiration_date INT8 NOT NULL - ,gc_date INT8 NOT NULL + ,gc_date INT8 NOT NULL ) PARTITION BY HASH (reserve_pub); COMMENT ON TABLE reserves @@ -933,6 +933,58 @@ CREATE INDEX IF NOT EXISTS recoup_by_known_coin_id_index (known_coin_id); +CREATE TABLE IF NOT EXISTS reserves_out_by_reserve + (reserve_uuid INT8 NOT NULL -- REFERENCES reserves (reserve_uuid) ON DELETE CASCADE + ,h_blind_ev BYTEA CHECK (LENGTH(h_blind_ev)=64) + ) + PARTITION BY HASH (reserve_uuid); +COMMENT ON TABLE reserves_out_by_reserve + IS 'Information in this table is strictly redundant with that of reserves_out, but saved by a different primary key for fast lookups by reserve public key/uuid.'; + +CREATE TABLE IF NOT EXISTS reserves_out_by_reserve_default + PARTITION OF reserves_out_by_reserve + FOR VALUES WITH (MODULUS 1, REMAINDER 0); + +CREATE OR REPLACE FUNCTION reserves_out_by_reserve_insert_trigger() + RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + INSERT INTO reserves_out_by_reserve + (reserve_uuid + ,h_blind_ev) + VALUES + (NEW.reserve_uuid + ,NEW.h_blind_ev); + RETURN NEW; +END $$; +COMMENT ON FUNCTION reserves_out_by_reserve_insert_trigger() + IS 'Replicate reserve_out inserts into reserve_out_by_reserve_default table.'; + +CREATE TRIGGER reserves_out_on_insert + AFTER INSERT + ON reserves_out + FOR EACH ROW EXECUTE FUNCTION reserves_out_by_reserve_insert_trigger(); + + +CREATE OR REPLACE FUNCTION reserves_out_by_reserve_delete_trigger() + RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + DELETE FROM reserves_out_by_reserve + WHERE reserve_uuid = OLD.reserve_uuid; + RETURN OLD; +END $$; +COMMENT ON FUNCTION reserves_out_by_reserve_delete_trigger() + IS 'Replicate reserve_out deletions into reserve_out_by_reserve_default table.'; + +CREATE TRIGGER reserves_out_on_delete + AFTER DELETE + ON reserves_out + FOR EACH ROW EXECUTE FUNCTION reserves_out_by_reserve_delete_trigger(); + + CREATE TABLE IF NOT EXISTS recoup_refresh (recoup_refresh_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY -- UNIQUE ,known_coin_id INT8 NOT NULL -- REFERENCES known_coins (known_coin_id) |