aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2023-01-11 17:21:16 +0100
committerÖzgür Kesim <oec-taler@kesim.org>2023-01-11 17:21:22 +0100
commiteafe3435e99870d93c8b6adf457f4c4c9e050415 (patch)
treea50af60153d4b66be027b3cd15e4d2d2cce9065f
parent8992c30631b14fe3fa8b2bfb7b7b3c7e493d9113 (diff)
downloadexchange-eafe3435e99870d93c8b6adf457f4c4c9e050415.tar.gz
exchange-eafe3435e99870d93c8b6adf457f4c4c9e050415.tar.bz2
exchange-eafe3435e99870d93c8b6adf457f4c4c9e050415.zip
adjust partition and primary keys commitments and reveals in withdraw-age
-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);