[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-exchange] branch master updated: prepare tables for DD31
From: |
gnunet |
Subject: |
[taler-exchange] branch master updated: prepare tables for DD31 |
Date: |
Sun, 18 Sep 2022 18:04:47 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository exchange.
The following commit(s) were added to refs/heads/master by this push:
new da69fd9c prepare tables for DD31
da69fd9c is described below
commit da69fd9c72c5060be1ee6375da5901b7cb9bf257
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Sep 18 18:04:41 2022 +0200
prepare tables for DD31
---
src/exchangedb/common-0001.sql | 171 ++++++++++++++++++++++++++++++++++
src/exchangedb/exchange-0001-part.sql | 52 +++++++++++
src/exchangedb/shard-0001-part.sql | 11 +++
3 files changed, 234 insertions(+)
diff --git a/src/exchangedb/common-0001.sql b/src/exchangedb/common-0001.sql
index 6dc661fd..4a0aac38 100644
--- a/src/exchangedb/common-0001.sql
+++ b/src/exchangedb/common-0001.sql
@@ -382,6 +382,177 @@ BEGIN
END
$$;
+
+--------------------------- reserves_open_requests
-------------------------------
+
+CREATE OR REPLACE FUNCTION create_table_reserves_open_requests(
+ IN shard_suffix VARCHAR DEFAULT NULL
+)
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ table_name VARCHAR default 'reserves_open_requests';
+BEGIN
+
+ PERFORM create_partitioned_table(
+ 'CREATE TABLE IF NOT EXISTS %I'
+ '(open_request_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY' -- UNIQUE /
PRIMARY KEY'
+ ',reserve_pub BYTEA NOT NULL' -- REFERENCES reserves (reserve_pub) ON
DELETE CASCADE'
+ ',request_timestamp INT8 NOT NULL'
+ ',expiration_date INT8 NOT NULL'
+ ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
+ ',reserve_payment_val INT8 NOT NULL'
+ ',reserve_payment_frac INT4 NOT NULL'
+ ',requested_purse_limit INT4 NOT NULL'
+ ') %s ;'
+ ,table_name
+ ,'PARTITION BY HASH (reserve_pub)'
+ ,shard_suffix
+ );
+
+ table_name = concat_ws('_', table_name, shard_suffix);
+
+ EXECUTE FORMAT (
+ 'CREATE INDEX IF NOT EXISTS ' || table_name ||
'_by_reserve_open_uuid_index '
+ 'ON ' || table_name || ' '
+ '(open_request_uuid);'
+ );
+ EXECUTE FORMAT (
+ 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_pub_index '
+ 'ON ' || table_name || ' '
+ '(reserve_pub);'
+ );
+END
+$$;
+
+CREATE OR REPLACE FUNCTION add_constraints_to_reserves_open_request_partition(
+ IN partition_suffix VARCHAR
+)
+RETURNS void
+LANGUAGE plpgsql
+AS $$
+BEGIN
+ EXECUTE FORMAT (
+ 'ALTER TABLE reserves_open_requests_' || partition_suffix || ' '
+ 'ADD CONSTRAINT reserves_open_requests_' || partition_suffix ||
'_by_uuid '
+ 'PRIMARY KEY (open_request_uuid),'
+ 'ADD CONSTRAINT reserves_open_requests_' || partition_suffix ||
'_by_time '
+ 'UNIQUE (reserve_pub,request_timestamp)'
+ );
+END
+$$;
+
+
+--------------------------- reserves_open_deposits
-------------------------------
+
+CREATE OR REPLACE FUNCTION create_table_reserves_open_deposits(
+ IN shard_suffix VARCHAR DEFAULT NULL
+)
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ table_name VARCHAR default 'reserves_open_deposits';
+BEGIN
+
+ PERFORM create_partitioned_table(
+ 'CREATE TABLE IF NOT EXISTS %I'
+ '(reserve_open_deposit_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY' --
UNIQUE / PRIMARY KEY'
+ ',reserve_pub BYTEA NOT NULL' -- REFERENCES reserves (reserve_pub) ON
DELETE CASCADE'
+ ',request_timestamp INT8 NOT NULL'
+ ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
+ ',coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)'
+ ',contribution_val INT8 NOT NULL'
+ ',contribution_frac INT4 NOT NULL'
+ ') %s ;'
+ ,table_name
+ ,'PARTITION BY HASH (coin_pub)'
+ ,shard_suffix
+ );
+
+ table_name = concat_ws('_', table_name, shard_suffix);
+
+ EXECUTE FORMAT (
+ 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_uuid '
+ 'ON ' || table_name || ' '
+ '(reserve_open_deposit_uuid);'
+ );
+ EXECUTE FORMAT (
+ 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve '
+ 'ON ' || table_name || ' '
+ '(reserve_pub,request_timestamp);'
+ );
+END
+$$;
+
+CREATE OR REPLACE FUNCTION add_constraints_to_reserves_open_deposits_partition(
+ IN partition_suffix VARCHAR
+)
+RETURNS void
+LANGUAGE plpgsql
+AS $$
+BEGIN
+ EXECUTE FORMAT (
+ 'ALTER TABLE reserves_open_deposits_' || partition_suffix || ' '
+ 'ADD CONSTRAINT reserves_open_deposits_' || partition_suffix ||
'_coin_unique '
+ 'PRIMARY KEY (coin_pub,reserve_pub)'
+ );
+END
+$$;
+
+
+--------------------------- reserves_close_requests
-------------------------------
+
+CREATE OR REPLACE FUNCTION create_table_reserves_close_requests(
+ IN shard_suffix VARCHAR DEFAULT NULL
+)
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ table_name VARCHAR default 'reserves_close_requests';
+BEGIN
+
+ PERFORM create_partitioned_table(
+ 'CREATE TABLE IF NOT EXISTS %I'
+ '(close_request_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY' -- UNIQUE
/ PRIMARY KEY'
+ ',reserve_pub BYTEA NOT NULL' -- REFERENCES reserves (reserve_pub) ON
DELETE CASCADE'
+ ',execution_date INT8 NOT NULL'
+ ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
+ ',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
+ ') %s ;'
+ ,table_name
+ ,'PARTITION BY HASH (reserve_pub)'
+ ,shard_suffix
+ );
+
+ table_name = concat_ws('_', table_name, shard_suffix);
+
+ EXECUTE FORMAT (
+ 'CREATE INDEX IF NOT EXISTS ' || table_name ||
'_by_close_request_uuid_index '
+ 'ON ' || table_name || ' '
+ '(close_request_uuid);'
+ );
+END
+$$;
+
+CREATE OR REPLACE FUNCTION
add_constraints_to_reserves_close_requests_partition(
+ IN partition_suffix VARCHAR
+)
+RETURNS void
+LANGUAGE plpgsql
+AS $$
+BEGIN
+ EXECUTE FORMAT (
+ 'ALTER TABLE reserves_close_requests_' || partition_suffix || ' '
+ 'ADD CONSTRAINT reserves_close_' || partition_suffix ||
'_close_request_uuid_pkey '
+ 'PRIMARY KEY (close_request_uuid)'
+ );
+END
+$$;
+
+
---------------------------- reserves_out -------------------------------
CREATE OR REPLACE FUNCTION create_table_reserves_out(
diff --git a/src/exchangedb/exchange-0001-part.sql
b/src/exchangedb/exchange-0001-part.sql
index 6a3b4ac2..c9c3e2f0 100644
--- a/src/exchangedb/exchange-0001-part.sql
+++ b/src/exchangedb/exchange-0001-part.sql
@@ -233,6 +233,58 @@ CREATE TABLE IF NOT EXISTS reserves_close_default
SELECT add_constraints_to_reserves_close_partition('default');
+
+
+
+
+-- ------------------------------ reserves_open_requests
----------------------------------------
+
+SELECT create_table_reserves_open_requests();
+
+COMMENT ON TABLE reserves_open_requests
+ IS 'requests to keep a reserve open';
+COMMENT ON COLUMN reserves_open_requests.reserve_payment_val
+ IS 'Funding to pay for the request from the reserve balance itself.';
+
+CREATE TABLE IF NOT EXISTS reserves_open_requests_default
+ PARTITION OF reserves_open_requests
+ FOR VALUES WITH (MODULUS 1, REMAINDER 0);
+
+SELECT add_constraints_to_reserves_open_request_partition('default');
+
+
+-- ------------------------------ reserves_open_deposits
----------------------------------------
+
+SELECT create_table_reserves_open_deposits();
+
+COMMENT ON TABLE reserves_open_deposits
+ IS 'coin contributions paying for a reserve to remain open';
+COMMENT ON COLUMN reserves_open_deposits.request_timestamp
+ IS 'Identifies the specific reserve open request being paid for.';
+
+CREATE TABLE IF NOT EXISTS reserves_open_deposits_default
+ PARTITION OF reserves_open_deposits
+ FOR VALUES WITH (MODULUS 1, REMAINDER 0);
+
+SELECT add_constraints_to_reserves_open_deposits_partition('default');
+
+
+-- ------------------------------ reserves_close_requests
----------------------------------------
+
+SELECT create_table_reserves_close_requests();
+
+COMMENT ON TABLE reserves_close_requests
+ IS 'explicit requests by clients to affect an immediate closure of a
reserve';
+COMMENT ON COLUMN reserves_close_requests.wire_target_h_payto
+ IS 'Identifies the credited bank account. Optional.';
+
+CREATE TABLE IF NOT EXISTS reserves_close_requests_default
+ PARTITION OF reserves_close_requests
+ FOR VALUES WITH (MODULUS 1, REMAINDER 0);
+
+SELECT add_constraints_to_reserves_close_requests_partition('default');
+
+
-- ------------------------------ reserves_out
----------------------------------------
SELECT create_table_reserves_out();
diff --git a/src/exchangedb/shard-0001-part.sql
b/src/exchangedb/shard-0001-part.sql
index 5ee7fbf2..0f20be63 100644
--- a/src/exchangedb/shard-0001-part.sql
+++ b/src/exchangedb/shard-0001-part.sql
@@ -42,8 +42,19 @@ BEGIN
PERFORM add_constraints_to_reserves_in_partition(shard_suffix);
PERFORM create_table_reserves_close(shard_suffix);
+ PERFORM add_constraints_to_reserves_close_partition(shard_suffix);
+
+ PERFORM create_table_reserves_open_requests(shard_suffix);
+ PERFORM add_constraints_to_reserves_open_request_partition(shard_suffix);
+
+ PERFORM create_table_reserves_open_deposits(shard_suffix);
+ PERFORM add_constraints_to_reserves_open_deposits_partition(shard_suffix);
+
+ PERFORM create_table_reserves_close_requests(shard_suffix);
+ PERFORM add_constraints_to_reserves_close_requests_partition(shard_suffix);
PERFORM create_table_reserves_out(shard_suffix);
+ PERFORM add_constraints_to_reserves_out_partition(shard_suffix);
PERFORM create_table_reserves_out_by_reserve(shard_suffix);
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-exchange] branch master updated: prepare tables for DD31,
gnunet <=