diff options
Diffstat (limited to 'src/exchangedb/common-0001.sql')
-rw-r--r-- | src/exchangedb/common-0001.sql | 351 |
1 files changed, 186 insertions, 165 deletions
diff --git a/src/exchangedb/common-0001.sql b/src/exchangedb/common-0001.sql index 9f32ede74..ab4f8ea91 100644 --- a/src/exchangedb/common-0001.sql +++ b/src/exchangedb/common-0001.sql @@ -346,6 +346,7 @@ BEGIN ',amount_frac INT4 NOT NULL' ',closing_fee_val INT8 NOT NULL' ',closing_fee_frac INT4 NOT NULL' + ',close_request_row INT8 NOT NULL DEFAULT(0)' ') %s ;' ,table_name ,'PARTITION BY HASH (reserve_pub)' @@ -383,6 +384,79 @@ END $$; +--------------------------- close_requests --------------------------- + +CREATE OR REPLACE FUNCTION create_table_close_requests( + IN shard_suffix VARCHAR DEFAULT NULL +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +DECLARE + table_name VARCHAR DEFAULT 'close_requests'; +BEGIN + + PERFORM create_partitioned_table( + 'CREATE TABLE IF NOT EXISTS %I ' + '(close_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY' --UNIQUE' + ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)' -- REFERENCES reserves(reserve_pub) ON DELETE CASCADE + ',close_timestamp INT8 NOT NULL' + ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)' + ',close_val INT8 NOT NULL' + ',close_frac INT4 NOT NULL' + ',close_fee_val INT8 NOT NULL' + ',close_fee_frac INT4 NOT NULL' + ',payto_uri VARCHAR NOT NULL' + ',done BOOL NOT NULL DEFAULT(FALSE)' + ',PRIMARY KEY (reserve_pub,close_timestamp)' + ') %s ;' + ,table_name + ,'PARTITION BY HASH (reserve_pub)' + ,shard_suffix + ); +END +$$; + + +CREATE OR REPLACE FUNCTION add_constraints_to_close_requests( + IN partition_suffix VARCHAR +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +DECLARE + table_name VARCHAR DEFAULT 'close_requests'; +BEGIN + + EXECUTE FORMAT ( + 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_uuid_index ' + 'ON ' || table_name || ' ' + '(close_request_serial_id);' + ); + EXECUTE FORMAT ( + 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_done_index ' + 'ON ' || table_name || ' ' + '(done);' + ); +END +$$; + +CREATE OR REPLACE FUNCTION add_constraints_to_close_requests_partition( + IN partition_suffix VARCHAR +) +RETURNS void +LANGUAGE plpgsql +AS $$ +BEGIN + EXECUTE FORMAT ( + 'ALTER TABLE close_requests_' || partition_suffix || ' ' + 'ADD CONSTRAINT close_requests_' || partition_suffix || '_close_request_uuid_pkey ' + 'UNIQUE (close_request_serial_id)' + ); +END +$$; + + --------------------------- reserves_open_requests ------------------------------- CREATE OR REPLACE FUNCTION create_table_reserves_open_requests( @@ -1391,8 +1465,6 @@ BEGIN ',h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)' ',age_limit INT4 NOT NULL' ',flags INT4 NOT NULL' - ',refunded BOOLEAN NOT NULL DEFAULT(FALSE)' - ',finished BOOLEAN NOT NULL DEFAULT(FALSE)' ',in_reserve_quota BOOLEAN NOT NULL DEFAULT(FALSE)' ',amount_with_fee_val INT8 NOT NULL' ',amount_with_fee_frac INT4 NOT NULL' @@ -1444,53 +1516,6 @@ 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( @@ -1602,6 +1627,53 @@ BEGIN END $$; + +------------------------------- purse_decision ---------------------------------------- + +CREATE OR REPLACE FUNCTION create_table_purse_decision( + IN shard_suffix VARCHAR DEFAULT NULL +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +DECLARE + table_name VARCHAR DEFAULT 'purse_decision'; +BEGIN + + PERFORM create_partitioned_table( + 'CREATE TABLE IF NOT EXISTS %I ' + '(purse_decision_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY' --UNIQUE + ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)' + ',action_timestamp INT8 NOT NULL' + ',refunded BOOL NOT NULL' + ',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_decision_partition( + IN partition_suffix VARCHAR +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ +BEGIN + EXECUTE FORMAT ( + 'ALTER TABLE purse_decision_' || partition_suffix || ' ' + 'ADD CONSTRAINT purse_decision_' || partition_suffix || '_purse_action_serial_id_key ' + 'UNIQUE (purse_decision_serial_id) ' + ); +END +$$; + + ------------------------- contracts ------------------------------- CREATE OR REPLACE FUNCTION create_table_contracts( @@ -1678,80 +1750,6 @@ BEGIN END $$; ---------------------------- close_requests --------------------------- - -CREATE OR REPLACE FUNCTION create_table_close_requests( - IN shard_suffix VARCHAR DEFAULT NULL -) -RETURNS VOID -LANGUAGE plpgsql -AS $$ -DECLARE - table_name VARCHAR DEFAULT 'close_requests'; -BEGIN - - PERFORM create_partitioned_table( - 'CREATE TABLE IF NOT EXISTS %I ' - '(close_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY' --UNIQUE' - ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)' -- REFERENCES reserves(reserve_pub) ON DELETE CASCADE - ',close_timestamp INT8 NOT NULL' - ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)' - ',close_val INT8 NOT NULL' - ',close_frac INT4 NOT NULL' - ',close_fee_val INT8 NOT NULL' - ',close_fee_frac INT4 NOT NULL' - ',payto_uri VARCHAR NOT NULL' - ',done BOOL NOT NULL DEFAULT(FALSE)' - ',PRIMARY KEY (reserve_pub,close_timestamp)' - ') %s ;' - ,table_name - ,'PARTITION BY HASH (reserve_pub)' - ,shard_suffix - ); -END -$$; - - -CREATE OR REPLACE FUNCTION add_constraints_to_close_requests( - IN partition_suffix VARCHAR -) -RETURNS VOID -LANGUAGE plpgsql -AS $$ -DECLARE - table_name VARCHAR DEFAULT 'close_requests'; -BEGIN - - EXECUTE FORMAT ( - 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_uuid_index ' - 'ON ' || table_name || ' ' - '(close_request_serial_id);' - ); - EXECUTE FORMAT ( - 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_done_index ' - 'ON ' || table_name || ' ' - '(done);' - ); -END -$$; - -CREATE OR REPLACE FUNCTION add_constraints_to_close_requests_partition( - IN partition_suffix VARCHAR -) -RETURNS void -LANGUAGE plpgsql -AS $$ -BEGIN - EXECUTE FORMAT ( - 'ALTER TABLE close_requests_' || partition_suffix || ' ' - 'ADD CONSTRAINT close_requests_' || partition_suffix || '_close_request_uuid_pkey ' - 'UNIQUE (close_request_serial_id)' - ); -END -$$; - - - ------------------------------- purse_deposits ------------------------------- CREATE OR REPLACE FUNCTION create_table_purse_deposits( @@ -2087,6 +2085,15 @@ BEGIN ALTER TABLE IF EXISTS reserves_close DETACH PARTITION reserves_close_default; + ALTER TABLE IF EXISTS history_requests + DETACH partition history_requests_default; + + ALTER TABLE IF EXISTS close_requests + DETACH partition close_requests_default; + + ALTER TABLE IF EXISTS reserves_open_requests + DETACH partition reserves_open_requests_default; + ALTER TABLE IF EXISTS reserves_out DETACH PARTITION reserves_out_default; @@ -2145,8 +2152,8 @@ 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_decision + DETACH partition purse_decision_default; ALTER TABLE IF EXISTS purse_merges DETACH partition purse_merges_default; @@ -2157,12 +2164,6 @@ BEGIN ALTER TABLE IF EXISTS contracts DETACH partition contracts_default; - ALTER TABLE IF EXISTS history_requests - DETACH partition history_requests_default; - - ALTER TABLE IF EXISTS close_requests - DETACH partition close_requests_default; - ALTER TABLE IF EXISTS purse_deposits DETACH partition purse_deposits_default; @@ -2194,6 +2195,10 @@ BEGIN DROP TABLE IF EXISTS reserves_default; DROP TABLE IF EXISTS reserves_in_default; DROP TABLE IF EXISTS reserves_close_default; + DROP TABLE IF EXISTS reserves_open_requests_default; + DROP TABLE IF EXISTS history_requests_default; + DROP TABLE IF EXISTS close_requests_default; + DROP TABLE IF EXISTS reserves_out_default; DROP TABLE IF EXISTS reserves_out_by_reserve_default; DROP TABLE IF EXISTS known_coins_default; @@ -2214,13 +2219,12 @@ 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_decision_default; DROP TABLE IF EXISTS purse_merges_default; DROP TABLE IF EXISTS account_merges_default; - DROP TABLE IF EXISTS contracts_default; - DROP TABLE IF EXISTS history_requests_default; - DROP TABLE IF EXISTS close_requests_default; DROP TABLE IF EXISTS purse_deposits_default; + DROP TABLE IF EXISTS contracts_default; + DROP TABLE IF EXISTS wad_out_entries_default; DROP TABLE IF EXISTS wads_in_default; DROP TABLE IF EXISTS wad_in_entries_default; @@ -2417,54 +2421,63 @@ BEGIN ); PERFORM add_constraints_to_cs_nonce_locks_partition(num_partitions::varchar); - ---------------- P2P ---------------------- PERFORM create_hash_partition( - 'purse_requests' + 'close_requests' ,modulus ,num_partitions ); - PERFORM add_constraints_to_purse_requests_partition(num_partitions::varchar); PERFORM create_hash_partition( - 'purse_refunds' + 'reserves_open_requests' ,modulus ,num_partitions ); - PERFORM add_constraints_to_purse_refunds_partition(num_partitions::varchar); + PERFORM add_constraints_to_reserves_open_request_partition(num_partitions::varchar); PERFORM create_hash_partition( - 'purse_merges' + 'history_requests' ,modulus ,num_partitions ); - PERFORM add_constraints_to_purse_merges_partition(num_partitions::varchar); + + + ---------------- P2P ---------------------- PERFORM create_hash_partition( - 'account_merges' + 'purse_requests' ,modulus ,num_partitions ); - PERFORM add_constraints_to_account_merges_partition(num_partitions::varchar); + PERFORM add_constraints_to_purse_requests_partition(num_partitions::varchar); PERFORM create_hash_partition( - 'contracts' + 'purse_decision' ,modulus ,num_partitions ); - PERFORM add_constraints_to_contracts_partition(num_partitions::varchar); + PERFORM add_constraints_to_purse_decision_partition(num_partitions::varchar); PERFORM create_hash_partition( - 'history_requests' + 'purse_merges' ,modulus ,num_partitions ); + PERFORM add_constraints_to_purse_merges_partition(num_partitions::varchar); PERFORM create_hash_partition( - 'close_requests' + 'account_merges' ,modulus ,num_partitions ); + PERFORM add_constraints_to_account_merges_partition(num_partitions::varchar); + + PERFORM create_hash_partition( + 'contracts' + ,modulus + ,num_partitions + ); + PERFORM add_constraints_to_contracts_partition(num_partitions::varchar); PERFORM create_hash_partition( 'purse_deposits' @@ -2644,8 +2657,8 @@ 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_decision + DROP CONSTRAINT IF EXISTS purse_decision_pkey CASCADE ; ALTER TABLE IF EXISTS purse_merges @@ -2782,6 +2795,27 @@ BEGIN ,local_user ); PERFORM create_foreign_hash_partition( + 'history_requests' + ,total_num_shards + ,shard_suffix + ,current_shard_num + ,local_user + ); + PERFORM create_foreign_hash_partition( + 'close_requests' + ,total_num_shards + ,shard_suffix + ,current_shard_num + ,local_user + ); + PERFORM create_foreign_hash_partition( + 'open_requests' + ,total_num_shards + ,shard_suffix + ,current_shard_num + ,local_user + ); + PERFORM create_foreign_hash_partition( 'known_coins' ,total_num_shards ,shard_suffix @@ -2904,7 +2938,7 @@ BEGIN ,local_user ); PERFORM create_foreign_hash_partition( - 'purse_refunds' + 'purse_decision' ,total_num_shards ,shard_suffix ,current_shard_num @@ -2931,20 +2965,7 @@ BEGIN ,current_shard_num ,local_user ); - PERFORM create_foreign_hash_partition( - 'history_requests' - ,total_num_shards - ,shard_suffix - ,current_shard_num - ,local_user - ); - PERFORM create_foreign_hash_partition( - 'close_requests' - ,total_num_shards - ,shard_suffix - ,current_shard_num - ,local_user - ); + PERFORM create_foreign_hash_partition( 'purse_deposits' ,total_num_shards |