diff options
Diffstat (limited to 'src/exchangedb/0002-purse_requests.sql')
-rw-r--r-- | src/exchangedb/0002-purse_requests.sql | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/exchangedb/0002-purse_requests.sql b/src/exchangedb/0002-purse_requests.sql index 5038c2417..0fa076338 100644 --- a/src/exchangedb/0002-purse_requests.sql +++ b/src/exchangedb/0002-purse_requests.sql @@ -1,6 +1,6 @@ -- -- This file is part of TALER --- Copyright (C) 2014--2022 Taler Systems SA +-- Copyright (C) 2014--2023 Taler Systems SA -- -- TALER is free software; you can redistribute it and/or modify it under the -- terms of the GNU General Public License as published by the Free Software @@ -15,13 +15,13 @@ -- CREATE FUNCTION create_table_purse_requests( - IN partition_suffix VARCHAR DEFAULT NULL + IN partition_suffix TEXT DEFAULT NULL ) RETURNS VOID LANGUAGE plpgsql AS $$ DECLARE - table_name VARCHAR DEFAULT 'purse_requests'; + table_name TEXT DEFAULT 'purse_requests'; BEGIN PERFORM create_partitioned_table( 'CREATE TABLE %I ' @@ -34,12 +34,10 @@ BEGIN ',age_limit INT4 NOT NULL' ',flags INT4 NOT NULL' ',in_reserve_quota BOOLEAN NOT NULL DEFAULT(FALSE)' - ',amount_with_fee_val INT8 NOT NULL' - ',amount_with_fee_frac INT4 NOT NULL' - ',purse_fee_val INT8 NOT NULL' - ',purse_fee_frac INT4 NOT NULL' - ',balance_val INT8 NOT NULL DEFAULT (0)' - ',balance_frac INT4 NOT NULL DEFAULT (0)' + ',was_decided BOOLEAN NOT NULL DEFAULT(FALSE)' + ',amount_with_fee taler_amount NOT NULL' + ',purse_fee taler_amount NOT NULL' + ',balance taler_amount NOT NULL DEFAULT (0,0)' ',purse_sig BYTEA NOT NULL CHECK(LENGTH(purse_sig)=64)' ',PRIMARY KEY (purse_pub)' ') %s ;' @@ -90,19 +88,19 @@ BEGIN ); PERFORM comment_partitioned_column( 'Total amount expected to be in the purse' - ,'amount_with_fee_val' + ,'amount_with_fee' ,table_name ,partition_suffix ); PERFORM comment_partitioned_column( 'Purse fee the client agreed to pay from the reserve (accepted by the exchange at the time the purse was created). Zero if in_reserve_quota is TRUE.' - ,'purse_fee_val' + ,'purse_fee' ,table_name ,partition_suffix ); PERFORM comment_partitioned_column( 'Total amount actually in the purse (updated)' - ,'balance_val' + ,'balance' ,table_name ,partition_suffix ); @@ -116,28 +114,26 @@ END $$; CREATE FUNCTION constrain_table_purse_requests( - IN partition_suffix VARCHAR + IN partition_suffix TEXT ) RETURNS VOID LANGUAGE plpgsql AS $$ DECLARE - table_name VARCHAR DEFAULT 'purse_requests'; + table_name TEXT DEFAULT 'purse_requests'; BEGIN table_name = concat_ws('_', table_name, partition_suffix); - -- FIXME: change to materialized index by merge_pub! EXECUTE FORMAT ( 'CREATE INDEX ' || table_name || '_merge_pub ' 'ON ' || table_name || ' ' '(merge_pub);' ); - -- FIXME: drop index on master (crosses partitions)? - -- Or use materialized index? (needed?) EXECUTE FORMAT ( 'CREATE INDEX ' || table_name || '_purse_expiration ' 'ON ' || table_name || ' ' - '(purse_expiration);' + '(purse_expiration) ' || + 'WHERE NOT was_decided;' ); EXECUTE FORMAT ( 'ALTER TABLE ' || table_name || |