diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-01-11 17:33:01 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-01-11 17:33:01 +0100 |
commit | f2e444a6bb6a24c6398376ab7048baae37890b90 (patch) | |
tree | 46c3b0c47986eb89aa82442fff3e782aca09afd7 | |
parent | 30c6580c4eb90050cf2f58127eb71da2b9f0d459 (diff) | |
parent | eafe3435e99870d93c8b6adf457f4c4c9e050415 (diff) |
Merge branch 'master' of git+ssh://git.taler.net/exchange
-rw-r--r-- | src/exchangedb/0003-withdraw_age_commitments.sql | 7 | ||||
-rw-r--r-- | 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); |