aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-01-11 17:33:01 +0100
committerChristian Grothoff <christian@grothoff.org>2023-01-11 17:33:01 +0100
commitf2e444a6bb6a24c6398376ab7048baae37890b90 (patch)
tree46c3b0c47986eb89aa82442fff3e782aca09afd7
parent30c6580c4eb90050cf2f58127eb71da2b9f0d459 (diff)
parenteafe3435e99870d93c8b6adf457f4c4c9e050415 (diff)
Merge branch 'master' of git+ssh://git.taler.net/exchange
-rw-r--r--src/exchangedb/0003-withdraw_age_commitments.sql7
-rw-r--r--src/exchangedb/0003-withdraw_age_reveals.sql31
2 files changed, 33 insertions, 5 deletions
diff --git a/src/exchangedb/0003-withdraw_age_commitments.sql b/src/exchangedb/0003-withdraw_age_commitments.sql
index f6f8b44d7..1aac8bb26 100644
--- a/src/exchangedb/0003-withdraw_age_commitments.sql
+++ b/src/exchangedb/0003-withdraw_age_commitments.sql
@@ -36,7 +36,7 @@ BEGIN
',timestamp INT8 NOT NULL'
') %s ;'
,table_name
- ,'PARTITION BY HASH (h_commitment)'
+ ,'PARTITION BY HASH (reserve_pub)'
,partition_suffix
);
PERFORM comment_partitioned_table(
@@ -96,9 +96,8 @@ BEGIN
table_name = concat_ws('_', table_name, partition_suffix);
EXECUTE FORMAT (
- 'CREATE INDEX ' || table_name || '_by_reserve_pub'
- ' ON ' || table_name ||
- ' (reserve_pub);'
+ 'ALTER TABLE ' || table_name ||
+ ' ADD PRIMARY KEY (h_commitment, reserve_pub);'
);
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
diff --git a/src/exchangedb/0003-withdraw_age_reveals.sql b/src/exchangedb/0003-withdraw_age_reveals.sql
index 2279c6474..3353d9367 100644
--- a/src/exchangedb/0003-withdraw_age_reveals.sql
+++ b/src/exchangedb/0003-withdraw_age_reveals.sql
@@ -25,7 +25,8 @@ DECLARE
BEGIN
PERFORM create_partitioned_table(
'CREATE TABLE %I'
- '(h_commitment BYTEA NOT NULL CHECK (LENGTH(h_commitment)=32)'
+ '(withdraw_age_reveals_id BIGINT GENERATED BY DEFAULT AS IDENTITY' -- UNIQUE
+ ',h_commitment BYTEA NOT NULL CHECK (LENGTH(h_commitment)=32)'
',freshcoin_index INT4 NOT NULL'
',denominations_serial INT8 NOT NULL'
',h_coin_ev BYTEA CHECK (LENGTH(h_coin_ev)=32)'
@@ -66,6 +67,29 @@ BEGIN
END
$$;
+CREATE FUNCTION constrain_table_withdraw_age_reveals(
+ IN partition_suffix VARCHAR
+)
+RETURNS void
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ table_name VARCHAR DEFAULT 'withdraw_age_reveals';
+BEGIN
+ table_name = concat_ws('_', table_name, partition_suffix);
+
+ EXECUTE FORMAT (
+ 'ALTER TABLE ' || table_name ||
+ ' ADD CONSTRAINT ' || table_name || '_withdraw_age_reveals_id_key'
+ ' UNIQUE (withdraw_age_reveals_id);'
+ );
+ EXECUTE FORMAT (
+ 'ALTER TABLE ' || table_name ||
+ ' ADD CONSTRAINT ' || table_name || '_freshcoin_index_and_h_commitment_uniqueness'
+ ' UNIQUE (freshcoin_index, h_commitment);'
+ );
+END
+$$;
CREATE FUNCTION foreign_table_withdraw_age_reveals()
RETURNS void
@@ -104,6 +128,11 @@ INSERT INTO exchange_tables
,FALSE),
('withdraw_age_reveals'
,'exchange-0003'
+ ,'constrain'
+ ,TRUE
+ ,FALSE),
+ ('withdraw_age_reveals'
+ ,'exchange-0003'
,'foreign'
,TRUE
,FALSE);