aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb/0002-legitimization_requirements.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/0002-legitimization_requirements.sql')
-rw-r--r--src/exchangedb/0002-legitimization_requirements.sql49
1 files changed, 36 insertions, 13 deletions
diff --git a/src/exchangedb/0002-legitimization_requirements.sql b/src/exchangedb/0002-legitimization_requirements.sql
index c58d24318..7aaf7b799 100644
--- a/src/exchangedb/0002-legitimization_requirements.sql
+++ b/src/exchangedb/0002-legitimization_requirements.sql
@@ -14,16 +14,15 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-CREATE OR REPLACE FUNCTION create_table_legitimization_requirements(
- IN shard_suffix VARCHAR DEFAULT NULL
+CREATE FUNCTION create_table_legitimization_requirements(
+ IN partition_suffix VARCHAR DEFAULT NULL
)
RETURNS VOID
LANGUAGE plpgsql
AS $$
BEGIN
-
PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
+ 'CREATE TABLE %I'
'(legitimization_requirement_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY' -- UNIQUE'
',h_payto BYTEA NOT NULL CHECK (LENGTH(h_payto)=32)'
',required_checks VARCHAR NOT NULL'
@@ -31,15 +30,37 @@ BEGIN
') %s ;'
,'legitimization_requirements'
,'PARTITION BY HASH (h_payto)'
- ,shard_suffix
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_table(
+ 'List of required legitimizations by account'
+ ,'legitimization_requirements'
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
+ 'unique ID for this legitimization requirement at the exchange'
+ ,'legitimization_requirement_serial_id'
+ ,'legitimization_requirements'
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
+ 'foreign key linking the entry to the wire_targets table, NOT a primary key (multiple legitimizations are possible per wire target)'
+ ,'h_payto'
+ ,'legitimization_requirements'
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
+ 'space-separated list of required checks'
+ ,'required_checks'
+ ,'legitimization_requirements'
+ ,partition_suffix
);
-
END
$$;
-- We need a separate function for this, as we call create_table only once but need to add
-- those constraints to each partition which gets created
-CREATE OR REPLACE FUNCTION add_constraints_to_legitimization_requirements_partition(
+CREATE FUNCTION constrain_table_legitimization_requirements(
IN partition_suffix VARCHAR
)
RETURNS void
@@ -48,14 +69,11 @@ AS $$
DECLARE
partition_name VARCHAR;
BEGIN
-
partition_name = concat_ws('_', 'legitimization_requirements', partition_suffix);
-
EXECUTE FORMAT (
- 'ALTER TABLE ' || partition_name
- || ' '
- 'ADD CONSTRAINT ' || partition_name || '_serial_id_key '
- 'UNIQUE (legitimization_requirement_serial_id)');
+ 'ALTER TABLE ' || partition_name || ' '
+ 'ADD CONSTRAINT ' || partition_name || '_serial_id_key '
+ 'UNIQUE (legitimization_requirement_serial_id)');
END
$$;
@@ -71,4 +89,9 @@ INSERT INTO exchange_tables
,'exchange-0002'
,'create'
,TRUE
+ ,FALSE),
+ ('legitimization_requirements'
+ ,'exchange-0002'
+ ,'constrain'
+ ,TRUE
,FALSE);