aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2023-01-11 15:23:51 +0100
committerÖzgür Kesim <oec-taler@kesim.org>2023-01-11 15:23:57 +0100
commite6929fd3ee1e10b68b2379fc605ee3555a1c605d (patch)
tree1d1a1912c5aa56bbd8006232bc099ab0531cff4b /src
parent973c6716793f498725bcd92f498532d0a51c97cb (diff)
choose correct partition pivot and denormalization for withdraw-age related tables
Diffstat (limited to 'src')
-rw-r--r--src/exchangedb/0003-withdraw_age_commitments.sql29
-rw-r--r--src/exchangedb/0003-withdraw_age_reveals.sql16
2 files changed, 26 insertions, 19 deletions
diff --git a/src/exchangedb/0003-withdraw_age_commitments.sql b/src/exchangedb/0003-withdraw_age_commitments.sql
index 6ef118c8b..e2205b123 100644
--- a/src/exchangedb/0003-withdraw_age_commitments.sql
+++ b/src/exchangedb/0003-withdraw_age_commitments.sql
@@ -29,13 +29,14 @@ BEGIN
',h_commitment BYTEA PRIMARY KEY CHECK (LENGTH(h_commitment)=64)'
',amount_with_fee_val INT8 NOT NULL'
',amount_with_fee_frac INT4 NOT NULL'
- ',noreveal_index INT4 NOT NULL'
- ',reserve_uuid INT8 NOT NULL' -- TODO: can here be the foreign key reference?
+ ',max_age_group INT2 NOT NULL'
+ ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
',reserve_sig BYTEA CHECK (LENGTH(reserve_sig)=64)'
+ ',noreveal_index INT4 NOT NULL'
',timestamp INT8 NOT NULL'
') %s ;'
,table_name
- ,'PARTITION BY HASH (reserve_uuid)' -- TODO: does that make sense?
+ ,'PARTITION BY HASH (h_commitment)'
,partition_suffix
);
PERFORM comment_partitioned_table(
@@ -50,14 +51,20 @@ BEGIN
,partition_suffix
);
PERFORM comment_partitioned_column(
+ 'The maximum age group that the client commits to with this request'
+ ,'max_age_group'
+ ,table_name
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
'Commitment made by the client, hash over the various client inputs in the cut-and-choose protocol'
,'h_commitment'
,table_name
,partition_suffix
);
PERFORM comment_partitioned_column(
- 'Reference to the reserve from which the coins are goin to be withdrawn'
- ,'reserve_uuid'
+ 'Reference to the public key of the reserve from which the coins are going to be withdrawn'
+ ,'reserve_pub'
,table_name
,partition_suffix
);
@@ -89,14 +96,14 @@ BEGIN
table_name = concat_ws('_', table_name, partition_suffix);
EXECUTE FORMAT (
- 'CREATE INDEX ' || table_name || '_by_reserve_uuid'
+ 'CREATE INDEX ' || table_name || '_by_reserve_pub'
' ON ' || table_name ||
- ' (reserve_uuid);'
+ ' (reserve_pub);'
);
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
' ADD CONSTRAINT ' || table_name || '_withdraw_age_commitment_id_key'
- ' UNIQUE (withdraw_age_commitment_id)'
+ ' UNIQUE (withdraw_age_commitment_id);'
);
END
$$;
@@ -111,9 +118,9 @@ DECLARE
BEGIN
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
- ' ADD CONSTRAINT ' || table_name || '_foreign_reserve_uuid'
- ' FOREIGN KEY (reserve_uuid) '
- ' REFERENCES reserves (reserve_uuid) ON DELETE CASCADE'
+ ' ADD CONSTRAINT ' || table_name || '_foreign_reserve_pub'
+ ' FOREIGN KEY (reserve_pub)'
+ ' REFERENCES reserves (reserve_pub) ON DELETE CASCADE;'
);
END
$$;
diff --git a/src/exchangedb/0003-withdraw_age_reveals.sql b/src/exchangedb/0003-withdraw_age_reveals.sql
index 9e421c9bf..2279c6474 100644
--- a/src/exchangedb/0003-withdraw_age_reveals.sql
+++ b/src/exchangedb/0003-withdraw_age_reveals.sql
@@ -25,13 +25,13 @@ DECLARE
BEGIN
PERFORM create_partitioned_table(
'CREATE TABLE %I'
- '(withdraw_age_commitments_id INT8 NOT NULL' -- TODO: can here be the foreign key reference?
+ '(h_commitment BYTEA NOT NULL CHECK (LENGTH(h_commitment)=32)'
',freshcoin_index INT4 NOT NULL'
- ',denominations_serial INT8 NOT NULL' -- TODO: can here be the foreign key reference?
+ ',denominations_serial INT8 NOT NULL'
',h_coin_ev BYTEA CHECK (LENGTH(h_coin_ev)=32)'
') %s ;'
,table_name
- ,'PARTITION BY HASH (withdraw_age_commitments_id)' -- TODO: does that make sense?
+ ,'PARTITION BY HASH (h_commitment)'
,partition_suffix
);
PERFORM comment_partitioned_table(
@@ -41,7 +41,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Foreign key reference to the corresponding commitment'
- ,'withdraw_age_commitments_id'
+ ,'h_commitment'
,table_name
,partition_suffix
);
@@ -76,15 +76,15 @@ DECLARE
BEGIN
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
- ' ADD CONSTRAINT ' || table_name || '_foreign_withdraw_age_commitment_id'
- ' FOREIGN KEY (withdraw_age_commitments_id) '
- ' REFERENCES withdraw_age_commitments (withdraw_age_commitment_id) ON DELETE CASCADE'
+ ' ADD CONSTRAINT ' || table_name || '_foreign_h_commitment'
+ ' FOREIGN KEY (h_commitment)'
+ ' REFERENCES withdraw_age_commitments (h_commitment) ON DELETE CASCADE;'
);
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
' ADD CONSTRAINT ' || table_name || '_foreign_denominations_serial'
' FOREIGN KEY (denominations_serial) '
- ' REFERENCES denominations (denominations_serial) ON DELETE CASCADE'
+ ' REFERENCES denominations (denominations_serial) ON DELETE CASCADE;'
);
END
$$;