aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb/common-0001.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/common-0001.sql')
-rw-r--r--src/exchangedb/common-0001.sql351
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