From eafe3435e99870d93c8b6adf457f4c4c9e050415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Kesim?= Date: Wed, 11 Jan 2023 17:21:16 +0100 Subject: adjust partition and primary keys commitments and reveals in withdraw-age --- src/exchangedb/0003-withdraw_age_commitments.sql | 7 +++--- src/exchangedb/0003-withdraw_age_reveals.sql | 31 +++++++++++++++++++++++- 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); -- cgit v1.2.3