diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-06-13 15:31:52 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-06-13 15:31:52 +0200 |
commit | 58a0882909f2b1ede572ae575b83c18746f96cff (patch) | |
tree | 8d96afaec04abb7fd82d32a7a1b8b4ca1e9dd52d /src/exchangedb/common-0001.sql | |
parent | 70a5ceecc1a15d4f811636f5980cedf653988879 (diff) | |
download | exchange-58a0882909f2b1ede572ae575b83c18746f96cff.tar.gz exchange-58a0882909f2b1ede572ae575b83c18746f96cff.tar.bz2 exchange-58a0882909f2b1ede572ae575b83c18746f96cff.zip |
-towards coin audits with purse deposits
Diffstat (limited to 'src/exchangedb/common-0001.sql')
-rw-r--r-- | src/exchangedb/common-0001.sql | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/exchangedb/common-0001.sql b/src/exchangedb/common-0001.sql index ea3b74ecd..c493af9bd 100644 --- a/src/exchangedb/common-0001.sql +++ b/src/exchangedb/common-0001.sql @@ -1219,6 +1219,54 @@ BEGIN END $$; + +------------------------------- purse_refunds ---------------------------------------- + +CREATE OR REPLACE FUNCTION create_table_purse_refunds( + IN shard_suffix VARCHAR DEFAULT NULL +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +DECLARE + table_name VARCHAR DEFAULT 'purse_refunds'; +BEGIN + + PERFORM create_partitioned_table( + 'CREATE TABLE IF NOT EXISTS %I ' + '(purse_refunds_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY' --UNIQUE + ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)' + ',PRIMARY KEY (purse_pub)' + ') %s ;' + ,table_name + ,'PARTITION BY HASH (purse_pub)' + ,shard_suffix + ); + + table_name = concat_ws('_', table_name, shard_suffix); + +END +$$; + +CREATE OR REPLACE FUNCTION add_constraints_to_purse_refunds_partition( + IN partition_suffix VARCHAR +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +BEGIN + EXECUTE FORMAT ( + 'ALTER TABLE purse_refunds_' || partition_suffix || ' ' + 'ADD CONSTRAINT purse_refunds_' || partition_suffix || '_purse_refunds_serial_id_key ' + 'UNIQUE (purse_refunds_serial_id) ' + ); +END +$$; + + + + + ---------------------------- purse_merges ----------------------------- CREATE OR REPLACE FUNCTION create_table_purse_merges( @@ -1828,6 +1876,9 @@ BEGIN ALTER TABLE IF EXISTS purse_requests DETACH partition purse_requests_default; + ALTER TABLE IF EXISTS purse_refunds + DETACH partition purse_refunds_default; + ALTER TABLE IF EXISTS purse_merges DETACH partition purse_merges_default; @@ -1894,6 +1945,7 @@ BEGIN DROP TABLE IF EXISTS cs_nonce_locks_default; DROP TABLE IF EXISTS purse_requests_default; + DROP TABLE IF EXISTS purse_refunds_default; DROP TABLE IF EXISTS purse_merges_default; DROP TABLE IF EXISTS account_merges_default; DROP TABLE IF EXISTS contracts_default; @@ -2106,6 +2158,13 @@ BEGIN PERFORM add_constraints_to_purse_requests_partition(num_partitions::varchar); PERFORM create_hash_partition( + 'purse_refunds' + ,modulus + ,num_partitions + ); + PERFORM add_constraints_to_purse_refunds_partition(num_partitions::varchar); + + PERFORM create_hash_partition( 'purse_merges' ,modulus ,num_partitions @@ -2316,6 +2375,10 @@ BEGIN DROP CONSTRAINT IF EXISTS purse_requests_pkey CASCADE ; + ALTER TABLE IF EXISTS purse_refunds + DROP CONSTRAINT IF EXISTS purse_refunds_pkey CASCADE + ; + ALTER TABLE IF EXISTS purse_merges DROP CONSTRAINT IF EXISTS purse_merges_pkey CASCADE ; @@ -2572,6 +2635,13 @@ BEGIN ,local_user ); PERFORM create_foreign_hash_partition( + 'purse_refunds' + ,total_num_shards + ,shard_suffix + ,current_shard_num + ,local_user + ); + PERFORM create_foreign_hash_partition( 'purse_merges' ,total_num_shards ,shard_suffix |