aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/exchangedb/0002-aggregation_transient.sql5
-rw-r--r--src/exchangedb/0002-aml_history.sql5
-rw-r--r--src/exchangedb/0002-aml_status.sql5
-rw-r--r--src/exchangedb/0002-close_requests.sql8
-rw-r--r--src/exchangedb/0002-denominations.sql15
-rw-r--r--src/exchangedb/0002-deposits.sql3
-rw-r--r--src/exchangedb/0002-global_fee.sql9
-rw-r--r--src/exchangedb/0002-history_requests.sql5
-rw-r--r--src/exchangedb/0002-known_coins.sql5
-rw-r--r--src/exchangedb/0002-partners.sql5
-rw-r--r--src/exchangedb/0002-policy_details.sql22
-rw-r--r--src/exchangedb/0002-profit_drains.sql5
-rw-r--r--src/exchangedb/0002-purse_deposits.sql5
-rw-r--r--src/exchangedb/0002-purse_requests.sql15
-rw-r--r--src/exchangedb/0002-recoup.sql3
-rw-r--r--src/exchangedb/0002-recoup_refresh.sql3
-rw-r--r--src/exchangedb/0002-refresh_commitments.sql3
-rw-r--r--src/exchangedb/0002-refunds.sql3
-rw-r--r--src/exchangedb/0002-reserves_close.sql6
-rw-r--r--src/exchangedb/0002-reserves_in.sql5
-rw-r--r--src/exchangedb/0002-reserves_open_deposits.sql3
-rw-r--r--src/exchangedb/0002-reserves_open_requests.sql5
-rw-r--r--src/exchangedb/0002-reserves_out.sql3
-rw-r--r--src/exchangedb/0002-wad_in_entries.sql15
-rw-r--r--src/exchangedb/0002-wad_out_entries.sql15
-rw-r--r--src/exchangedb/0002-wads_in.sql5
-rw-r--r--src/exchangedb/0002-wads_out.sql5
-rw-r--r--src/exchangedb/0002-wire_fee.sql6
-rw-r--r--src/exchangedb/0002-wire_out.sql5
-rw-r--r--src/exchangedb/exchange_do_batch_coin_known.sql34
-rw-r--r--src/exchangedb/exchange_do_batch_reserves_update.sql16
-rw-r--r--src/exchangedb/exchange_do_batch_withdraw_insert.sql7
-rw-r--r--src/exchangedb/exchange_do_deposit.sql25
-rw-r--r--src/exchangedb/exchange_do_expire_purse.sql17
-rw-r--r--src/exchangedb/exchange_do_history_request.sql7
-rw-r--r--src/exchangedb/exchange_do_insert_aml_decision.sql20
-rw-r--r--src/exchangedb/exchange_do_insert_or_update_policy_details.sql92
-rw-r--r--src/exchangedb/exchange_do_melt.sql26
-rw-r--r--src/exchangedb/exchange_do_purse_delete.sql13
-rw-r--r--src/exchangedb/exchange_do_purse_deposit.sql59
-rw-r--r--src/exchangedb/exchange_do_purse_merge.sql36
-rw-r--r--src/exchangedb/exchange_do_recoup_by_reserve.sql11
-rw-r--r--src/exchangedb/exchange_do_recoup_to_coin.sql39
-rw-r--r--src/exchangedb/exchange_do_recoup_to_reserve.sql24
-rw-r--r--src/exchangedb/exchange_do_refund.sql74
-rw-r--r--src/exchangedb/exchange_do_refund_by_coin.sql20
-rw-r--r--src/exchangedb/exchange_do_reserve_open_deposit.sql27
-rw-r--r--src/exchangedb/exchange_do_reserves_in_insert.sql45
-rw-r--r--src/exchangedb/exchange_do_withdraw.sql7
-rw-r--r--src/exchangedb/pg_add_denomination_key.c34
-rw-r--r--src/exchangedb/pg_add_policy_fulfillment_proof.c15
-rw-r--r--src/exchangedb/pg_aggregate.c31
-rw-r--r--src/exchangedb/pg_create_aggregation_transient.c10
-rw-r--r--src/exchangedb/pg_do_deposit.c5
-rw-r--r--src/exchangedb/pg_do_melt.c6
-rw-r--r--src/exchangedb/pg_do_refund.c15
-rw-r--r--src/exchangedb/pg_ensure_coin_known.c15
-rw-r--r--src/exchangedb/pg_find_aggregation_transient.c5
-rw-r--r--src/exchangedb/pg_get_coin_transactions.c42
-rw-r--r--src/exchangedb/pg_get_denomination_info.c20
-rw-r--r--src/exchangedb/pg_get_drain_profit.c4
-rw-r--r--src/exchangedb/pg_get_global_fee.c11
-rw-r--r--src/exchangedb/pg_get_global_fees.c11
-rw-r--r--src/exchangedb/pg_get_melt.c12
-rw-r--r--src/exchangedb/pg_get_purse_deposit.c3
-rw-r--r--src/exchangedb/pg_get_purse_request.c7
-rw-r--r--src/exchangedb/pg_get_reserve_history.c162
-rw-r--r--src/exchangedb/pg_get_unfinished_close_requests.c3
-rw-r--r--src/exchangedb/pg_get_wire_fee.c8
-rw-r--r--src/exchangedb/pg_get_wire_fees.c7
-rw-r--r--src/exchangedb/pg_get_withdraw_info.c10
-rw-r--r--src/exchangedb/pg_have_deposit2.c9
-rw-r--r--src/exchangedb/pg_helper.h15
-rw-r--r--src/exchangedb/pg_insert_aml_decision.c5
-rw-r--r--src/exchangedb/pg_insert_close_request.c14
-rw-r--r--src/exchangedb/pg_insert_denomination_info.c32
-rw-r--r--src/exchangedb/pg_insert_deposit.c11
-rw-r--r--src/exchangedb/pg_insert_drain_profit.c11
-rw-r--r--src/exchangedb/pg_insert_global_fee.c20
-rw-r--r--src/exchangedb/pg_insert_partner.c8
-rw-r--r--src/exchangedb/pg_insert_purse_request.c14
-rw-r--r--src/exchangedb/pg_insert_records_by_table.c329
-rw-r--r--src/exchangedb/pg_insert_refund.c9
-rw-r--r--src/exchangedb/pg_insert_reserve_closed.c15
-rw-r--r--src/exchangedb/pg_insert_reserve_open_deposit.c5
-rw-r--r--src/exchangedb/pg_insert_wire_fee.c15
-rw-r--r--src/exchangedb/pg_iterate_denomination_info.c16
-rw-r--r--src/exchangedb/pg_iterate_denominations.c18
-rw-r--r--src/exchangedb/pg_iterate_reserve_close_info.c3
-rw-r--r--src/exchangedb/pg_lookup_denomination_key.c15
-rw-r--r--src/exchangedb/pg_lookup_global_fee_by_time.c9
-rw-r--r--src/exchangedb/pg_lookup_records_by_table.c114
-rw-r--r--src/exchangedb/pg_lookup_transfer_by_deposit.c12
-rw-r--r--src/exchangedb/pg_lookup_wire_fee_by_time.c6
-rw-r--r--src/exchangedb/pg_lookup_wire_transfer.c6
-rw-r--r--src/exchangedb/pg_persist_policy_details.c17
-rw-r--r--src/exchangedb/pg_profit_drains_get_pending.c3
-rw-r--r--src/exchangedb/pg_select_account_merges_above_serial_id.c6
-rw-r--r--src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c3
-rw-r--r--src/exchangedb/pg_select_aggregation_transient.c3
-rw-r--r--src/exchangedb/pg_select_aml_history.c3
-rw-r--r--src/exchangedb/pg_select_aml_process.c6
-rw-r--r--src/exchangedb/pg_select_aml_threshold.c3
-rw-r--r--src/exchangedb/pg_select_deposits_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_deposits_missing_wire.c3
-rw-r--r--src/exchangedb/pg_select_history_requests_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_merge_amounts_for_kyc_check.c3
-rw-r--r--src/exchangedb/pg_select_purse.c6
-rw-r--r--src/exchangedb/pg_select_purse_by_merge_pub.c8
-rw-r--r--src/exchangedb/pg_select_purse_decisions_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_purse_deposits_above_serial_id.c9
-rw-r--r--src/exchangedb/pg_select_purse_deposits_by_purse.c3
-rw-r--r--src/exchangedb/pg_select_purse_merges_above_serial_id.c6
-rw-r--r--src/exchangedb/pg_select_purse_requests_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_recoup_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_recoup_refresh_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_refreshes_above_serial_id.c6
-rw-r--r--src/exchangedb/pg_select_refunds_above_serial_id.c13
-rw-r--r--src/exchangedb/pg_select_refunds_by_coin.c44
-rw-r--r--src/exchangedb/pg_select_reserve_closed_above_serial_id.c6
-rw-r--r--src/exchangedb/pg_select_reserve_open_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id.c5
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c6
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id.c3
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c4
-rw-r--r--src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c6
-rw-r--r--src/exchangedb/pg_select_withdrawals_above_serial_id.c6
-rw-r--r--src/exchangedb/pg_set_purse_balance.c6
-rw-r--r--src/exchangedb/pg_store_wire_transfer_out.c10
-rw-r--r--src/exchangedb/pg_trigger_aml_process.c11
-rw-r--r--src/exchangedb/pg_update_aggregation_transient.c14
-rw-r--r--src/exchangedb/shard-0001.sql2575
132 files changed, 914 insertions, 3847 deletions
diff --git a/src/exchangedb/0002-aggregation_transient.sql b/src/exchangedb/0002-aggregation_transient.sql
index 2d77e63ca..851342d81 100644
--- a/src/exchangedb/0002-aggregation_transient.sql
+++ b/src/exchangedb/0002-aggregation_transient.sql
@@ -25,8 +25,7 @@ DECLARE
BEGIN
PERFORM create_partitioned_table(
'CREATE TABLE %I '
- '(amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
+ '(amount taler_amount NOT NULL'
',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
',merchant_pub BYTEA CHECK (LENGTH(merchant_pub)=32)'
',exchange_account_section TEXT NOT NULL'
@@ -44,7 +43,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Sum of all of the aggregated deposits (without deposit fees)'
- ,'amount_val'
+ ,'amount'
,table_name
,shard_suffix
);
diff --git a/src/exchangedb/0002-aml_history.sql b/src/exchangedb/0002-aml_history.sql
index 1768b97d4..18b79bae5 100644
--- a/src/exchangedb/0002-aml_history.sql
+++ b/src/exchangedb/0002-aml_history.sql
@@ -27,8 +27,7 @@ BEGIN
'CREATE TABLE IF NOT EXISTS %I'
'(aml_history_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',h_payto BYTEA CHECK (LENGTH(h_payto)=32)'
- ',new_threshold_val INT8 NOT NULL DEFAULT(0)'
- ',new_threshold_frac INT4 NOT NULL DEFAULT(0)'
+ ',new_threshold taler_amount NOT NULL DEFAULT(0,0)'
',new_status INT4 NOT NULL DEFAULT(0)'
',decision_time INT8 NOT NULL DEFAULT(0)'
',justification VARCHAR NOT NULL'
@@ -54,7 +53,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'new monthly inbound transaction limit below which we are OK'
- ,'new_threshold_val'
+ ,'new_threshold'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-aml_status.sql b/src/exchangedb/0002-aml_status.sql
index f7b7e83b1..47e8d90c3 100644
--- a/src/exchangedb/0002-aml_status.sql
+++ b/src/exchangedb/0002-aml_status.sql
@@ -27,8 +27,7 @@ BEGIN
'CREATE TABLE IF NOT EXISTS %I'
'(aml_status_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',h_payto BYTEA PRIMARY KEY CHECK (LENGTH(h_payto)=32)'
- ',threshold_val INT8 NOT NULL DEFAULT(0)'
- ',threshold_frac INT4 NOT NULL DEFAULT(0)'
+ ',threshold taler_amount NOT NULL DEFAULT(0,0)'
',status INT4 NOT NULL DEFAULT(0)'
',kyc_requirement INT8 NOT NULL DEFAULT(0)'
') %s ;'
@@ -49,7 +48,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'monthly inbound transaction limit below which we are OK (if status is 1)'
- ,'threshold_val'
+ ,'threshold'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-close_requests.sql b/src/exchangedb/0002-close_requests.sql
index 32149b1b0..a1e7fe388 100644
--- a/src/exchangedb/0002-close_requests.sql
+++ b/src/exchangedb/0002-close_requests.sql
@@ -29,10 +29,8 @@ BEGIN
',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
',close_timestamp INT8 NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',close_val INT8 NOT NULL'
- ',close_frac INT4 NOT NULL'
- ',close_fee_val INT8 NOT NULL'
- ',close_fee_frac INT4 NOT NULL'
+ ',close taler_amount NOT NULL'
+ ',close_fee taler_amount NOT NULL'
',payto_uri VARCHAR NOT NULL'
',done BOOL NOT NULL DEFAULT(FALSE)'
',PRIMARY KEY (reserve_pub,close_timestamp)'
@@ -60,7 +58,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Balance of the reserve at the time of closing, to be wired to the associated bank account (minus the closing fee)'
- ,'close_val'
+ ,'close'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-denominations.sql b/src/exchangedb/0002-denominations.sql
index d468a3875..a3de2b149 100644
--- a/src/exchangedb/0002-denominations.sql
+++ b/src/exchangedb/0002-denominations.sql
@@ -25,16 +25,11 @@ CREATE TABLE denominations
,expire_withdraw INT8 NOT NULL
,expire_deposit INT8 NOT NULL
,expire_legal INT8 NOT NULL
- ,coin_val INT8 NOT NULL
- ,coin_frac INT4 NOT NULL
- ,fee_withdraw_val INT8 NOT NULL
- ,fee_withdraw_frac INT4 NOT NULL
- ,fee_deposit_val INT8 NOT NULL
- ,fee_deposit_frac INT4 NOT NULL
- ,fee_refresh_val INT8 NOT NULL
- ,fee_refresh_frac INT4 NOT NULL
- ,fee_refund_val INT8 NOT NULL
- ,fee_refund_frac INT4 NOT NULL
+ ,coin taler_amount NOT NULL
+ ,fee_withdraw taler_amount NOT NULL
+ ,fee_deposit taler_amount NOT NULL
+ ,fee_refresh taler_amount NOT NULL
+ ,fee_refund taler_amount NOT NULL
);
COMMENT ON TABLE denominations
IS 'Main denominations table. All the valid denominations the exchange knows about.';
diff --git a/src/exchangedb/0002-deposits.sql b/src/exchangedb/0002-deposits.sql
index d8afdac84..43c8d9ea7 100644
--- a/src/exchangedb/0002-deposits.sql
+++ b/src/exchangedb/0002-deposits.sql
@@ -29,8 +29,7 @@ BEGIN
',shard INT8 NOT NULL'
',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
',known_coin_id INT8 NOT NULL' -- FIXME: column needed!?
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
',wallet_timestamp INT8 NOT NULL'
',exchange_timestamp INT8 NOT NULL'
',refund_deadline INT8 NOT NULL'
diff --git a/src/exchangedb/0002-global_fee.sql b/src/exchangedb/0002-global_fee.sql
index 0a2f9b495..f6526798d 100644
--- a/src/exchangedb/0002-global_fee.sql
+++ b/src/exchangedb/0002-global_fee.sql
@@ -18,12 +18,9 @@ CREATE TABLE global_fee
(global_fee_serial BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
,start_date INT8 NOT NULL
,end_date INT8 NOT NULL
- ,history_fee_val INT8 NOT NULL
- ,history_fee_frac INT4 NOT NULL
- ,account_fee_val INT8 NOT NULL
- ,account_fee_frac INT4 NOT NULL
- ,purse_fee_val INT8 NOT NULL
- ,purse_fee_frac INT4 NOT NULL
+ ,history_fee taler_amount NOT NULL
+ ,account_fee taler_amount NOT NULL
+ ,purse_fee taler_amount NOT NULL
,purse_timeout INT8 NOT NULL
,history_expiration INT8 NOT NULL
,purse_account_limit INT4 NOT NULL
diff --git a/src/exchangedb/0002-history_requests.sql b/src/exchangedb/0002-history_requests.sql
index 853a435d4..2694a7cea 100644
--- a/src/exchangedb/0002-history_requests.sql
+++ b/src/exchangedb/0002-history_requests.sql
@@ -30,8 +30,7 @@ BEGIN
',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
',request_timestamp INT8 NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',history_fee_val INT8 NOT NULL'
- ',history_fee_frac INT4 NOT NULL'
+ ',history_fee taler_amount NOT NULL'
',PRIMARY KEY (reserve_pub,request_timestamp)'
') %s ;'
,table_name
@@ -57,7 +56,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'History fee approved by the signature'
- ,'history_fee_val'
+ ,'history_fee'
,table_name
,shard_suffix
);
diff --git a/src/exchangedb/0002-known_coins.sql b/src/exchangedb/0002-known_coins.sql
index 4cdb974ea..c8cc888fe 100644
--- a/src/exchangedb/0002-known_coins.sql
+++ b/src/exchangedb/0002-known_coins.sql
@@ -31,8 +31,7 @@ BEGIN
',coin_pub BYTEA NOT NULL PRIMARY KEY CHECK (LENGTH(coin_pub)=32)'
',age_commitment_hash BYTEA CHECK (LENGTH(age_commitment_hash)=32)'
',denom_sig BYTEA NOT NULL'
- ',remaining_val INT8 NOT NULL DEFAULT(0)'
- ',remaining_frac INT4 NOT NULL DEFAULT(0)'
+ ',remaining taler_amount NOT NULL DEFAULT(0,0)'
') %s ;'
,table_name
,'PARTITION BY HASH (coin_pub)'
@@ -57,7 +56,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Value of the coin that remains to be spent'
- ,'remaining_val'
+ ,'remaining'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-partners.sql b/src/exchangedb/0002-partners.sql
index c80f2d745..ed09378d0 100644
--- a/src/exchangedb/0002-partners.sql
+++ b/src/exchangedb/0002-partners.sql
@@ -21,8 +21,7 @@ CREATE TABLE partners
,end_date INT8 NOT NULL
,next_wad INT8 NOT NULL DEFAULT (0)
,wad_frequency INT8 NOT NULL
- ,wad_fee_val INT8 NOT NULL
- ,wad_fee_frac INT4 NOT NULL
+ ,wad_fee taler_amount NOT NULL
,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)
,partner_base_url TEXT NOT NULL
,PRIMARY KEY (partner_master_pub, start_date)
@@ -39,7 +38,7 @@ COMMENT ON COLUMN partners.next_wad
IS 'at what time should we do the next wad transfer to this partner (frequently updated); set to forever after the end_date';
COMMENT ON COLUMN partners.wad_frequency
IS 'how often do we promise to do wad transfers';
-COMMENT ON COLUMN partners.wad_fee_val
+COMMENT ON COLUMN partners.wad_fee
IS 'how high is the fee for a wallet to be added to a wad to this partner';
COMMENT ON COLUMN partners.partner_base_url
IS 'base URL of the REST API for this partner';
diff --git a/src/exchangedb/0002-policy_details.sql b/src/exchangedb/0002-policy_details.sql
index c9bfd1575..8c53b0dc9 100644
--- a/src/exchangedb/0002-policy_details.sql
+++ b/src/exchangedb/0002-policy_details.sql
@@ -21,15 +21,11 @@ CREATE TABLE policy_details
,policy_hash_code BYTEA PRIMARY KEY CHECK(LENGTH(policy_hash_code)=16)
,policy_json VARCHAR
,deadline INT8 NOT NULL
- ,commitment_val INT8 NOT NULL
- ,commitment_frac INT4 NOT NULL
- ,accumulated_total_val INT8 NOT NULL
- ,accumulated_total_frac INT4 NOT NULL
- ,fee_val INT8 NOT NULL
- ,fee_frac INT4 NOT NULL
- ,transferable_val INT8 NOT NULL
- ,transferable_frac INT8 NOT NULL
- ,fulfillment_state smallint NOT NULL CHECK(fulfillment_state between 0 and 5)
+ ,commitment taler_amount NOT NULL
+ ,accumulated_total taler_amount NOT NULL
+ ,fee taler_amount NOT NULL
+ ,transferable taler_amount NOT NULL
+ ,fulfillment_state SMALLINT NOT NULL CHECK(fulfillment_state between 0 and 5)
,fulfillment_id BIGINT NULL REFERENCES policy_fulfillments (fulfillment_id) ON DELETE CASCADE
);
COMMENT ON TABLE policy_details
@@ -40,13 +36,13 @@ COMMENT ON COLUMN policy_details.policy_json
IS 'JSON object with options set that the exchange needs to consider when executing a deposit. Supported details depend on the policy extensions supported by the exchange.';
COMMENT ON COLUMN policy_details.deadline
IS 'Deadline until the policy must be marked as fulfilled (maybe "forever")';
-COMMENT ON COLUMN policy_details.commitment_val
+COMMENT ON COLUMN policy_details.commitment
IS 'The amount that this policy commits to. Invariant: commitment >= fee';
-COMMENT ON COLUMN policy_details.accumulated_total_val
+COMMENT ON COLUMN policy_details.accumulated_total
IS 'The sum of all contributions of all deposit that reference this policy. Invariant: The fulfilment_state must be Insufficient as long as accumulated_total < commitment';
-COMMENT ON COLUMN policy_details.fee_val
+COMMENT ON COLUMN policy_details.fee
IS 'The fee for this policy, due when the policy is fulfilled or timed out';
-COMMENT ON COLUMN policy_details.transferable_val
+COMMENT ON COLUMN policy_details.transferable
IS 'The amount that on fulfillment or timeout will be transferred to the payto-URI''s of the corresponding deposit''s. The policy fees must have been already deducted from it. Invariant: fee+transferable <= accumulated_total. The remaining amount (accumulated_total - fee - transferable) can be refreshed by the owner of the coins when the state is Timeout or Success.';
COMMENT ON COLUMN policy_details.fulfillment_state
IS 'State of the fulfillment:
diff --git a/src/exchangedb/0002-profit_drains.sql b/src/exchangedb/0002-profit_drains.sql
index 4aba9b46e..e4a9bcb1e 100644
--- a/src/exchangedb/0002-profit_drains.sql
+++ b/src/exchangedb/0002-profit_drains.sql
@@ -20,8 +20,7 @@ CREATE TABLE profit_drains
,account_section VARCHAR NOT NULL
,payto_uri VARCHAR NOT NULL
,trigger_date INT8 NOT NULL
- ,amount_val INT8 NOT NULL
- ,amount_frac INT4 NOT NULL
+ ,amount taler_amount NOT NULL
,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)
,executed BOOLEAN NOT NULL DEFAULT FALSE
);
@@ -35,7 +34,7 @@ COMMENT ON COLUMN profit_drains.payto_uri
IS 'specifies the account to be credited';
COMMENT ON COLUMN profit_drains.trigger_date
IS 'set by taler-exchange-offline at the time of making the signature; not necessarily the exact date of execution of the wire transfer, just for orientation';
-COMMENT ON COLUMN profit_drains.amount_val
+COMMENT ON COLUMN profit_drains.amount
IS 'amount to be transferred';
COMMENT ON COLUMN profit_drains.master_sig
IS 'EdDSA signature of type TALER_SIGNATURE_MASTER_DRAIN_PROFIT';
diff --git a/src/exchangedb/0002-purse_deposits.sql b/src/exchangedb/0002-purse_deposits.sql
index 9452f4344..17de48ee5 100644
--- a/src/exchangedb/0002-purse_deposits.sql
+++ b/src/exchangedb/0002-purse_deposits.sql
@@ -29,8 +29,7 @@ BEGIN
',partner_serial_id INT8'
',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
',coin_pub BYTEA NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
',PRIMARY KEY (purse_pub,coin_pub)'
') %s ;'
@@ -63,7 +62,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Total amount being deposited'
- ,'amount_with_fee_val'
+ ,'amount_with_fee'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-purse_requests.sql b/src/exchangedb/0002-purse_requests.sql
index 5038c2417..1d47c28f8 100644
--- a/src/exchangedb/0002-purse_requests.sql
+++ b/src/exchangedb/0002-purse_requests.sql
@@ -34,12 +34,9 @@ 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)'
+ ',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 +87,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
);
diff --git a/src/exchangedb/0002-recoup.sql b/src/exchangedb/0002-recoup.sql
index 36e36d9d9..7e7be78d5 100644
--- a/src/exchangedb/0002-recoup.sql
+++ b/src/exchangedb/0002-recoup.sql
@@ -29,8 +29,7 @@ BEGIN
',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
',coin_blind BYTEA NOT NULL CHECK(LENGTH(coin_blind)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
+ ',amount taler_amount NOT NULL'
',recoup_timestamp INT8 NOT NULL'
',reserve_out_serial_id INT8 NOT NULL'
') %s ;'
diff --git a/src/exchangedb/0002-recoup_refresh.sql b/src/exchangedb/0002-recoup_refresh.sql
index bfcfb3d8d..fde8e00e3 100644
--- a/src/exchangedb/0002-recoup_refresh.sql
+++ b/src/exchangedb/0002-recoup_refresh.sql
@@ -31,8 +31,7 @@ BEGIN
',known_coin_id BIGINT NOT NULL'
',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
',coin_blind BYTEA NOT NULL CHECK(LENGTH(coin_blind)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
+ ',amount taler_amount NOT NULL'
',recoup_timestamp INT8 NOT NULL'
',rrc_serial INT8 NOT NULL'
') %s ;'
diff --git a/src/exchangedb/0002-refresh_commitments.sql b/src/exchangedb/0002-refresh_commitments.sql
index 328dad5ce..21ab073c5 100644
--- a/src/exchangedb/0002-refresh_commitments.sql
+++ b/src/exchangedb/0002-refresh_commitments.sql
@@ -29,8 +29,7 @@ BEGIN
',rc BYTEA PRIMARY KEY CHECK (LENGTH(rc)=64)'
',old_coin_pub BYTEA NOT NULL'
',old_coin_sig BYTEA NOT NULL CHECK(LENGTH(old_coin_sig)=64)'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
',noreveal_index INT4 NOT NULL'
') %s ;'
,table_name
diff --git a/src/exchangedb/0002-refunds.sql b/src/exchangedb/0002-refunds.sql
index 88af42db3..caf695061 100644
--- a/src/exchangedb/0002-refunds.sql
+++ b/src/exchangedb/0002-refunds.sql
@@ -30,8 +30,7 @@ BEGIN
',deposit_serial_id INT8 NOT NULL'
',merchant_sig BYTEA NOT NULL CHECK(LENGTH(merchant_sig)=64)'
',rtransaction_id INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
') %s ;'
,table_name
,'PARTITION BY HASH (coin_pub)'
diff --git a/src/exchangedb/0002-reserves_close.sql b/src/exchangedb/0002-reserves_close.sql
index 52931b877..52a8d0a56 100644
--- a/src/exchangedb/0002-reserves_close.sql
+++ b/src/exchangedb/0002-reserves_close.sql
@@ -30,10 +30,8 @@ BEGIN
',execution_date INT8 NOT NULL'
',wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32)'
',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',closing_fee_val INT8 NOT NULL'
- ',closing_fee_frac INT4 NOT NULL'
+ ',amount taler_amount NOT NULL'
+ ',closing_fee taler_amount NOT NULL'
',close_request_row INT8 NOT NULL DEFAULT(0)'
') %s ;'
,table_name
diff --git a/src/exchangedb/0002-reserves_in.sql b/src/exchangedb/0002-reserves_in.sql
index 410eca7c8..c9c76f281 100644
--- a/src/exchangedb/0002-reserves_in.sql
+++ b/src/exchangedb/0002-reserves_in.sql
@@ -28,8 +28,7 @@ BEGIN
'(reserve_in_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',reserve_pub BYTEA PRIMARY KEY'
',wire_reference INT8 NOT NULL'
- ',credit_val INT8 NOT NULL'
- ',credit_frac INT4 NOT NULL'
+ ',credit taler_amount NOT NULL'
',wire_source_h_payto BYTEA CHECK (LENGTH(wire_source_h_payto)=32)'
',exchange_account_section TEXT NOT NULL'
',execution_date INT8 NOT NULL'
@@ -57,7 +56,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Amount that was transferred into the reserve'
- ,'credit_val'
+ ,'credit'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-reserves_open_deposits.sql b/src/exchangedb/0002-reserves_open_deposits.sql
index 35605d360..c4cb4c300 100644
--- a/src/exchangedb/0002-reserves_open_deposits.sql
+++ b/src/exchangedb/0002-reserves_open_deposits.sql
@@ -30,8 +30,7 @@ BEGIN
',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
',coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)'
- ',contribution_val INT8 NOT NULL'
- ',contribution_frac INT4 NOT NULL'
+ ',contribution taler_amount NOT NULL'
') %s ;'
,table_name
,'PARTITION BY HASH (coin_pub)'
diff --git a/src/exchangedb/0002-reserves_open_requests.sql b/src/exchangedb/0002-reserves_open_requests.sql
index bbd5ec90f..d913461c0 100644
--- a/src/exchangedb/0002-reserves_open_requests.sql
+++ b/src/exchangedb/0002-reserves_open_requests.sql
@@ -30,8 +30,7 @@ BEGIN
',request_timestamp INT8 NOT NULL'
',expiration_date INT8 NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',reserve_payment_val INT8 NOT NULL'
- ',reserve_payment_frac INT4 NOT NULL'
+ ',reserve_payment taler_amount NOT NULL'
',requested_purse_limit INT4 NOT NULL'
') %s ;'
,table_name
@@ -45,7 +44,7 @@ BEGIN
);
PERFORM comment_partitioned_column (
'Fee to pay for the request from the reserve balance itself.'
- ,'reserve_payment_val'
+ ,'reserve_payment'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-reserves_out.sql b/src/exchangedb/0002-reserves_out.sql
index 25d717a52..3b28c22bf 100644
--- a/src/exchangedb/0002-reserves_out.sql
+++ b/src/exchangedb/0002-reserves_out.sql
@@ -32,8 +32,7 @@ BEGIN
',reserve_uuid INT8 NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
',execution_date INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
') %s ;'
,'reserves_out'
,'PARTITION BY HASH (h_blind_ev)'
diff --git a/src/exchangedb/0002-wad_in_entries.sql b/src/exchangedb/0002-wad_in_entries.sql
index 63c8bca2b..99e07be20 100644
--- a/src/exchangedb/0002-wad_in_entries.sql
+++ b/src/exchangedb/0002-wad_in_entries.sql
@@ -32,12 +32,9 @@ BEGIN
',h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)'
',purse_expiration INT8 NOT NULL'
',merge_timestamp INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',wad_fee_val INT8 NOT NULL'
- ',wad_fee_frac INT4 NOT NULL'
- ',deposit_fees_val INT8 NOT NULL'
- ',deposit_fees_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
+ ',wad_fee taler_amount NOT NULL'
+ ',deposit_fees taler_amount NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
',purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64)'
') %s ;'
@@ -88,19 +85,19 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Total amount in the purse'
- ,'amount_with_fee_val'
+ ,'amount_with_fee'
,table_name
,partition_suffix
);
PERFORM comment_partitioned_column(
'Total wad fees paid by the purse'
- ,'wad_fee_val'
+ ,'wad_fee'
,table_name
,partition_suffix
);
PERFORM comment_partitioned_column(
'Total deposit fees paid when depositing coins into the purse'
- ,'deposit_fees_val'
+ ,'deposit_fees'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-wad_out_entries.sql b/src/exchangedb/0002-wad_out_entries.sql
index 45a4813cb..80c0f9c79 100644
--- a/src/exchangedb/0002-wad_out_entries.sql
+++ b/src/exchangedb/0002-wad_out_entries.sql
@@ -33,12 +33,9 @@ BEGIN
',h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)'
',purse_expiration INT8 NOT NULL'
',merge_timestamp INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',wad_fee_val INT8 NOT NULL'
- ',wad_fee_frac INT4 NOT NULL'
- ',deposit_fees_val INT8 NOT NULL'
- ',deposit_fees_frac INT4 NOT NULL'
+ ',amount_with_fee taler_amount NOT NULL'
+ ',wad_fee taler_amount NOT NULL'
+ ',deposit_fees taler_amount NOT NULL'
',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
',purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64)'
') %s ;'
@@ -89,19 +86,19 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Total amount in the purse'
- ,'amount_with_fee_val'
+ ,'amount_with_fee'
,table_name
,partition_suffix
);
PERFORM comment_partitioned_column(
'Wad fee charged to the purse'
- ,'wad_fee_val'
+ ,'wad_fee'
,table_name
,partition_suffix
);
PERFORM comment_partitioned_column(
'Total deposit fees charged to the purse'
- ,'deposit_fees_val'
+ ,'deposit_fees'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-wads_in.sql b/src/exchangedb/0002-wads_in.sql
index 013b16350..e45f3da2f 100644
--- a/src/exchangedb/0002-wads_in.sql
+++ b/src/exchangedb/0002-wads_in.sql
@@ -28,8 +28,7 @@ BEGIN
'(wad_in_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)'
',origin_exchange_url TEXT NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
+ ',amount taler_amount NOT NULL'
',arrival_time INT8 NOT NULL'
',UNIQUE (wad_id, origin_exchange_url)'
') %s ;'
@@ -56,7 +55,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Actual amount that was received by our exchange'
- ,'amount_val'
+ ,'amount'
,table_name
,partition_suffix
);
diff --git a/src/exchangedb/0002-wads_out.sql b/src/exchangedb/0002-wads_out.sql
index edad4a68d..a419bc869 100644
--- a/src/exchangedb/0002-wads_out.sql
+++ b/src/exchangedb/0002-wads_out.sql
@@ -28,8 +28,7 @@ BEGIN
'(wad_out_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)'
',partner_serial_id INT8 NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
+ ',amount taler_amount NOT NULL'
',execution_time INT8 NOT NULL'
') %s ;'
,table_name
@@ -55,7 +54,7 @@ BEGIN
);
PERFORM comment_partitioned_column(
'Amount that was wired'
- ,'amount_val'
+ ,'amount'
,table_name
,shard_suffix
);
diff --git a/src/exchangedb/0002-wire_fee.sql b/src/exchangedb/0002-wire_fee.sql
index deb26ceff..4909992ad 100644
--- a/src/exchangedb/0002-wire_fee.sql
+++ b/src/exchangedb/0002-wire_fee.sql
@@ -19,10 +19,8 @@ CREATE TABLE wire_fee
,wire_method VARCHAR NOT NULL
,start_date INT8 NOT NULL
,end_date INT8 NOT NULL
- ,wire_fee_val INT8 NOT NULL
- ,wire_fee_frac INT4 NOT NULL
- ,closing_fee_val INT8 NOT NULL
- ,closing_fee_frac INT4 NOT NULL
+ ,wire_fee taler_amount NOT NULL
+ ,closing_fee taler_amount NOT NULL
,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)
,PRIMARY KEY (wire_method, start_date)
);
diff --git a/src/exchangedb/0002-wire_out.sql b/src/exchangedb/0002-wire_out.sql
index 9c459fe95..2d7e9595f 100644
--- a/src/exchangedb/0002-wire_out.sql
+++ b/src/exchangedb/0002-wire_out.sql
@@ -30,9 +30,8 @@ BEGIN
',wtid_raw BYTEA UNIQUE NOT NULL CHECK (LENGTH(wtid_raw)=32)'
',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
',exchange_account_section TEXT NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ') %s ;'
+ ',amount taler_amount NOT NULL'
+ ') %s ;'
,table_name
,'PARTITION BY HASH (wtid_raw)'
,partition_suffix
diff --git a/src/exchangedb/exchange_do_batch_coin_known.sql b/src/exchangedb/exchange_do_batch_coin_known.sql
index f6a14cfab..db96cb08c 100644
--- a/src/exchangedb/exchange_do_batch_coin_known.sql
+++ b/src/exchangedb/exchange_do_batch_coin_known.sql
@@ -53,7 +53,7 @@ BEGIN
WITH dd AS (
SELECT
denominations_serial,
- coin_val, coin_frac
+ coin
FROM denominations
WHERE denom_pub_hash
IN
@@ -87,16 +87,14 @@ SELECT
denominations_serial,
age_commitment_hash,
denom_sig,
- remaining_val,
- remaining_frac
+ remaining
)
SELECT
ir.coin_pub,
dd.denominations_serial,
ir.age_commitment_hash,
ir.denom_sig,
- dd.coin_val,
- dd.coin_frac
+ dd.coin
FROM input_rows ir
JOIN dd
ON dd.denom_pub_hash = ir.denom_pub_hash
@@ -218,7 +216,7 @@ BEGIN
WITH dd AS (
SELECT
denominations_serial,
- coin_val, coin_frac
+ coin
FROM denominations
WHERE denom_pub_hash
IN
@@ -242,16 +240,14 @@ SELECT
denominations_serial,
age_commitment_hash,
denom_sig,
- remaining_val,
- remaining_frac
+ remaining
)
SELECT
ir.coin_pub,
dd.denominations_serial,
ir.age_commitment_hash,
ir.denom_sig,
- dd.coin_val,
- dd.coin_frac
+ dd.coin
FROM input_rows ir
JOIN dd
ON dd.denom_pub_hash = ir.denom_pub_hash
@@ -324,7 +320,7 @@ BEGIN
WITH dd AS (
SELECT
denominations_serial,
- coin_val, coin_frac
+ coin
FROM denominations
WHERE denom_pub_hash
IN
@@ -344,16 +340,14 @@ SELECT
denominations_serial,
age_commitment_hash,
denom_sig,
- remaining_val,
- remaining_frac
+ remaining
)
SELECT
ir.coin_pub,
dd.denominations_serial,
ir.age_commitment_hash,
ir.denom_sig,
- dd.coin_val,
- dd.coin_frac
+ dd.coin
FROM input_rows ir
JOIN dd
ON dd.denom_pub_hash = ir.denom_pub_hash
@@ -430,8 +424,8 @@ BEGIN
in_denom_sig2 AS denom_sig
WHERE i = 2
);
- WITH dd (denominations_serial, coin_val, coin_frac) AS (
- SELECT denominations_serial, coin_val, coin_frac
+ WITH dd (denominations_serial, coin) AS (
+ SELECT denominations_serial, coin
FROM denominations
WHERE denom_pub_hash = ins_values.denom_pub_hash
),
@@ -444,15 +438,13 @@ BEGIN
denominations_serial,
age_commitment_hash,
denom_sig,
- remaining_val,
- remaining_frac
+ remaining
) SELECT
input_rows.coin_pub,
dd.denominations_serial,
ins_values.age_commitment_hash,
ins_values.denom_sig,
- coin_val,
- coin_frac
+ coin
FROM dd
CROSS JOIN input_rows
ON CONFLICT DO NOTHING
diff --git a/src/exchangedb/exchange_do_batch_reserves_update.sql b/src/exchangedb/exchange_do_batch_reserves_update.sql
index da7f4508b..8dda84afc 100644
--- a/src/exchangedb/exchange_do_batch_reserves_update.sql
+++ b/src/exchangedb/exchange_do_batch_reserves_update.sql
@@ -29,16 +29,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date)
VALUES
(in_reserve_pub
,in_wire_ref
- ,in_credit.val
- ,in_credit.frac
+ ,in_credit
,in_exchange_account_name
,in_wire_source_h_payto
,in_expiration_date)
@@ -47,17 +45,17 @@ BEGIN
THEN
--IF THE INSERTION WAS A SUCCESS IT MEANS NO DUPLICATED TRANSACTION
out_duplicate = FALSE;
- UPDATE reserves
+ UPDATE reserves rs
SET
- current_balance.frac = current_balance.frac+in_credit.frac
+ current_balance.frac = (rs.current_balance).frac+in_credit.frac
- CASE
- WHEN current_balance.frac + in_credit.frac >= 100000000
+ WHEN (rs.current_balance).frac + in_credit.frac >= 100000000
THEN 100000000
ELSE 1
END
- ,current_balance.val = current_balance.val+in_credit.val
+ ,current_balance.val = (rs.current_balance).val+in_credit.val
+ CASE
- WHEN current_balance.frac + in_credit.frac >= 100000000
+ WHEN (rs.current_balance).frac + in_credit.frac >= 100000000
THEN 1
ELSE 0
END
diff --git a/src/exchangedb/exchange_do_batch_withdraw_insert.sql b/src/exchangedb/exchange_do_batch_withdraw_insert.sql
index fd00754ad..d36181a6b 100644
--- a/src/exchangedb/exchange_do_batch_withdraw_insert.sql
+++ b/src/exchangedb/exchange_do_batch_withdraw_insert.sql
@@ -64,8 +64,7 @@ INSERT INTO exchange.reserves_out
,reserve_uuid
,reserve_sig
,execution_date
- ,amount_with_fee_val
- ,amount_with_fee_frac)
+ ,amount_with_fee)
VALUES
(h_coin_envelope
,denom_serial
@@ -73,8 +72,7 @@ VALUES
,ruuid
,reserve_sig
,now
- ,amount.val
- ,amount.frac)
+ ,amount)
ON CONFLICT DO NOTHING;
IF NOT FOUND
@@ -120,4 +118,3 @@ END $$;
COMMENT ON FUNCTION exchange_do_batch_withdraw_insert(BYTEA, taler_amount, BYTEA, INT8, BYTEA, BYTEA, BYTEA, INT8)
IS 'Stores information about a planchet for a batch withdraw operation. Checks if the planchet already exists, and in that case indicates a conflict';
-
diff --git a/src/exchangedb/exchange_do_deposit.sql b/src/exchangedb/exchange_do_deposit.sql
index 6e522b354..4e8374b89 100644
--- a/src/exchangedb/exchange_do_deposit.sql
+++ b/src/exchangedb/exchange_do_deposit.sql
@@ -14,8 +14,7 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
CREATE OR REPLACE FUNCTION exchange_do_deposit(
- IN in_amount_with_fee_val INT8,
- IN in_amount_with_fee_frac INT4,
+ IN in_amount_with_fee taler_amount,
IN in_h_contract_terms BYTEA,
IN in_wire_salt BYTEA,
IN in_wallet_timestamp INT8,
@@ -66,8 +65,7 @@ INSERT INTO exchange.deposits
(shard
,coin_pub
,known_coin_id
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
,wallet_timestamp
,exchange_timestamp
,refund_deadline
@@ -84,8 +82,7 @@ INSERT INTO exchange.deposits
(in_shard
,in_coin_pub
,in_known_coin_id
- ,in_amount_with_fee_val
- ,in_amount_with_fee_frac
+ ,in_amount_with_fee
,in_wallet_timestamp
,in_exchange_timestamp
,in_refund_deadline
@@ -138,24 +135,24 @@ END IF;
out_exchange_timestamp=in_exchange_timestamp;
-- Check and update balance of the coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac-in_amount_with_fee_frac
+ remaining.frac=(kc.remaining).frac-in_amount_with_fee.frac
+ CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val-in_amount_with_fee_val
+ remaining.val=(kc.remaining).val-in_amount_with_fee.val
- CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 1
ELSE 0
END
WHERE coin_pub=in_coin_pub
- AND ( (remaining_val > in_amount_with_fee_val) OR
- ( (remaining_frac >= in_amount_with_fee_frac) AND
- (remaining_val >= in_amount_with_fee_val) ) );
+ AND ( ((kc.remaining).val > in_amount_with_fee.val) OR
+ ( ((kc.remaining).frac >= in_amount_with_fee.frac) AND
+ ((kc.remaining).val >= in_amount_with_fee.val) ) );
IF NOT FOUND
THEN
diff --git a/src/exchangedb/exchange_do_expire_purse.sql b/src/exchangedb/exchange_do_expire_purse.sql
index 82756abc5..2d9f7e095 100644
--- a/src/exchangedb/exchange_do_expire_purse.sql
+++ b/src/exchangedb/exchange_do_expire_purse.sql
@@ -71,21 +71,20 @@ END IF;
-- restore balance to each coin deposited into the purse
FOR my_deposit IN
SELECT coin_pub
- ,amount_with_fee_val
- ,amount_with_fee_frac
- FROM exchange.purse_deposits
+ ,amount_with_fee
+ FROM purse_deposits
WHERE purse_pub = my_purse_pub
LOOP
- UPDATE exchange.known_coins SET
- remaining_frac=remaining_frac+my_deposit.amount_with_fee_frac
+ UPDATE known_coins kc SET
+ remaining.frac=(kc.remaining).frac+(my_deposit.amount_with_fee).frac
- CASE
- WHEN remaining_frac+my_deposit.amount_with_fee_frac >= 100000000
+ WHEN (kc.remaining).frac+(my_deposit.amount_with_fee).frac >= 100000000
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val+my_deposit.amount_with_fee_val
+ remaining.val=(kc.remaining).val+(my_deposit.amount_with_fee).val
+ CASE
- WHEN remaining_frac+my_deposit.amount_with_fee_frac >= 100000000
+ WHEN (kc.remaining).frac+(my_deposit.amount_with_fee).frac >= 100000000
THEN 1
ELSE 0
END
@@ -95,5 +94,3 @@ END $$;
COMMENT ON FUNCTION exchange_do_expire_purse(INT8,INT8,INT8)
IS 'Finds an expired purse in the given time range and refunds the coins (if any).';
-
-
diff --git a/src/exchangedb/exchange_do_history_request.sql b/src/exchangedb/exchange_do_history_request.sql
index 5cd15bc62..726c853fb 100644
--- a/src/exchangedb/exchange_do_history_request.sql
+++ b/src/exchangedb/exchange_do_history_request.sql
@@ -35,14 +35,12 @@ BEGIN
(reserve_pub
,request_timestamp
,reserve_sig
- ,history_fee_val
- ,history_fee_frac)
+ ,history_fee)
VALUES
(in_reserve_pub
,in_request_timestamp
,in_reserve_sig
- ,in_history_fee.val
- ,in_history_fee.frac)
+ ,in_history_fee)
ON CONFLICT DO NOTHING;
IF NOT FOUND
@@ -101,4 +99,3 @@ BEGIN
out_balance_ok=TRUE;
END $$;
-
diff --git a/src/exchangedb/exchange_do_insert_aml_decision.sql b/src/exchangedb/exchange_do_insert_aml_decision.sql
index f257675a8..d4f752d19 100644
--- a/src/exchangedb/exchange_do_insert_aml_decision.sql
+++ b/src/exchangedb/exchange_do_insert_aml_decision.sql
@@ -16,8 +16,7 @@
CREATE OR REPLACE FUNCTION exchange_do_insert_aml_decision(
IN in_h_payto BYTEA,
- IN in_new_threshold_val INT8,
- IN in_new_threshold_frac INT4,
+ IN in_new_threshold taler_amount,
IN in_new_status INT4,
IN in_decision_time INT8,
IN in_justification VARCHAR,
@@ -59,8 +58,7 @@ THEN
RETURN;
END IF;
UPDATE exchange.aml_status
- SET threshold_val=in_new_threshold_val
- ,threshold_frac=in_new_threshold_frac
+ SET threshold=in_new_threshold
,status=in_new_status
,kyc_requirement=in_requirement_row
WHERE h_payto=in_h_payto;
@@ -69,14 +67,12 @@ ELSE
out_last_date = 0;
INSERT INTO exchange.aml_status
(h_payto
- ,threshold_val
- ,threshold_frac
+ ,threshold
,status
,kyc_requirement)
VALUES
(in_h_payto
- ,in_new_threshold_val
- ,in_new_threshold_frac
+ ,in_new_threshold
,in_new_status
,in_requirement_row);
END IF;
@@ -84,8 +80,7 @@ END IF;
INSERT INTO exchange.aml_history
(h_payto
- ,new_threshold_val
- ,new_threshold_frac
+ ,new_threshold
,new_status
,decision_time
,justification
@@ -95,8 +90,7 @@ INSERT INTO exchange.aml_history
,decider_sig
) VALUES
(in_h_payto
- ,in_new_threshold_val
- ,in_new_threshold_frac
+ ,in_new_threshold
,in_new_status
,in_decision_time
,in_justification
@@ -125,5 +119,5 @@ END IF;
END $$;
-COMMENT ON FUNCTION exchange_do_insert_aml_decision(BYTEA, INT8, INT4, INT4, INT8, VARCHAR, BYTEA, BYTEA, VARCHAR, VARCHAR, INT8)
+COMMENT ON FUNCTION exchange_do_insert_aml_decision(BYTEA, taler_amount, INT4, INT8, VARCHAR, BYTEA, BYTEA, VARCHAR, VARCHAR, INT8)
IS 'Checks whether the AML officer is eligible to make AML decisions and if so inserts the decision into the table';
diff --git a/src/exchangedb/exchange_do_insert_or_update_policy_details.sql b/src/exchangedb/exchange_do_insert_or_update_policy_details.sql
index c7fe64d14..1075195a6 100644
--- a/src/exchangedb/exchange_do_insert_or_update_policy_details.sql
+++ b/src/exchangedb/exchange_do_insert_or_update_policy_details.sql
@@ -18,52 +18,40 @@ CREATE OR REPLACE FUNCTION exchange_do_insert_or_update_policy_details(
IN in_policy_hash_code BYTEA,
IN in_policy_json VARCHAR,
IN in_deadline INT8,
- IN in_commitment_val INT8,
- IN in_commitment_frac INT4,
- IN in_accumulated_total_val INT8,
- IN in_accumulated_total_frac INT4,
- IN in_fee_val INT8,
- IN in_fee_frac INT4,
- IN in_transferable_val INT8,
- IN in_transferable_frac INT4,
+ IN in_commitment taler_amount,
+ IN in_accumulated_total taler_amount,
+ IN in_fee taler_amount,
+ IN in_transferable taler_amount,
IN in_fulfillment_state SMALLINT,
OUT out_policy_details_serial_id INT8,
- OUT out_accumulated_total_val INT8,
- OUT out_accumulated_total_frac INT4,
+ OUT out_accumulated_total taler_amount,
OUT out_fulfillment_state SMALLINT)
LANGUAGE plpgsql
AS $$
DECLARE
- cur_commitment_val INT8;
- cur_commitment_frac INT4;
- cur_accumulated_total_val INT8;
- cur_accumulated_total_frac INT4;
+ cur_commitment taler_amount;
+DECLARE
+ cur_accumulated_total taler_amount;
+DECLARE
+ rval RECORD;
BEGIN
-- First, try to create a new entry.
INSERT INTO policy_details
(policy_hash_code,
policy_json,
deadline,
- commitment_val,
- commitment_frac,
- accumulated_total_val,
- accumulated_total_frac,
- fee_val,
- fee_frac,
- transferable_val,
- transferable_frac,
+ commitment,
+ accumulated_total,
+ fee,
+ transferable,
fulfillment_state)
VALUES (in_policy_hash_code,
in_policy_json,
in_deadline,
- in_commitment_val,
- in_commitment_frac,
- in_accumulated_total_val,
- in_accumulated_total_frac,
- in_fee_val,
- in_fee_frac,
- in_transferable_val,
- in_transferable_frac,
+ in_commitment,
+ in_accumulated_total,
+ in_fee,
+ in_transferable,
in_fulfillment_state)
ON CONFLICT (policy_hash_code) DO NOTHING
RETURNING policy_details_serial_id INTO out_policy_details_serial_id;
@@ -71,34 +59,33 @@ BEGIN
-- If the insert was successful, return
-- We assume that the fullfilment_state was correct in first place.
IF FOUND THEN
- out_accumulated_total_val = in_accumulated_total_val;
- out_accumulated_total_frac = in_accumulated_total_frac;
- out_fulfillment_state = in_fulfillment_state;
+ out_accumulated_total = in_accumulated_total;
+ out_fulfillment_state = in_fulfillment_state;
RETURN;
END IF;
-- We had a conflict, grab the parts we need to update.
- SELECT policy_details_serial_id,
- commitment_val,
- commitment_frac,
- accumulated_total_val,
- accumulated_total_frac
- INTO out_policy_details_serial_id,
- cur_commitment_val,
- cur_commitment_frac,
- cur_accumulated_total_val,
- cur_accumulated_total_frac
+ SELECT policy_details_serial_id
+ ,commitment
+ ,accumulated_total
+ INTO rval
FROM policy_details
WHERE policy_hash_code = in_policy_hash_code;
+ -- We use rval as workaround as we cannot select
+ -- directly into the amount due to Postgres limitations.
+ out_policy_details_serial_id := rval.policy_details_serial_id;
+ cur_commitment := rval.commitment;
+ cur_accumulated_total := rval.accumulated_total;
+
-- calculate the new values (overflows throws exception)
- out_accumulated_total_val = cur_accumulated_total_val + in_accumulated_total_val;
- out_accumulated_total_frac = cur_accumulated_total_frac + in_accumulated_total_frac;
+ out_accumulated_total.val = cur_accumulated_total.val + in_accumulated_total.val;
+ out_accumulated_total.frac = cur_accumulated_total.frac + in_accumulated_total.frac;
-- normalize
- out_accumulated_total_val = out_accumulated_total_val + out_accumulated_total_frac / 100000000;
- out_accumulated_total_frac = out_accumulated_total_frac % 100000000;
+ out_accumulated_total.val = out_accumulated_total.val + out_accumulated_total.frac / 100000000;
+ out_accumulated_total.frac = out_accumulated_total.frac % 100000000;
- IF (out_accumulated_total_val > (1 << 52))
+ IF (out_accumulated_total.val > (1 << 52))
THEN
RAISE EXCEPTION 'accumulation overflow';
END IF;
@@ -109,9 +96,9 @@ BEGIN
-- FIXME: What to do in case of Failure or other state?
IF (out_fullfillment_state = 1) -- INSUFFICIENT
THEN
- IF (out_accumulated_total_val >= cur_commitment_val OR
- (out_accumulated_total_val = cur_commitment_val AND
- out_accumulated_total_frac >= cur_commitment_frac))
+ IF (out_accumulated_total.val >= cur_commitment.val OR
+ (out_accumulated_total.val = cur_commitment.val AND
+ out_accumulated_total.frac >= cur_commitment.frac))
THEN
out_fulfillment_state = 2; -- READY
END IF;
@@ -120,8 +107,7 @@ BEGIN
-- Now, update the record
UPDATE exchange.policy_details
SET
- accumulated_val = out_accumulated_total_val,
- accumulated_frac = out_accumulated_total_frac,
+ accumulated = out_accumulated_total,
fulfillment_state = out_fulfillment_state
WHERE
policy_details_serial_id = out_policy_details_serial_id;
diff --git a/src/exchangedb/exchange_do_melt.sql b/src/exchangedb/exchange_do_melt.sql
index c0290b561..7451577d8 100644
--- a/src/exchangedb/exchange_do_melt.sql
+++ b/src/exchangedb/exchange_do_melt.sql
@@ -19,8 +19,7 @@
CREATE OR REPLACE FUNCTION exchange_do_melt(
IN in_cs_rms BYTEA,
- IN in_amount_with_fee_val INT8,
- IN in_amount_with_fee_frac INT4,
+ IN in_amount_with_fee taler_amount,
IN in_rc BYTEA,
IN in_old_coin_pub BYTEA,
IN in_old_coin_sig BYTEA,
@@ -45,16 +44,14 @@ INSERT INTO exchange.refresh_commitments
(rc
,old_coin_pub
,old_coin_sig
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
,noreveal_index
)
VALUES
(in_rc
,in_old_coin_pub
,in_old_coin_sig
- ,in_amount_with_fee_val
- ,in_amount_with_fee_frac
+ ,in_amount_with_fee
,in_noreveal_index)
ON CONFLICT DO NOTHING;
@@ -104,24 +101,24 @@ out_zombie_bad=FALSE; -- zombie is OK
-- Check and update balance of the coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac-in_amount_with_fee_frac
+ remaining.frac=(kc.remaining).frac-in_amount_with_fee.frac
+ CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val-in_amount_with_fee_val
+ remaining.val=(kc.remaining).val-in_amount_with_fee.val
- CASE
- WHEN remaining_frac < in_amount_with_fee_frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 1
ELSE 0
END
WHERE coin_pub=in_old_coin_pub
- AND ( (remaining_val > in_amount_with_fee_val) OR
- ( (remaining_frac >= in_amount_with_fee_frac) AND
- (remaining_val >= in_amount_with_fee_val) ) );
+ AND ( ((kc.remaining).val > in_amount_with_fee.val) OR
+ ( ((kc.remaining).frac >= in_amount_with_fee.frac) AND
+ ((kc.remaining).val >= in_amount_with_fee.val) ) );
IF NOT FOUND
THEN
@@ -183,4 +180,3 @@ out_balance_ok=TRUE;
out_noreveal_index=in_noreveal_index;
END $$;
-
diff --git a/src/exchangedb/exchange_do_purse_delete.sql b/src/exchangedb/exchange_do_purse_delete.sql
index 096475b43..5668f7bec 100644
--- a/src/exchangedb/exchange_do_purse_delete.sql
+++ b/src/exchangedb/exchange_do_purse_delete.sql
@@ -91,21 +91,20 @@ END IF;
-- restore balance to each coin deposited into the purse
FOR my_deposit IN
SELECT coin_pub
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
FROM exchange.purse_deposits
WHERE purse_pub = in_purse_pub
LOOP
- UPDATE exchange.known_coins SET
- remaining_frac=remaining_frac+my_deposit.amount_with_fee_frac
+ UPDATE known_coins kc SET
+ remaining.frac=(kc.remaining).frac+(my_deposit.amount_with_fee).frac
- CASE
- WHEN remaining_frac+my_deposit.amount_with_fee_frac >= 100000000
+ WHEN (kc.remaining).frac+(my_deposit.amount_with_fee).frac >= 100000000
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val+my_deposit.amount_with_fee_val
+ remaining.val=(kc.remaining).val+(my_deposit.amount_with_fee).val
+ CASE
- WHEN remaining_frac+my_deposit.amount_with_fee_frac >= 100000000
+ WHEN (kc.remaining).frac+(my_deposit.amount_with_fee).frac >= 100000000
THEN 1
ELSE 0
END
diff --git a/src/exchangedb/exchange_do_purse_deposit.sql b/src/exchangedb/exchange_do_purse_deposit.sql
index 45bdcdf68..0127ad23f 100644
--- a/src/exchangedb/exchange_do_purse_deposit.sql
+++ b/src/exchangedb/exchange_do_purse_deposit.sql
@@ -30,11 +30,18 @@ LANGUAGE plpgsql
AS $$
DECLARE
was_merged BOOLEAN;
+DECLARE
psi INT8; -- partner's serial ID (set if merged)
+DECLARE
my_amount taler_amount; -- total in purse
+DECLARE
was_paid BOOLEAN;
+DECLARE
my_in_reserve_quota BOOLEAN;
+DECLARE
my_reserve_pub BYTEA;
+DECLARE
+ rval RECORD;
BEGIN
-- Store the deposit request.
@@ -42,15 +49,13 @@ INSERT INTO exchange.purse_deposits
(partner_serial_id
,purse_pub
,coin_pub
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
,coin_sig)
VALUES
(in_partner_id
,in_purse_pub
,in_coin_pub
- ,in_amount_with_fee.val
- ,in_amount_with_fee.frac
+ ,in_amount_with_fee
,in_coin_sig)
ON CONFLICT DO NOTHING;
@@ -96,24 +101,24 @@ END IF;
-- Debit the coin
-- Check and update balance of the coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac-in_amount_with_fee.frac
+ remaining.frac=(kc.remaining).frac-in_amount_with_fee.frac
+ CASE
- WHEN remaining_frac < in_amount_with_fee.frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val-in_amount_with_fee.val
+ remaining.val=(kc.remaining).val-in_amount_with_fee.val
- CASE
- WHEN remaining_frac < in_amount_with_fee.frac
+ WHEN (kc.remaining).frac < in_amount_with_fee.frac
THEN 1
ELSE 0
END
WHERE coin_pub=in_coin_pub
- AND ( (remaining_val > in_amount_with_fee.val) OR
- ( (remaining_frac >= in_amount_with_fee.frac) AND
- (remaining_val >= in_amount_with_fee.val) ) );
+ AND ( ((kc.remaining).val > in_amount_with_fee.val) OR
+ ( ((kc.remaining).frac >= in_amount_with_fee.frac) AND
+ ((kc.remaining).val >= in_amount_with_fee.val) ) );
IF NOT FOUND
THEN
@@ -126,17 +131,17 @@ END IF;
-- Credit the purse.
-UPDATE purse_requests
+UPDATE purse_requests pr
SET
- balance_frac=balance_frac+in_amount_without_fee.frac
+ balance.frac=(pr.balance).frac+in_amount_without_fee.frac
- CASE
- WHEN balance_frac+in_amount_without_fee.frac >= 100000000
+ WHEN (pr.balance).frac+in_amount_without_fee.frac >= 100000000
THEN 100000000
ELSE 0
END,
- balance_val=balance_val+in_amount_without_fee.val
+ balance.val=(pr.balance).val+in_amount_without_fee.val
+ CASE
- WHEN balance_frac+in_amount_without_fee.frac >= 100000000
+ WHEN (pr.balance).frac+in_amount_without_fee.frac >= 100000000
THEN 1
ELSE 0
END
@@ -161,24 +166,26 @@ THEN
END IF;
SELECT
- amount_with_fee_val
- ,amount_with_fee_frac
+ amount_with_fee
,in_reserve_quota
INTO
- my_amount.val
- ,my_amount.frac
- ,my_in_reserve_quota
- FROM exchange.purse_requests
+ rval
+ FROM exchange.purse_requests preq
WHERE (purse_pub=in_purse_pub)
- AND ( ( ( (amount_with_fee_val <= balance_val)
- AND (amount_with_fee_frac <= balance_frac) )
- OR (amount_with_fee_val < balance_val) ) );
+ AND ( ( ( ((preq.amount_with_fee).val <= (preq.balance).val)
+ AND ((preq.amount_with_fee).frac <= (preq.balance).frac) )
+ OR ((preq.amount_with_fee).val < (preq.balance).val) ) );
IF NOT FOUND
THEN
out_late=FALSE;
RETURN;
END IF;
+-- We use rval as workaround as we cannot select
+-- directly into the amount due to Postgres limitations.
+my_amount := rval.amount_with_fee;
+my_in_reserve_quota := rval.in_reserve_quota;
+
-- Remember how this purse was finished.
INSERT INTO purse_decision
(purse_pub
diff --git a/src/exchangedb/exchange_do_purse_merge.sql b/src/exchangedb/exchange_do_purse_merge.sql
index 9780c016c..b911a5a2d 100644
--- a/src/exchangedb/exchange_do_purse_merge.sql
+++ b/src/exchangedb/exchange_do_purse_merge.sql
@@ -30,10 +30,17 @@ LANGUAGE plpgsql
AS $$
DECLARE
my_amount taler_amount;
+DECLARE
my_purse_fee taler_amount;
+DECLARE
my_partner_serial_id INT8;
+DECLARE
my_in_reserve_quota BOOLEAN;
+DECLARE
+ rval RECORD;
+DECLARE
reserve RECORD;
+DECLARE
balance taler_amount;
BEGIN
@@ -60,29 +67,29 @@ END IF;
out_no_partner=FALSE;
-
-- Check purse is 'full'.
-SELECT amount_with_fee_val
- ,amount_with_fee_frac
- ,purse_fee_val
- ,purse_fee_frac
+SELECT amount_with_fee
+ ,purse_fee
,in_reserve_quota
- INTO my_amount.val
- ,my_amount.frac
- ,my_purse_fee.val
- ,my_purse_fee.frac
- ,my_in_reserve_quota
- FROM exchange.purse_requests
+ INTO rval
+ FROM purse_requests pr
WHERE purse_pub=in_purse_pub
- AND balance_val >= amount_with_fee_val
- AND ( (balance_frac >= amount_with_fee_frac) OR
- (balance_val > amount_with_fee_val) );
+ AND (pr.balance).val >= (pr.amount_with_fee).val
+ AND ( (pr.balance).frac >= (pr.amount_with_fee).frac OR
+ (pr.balance).val > (pr.amount_with_fee).val );
IF NOT FOUND
THEN
out_no_balance=TRUE;
out_conflict=FALSE;
RETURN;
END IF;
+
+-- We use rval as workaround as we cannot select
+-- directly into the amount due to Postgres limitations.
+my_amount := rval.amount_with_fee;
+my_purse_fee := rval.purse_fee;
+my_in_reserve_quota := rval.in_reserve_quota;
+
out_no_balance=FALSE;
-- Store purse merge signature, checks for purse_pub uniqueness
@@ -228,4 +235,3 @@ END $$;
COMMENT ON FUNCTION exchange_do_purse_merge(BYTEA, BYTEA, INT8, BYTEA, VARCHAR, BYTEA, BYTEA, INT8)
IS 'Checks that the partner exists, the purse has not been merged with a different reserve and that the purse is full. If so, persists the merge data and either merges the purse with the reserve or marks it as ready for the taler-exchange-router. Caller MUST abort the transaction on failures so as to not persist data by accident.';
-
diff --git a/src/exchangedb/exchange_do_recoup_by_reserve.sql b/src/exchangedb/exchange_do_recoup_by_reserve.sql
index 6a7ea725e..a4a191a4a 100644
--- a/src/exchangedb/exchange_do_recoup_by_reserve.sql
+++ b/src/exchangedb/exchange_do_recoup_by_reserve.sql
@@ -25,8 +25,7 @@ RETURNS TABLE
coin_pub BYTEA,
coin_sig BYTEA,
coin_blind BYTEA,
- amount_val BIGINT,
- amount_frac INTEGER,
+ amount taler_amount,
recoup_timestamp BIGINT
)
LANGUAGE plpgsql
@@ -60,16 +59,15 @@ BEGIN
rc.coin_pub,
rc.coin_sig,
rc.coin_blind,
- rc.amount_val,
- rc.amount_frac,
+ rc.amount,
rc.recoup_timestamp
FROM (
- SELECT *
+ SELECT * --FIXME: bad code, we never use '*'!
FROM exchange.known_coins
WHERE known_coins.coin_pub = c_pub
) kc
JOIN (
- SELECT *
+ SELECT * --FIXME: bad code, we never use '*'!
FROM exchange.recoup
WHERE recoup.coin_pub = c_pub
) rc USING (coin_pub);
@@ -79,4 +77,3 @@ $$;
COMMENT ON FUNCTION exchange_do_recoup_by_reserve
IS 'Recoup by reserve as a function to make sure we hit only the needed partition and not all when joining as joins on distributed tables fetch ALL rows from the shards';
-
diff --git a/src/exchangedb/exchange_do_recoup_to_coin.sql b/src/exchangedb/exchange_do_recoup_to_coin.sql
index 5598ec20c..150b62db6 100644
--- a/src/exchangedb/exchange_do_recoup_to_coin.sql
+++ b/src/exchangedb/exchange_do_recoup_to_coin.sql
@@ -31,9 +31,9 @@ CREATE OR REPLACE FUNCTION exchange_do_recoup_to_coin(
LANGUAGE plpgsql
AS $$
DECLARE
- tmp_val INT8; -- amount recouped
+ rval RECORD;
DECLARE
- tmp_frac INT8; -- amount recouped
+ tmp taler_amount; -- amount recouped
BEGIN
-- Shards: UPDATE known_coins (by coin_pub)
@@ -41,17 +41,13 @@ BEGIN
-- UPDATE known_coins (by coin_pub)
-- INSERT recoup_refresh (by coin_pub)
-
out_internal_failure=FALSE;
-
-- Check remaining balance of the coin.
SELECT
- remaining_frac
- ,remaining_val
+ remaining
INTO
- tmp_frac
- ,tmp_val
+ rval
FROM exchange.known_coins
WHERE coin_pub=in_coin_pub;
@@ -62,7 +58,9 @@ THEN
RETURN;
END IF;
-IF tmp_val + tmp_frac = 0
+tmp := rval.remaining;
+
+IF tmp.val + tmp.frac = 0
THEN
-- Check for idempotency
SELECT
@@ -78,29 +76,27 @@ END IF;
-- Update balance of the coin.
UPDATE known_coins
SET
- remaining_frac=0
- ,remaining_val=0
+ remaining.val = 0
+ ,remaining.frac = 0
WHERE coin_pub=in_coin_pub;
-
-- Credit the old coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac+tmp_frac
+ remaining.frac=(kc.remaining).frac+tmp.frac
- CASE
- WHEN remaining_frac+tmp_frac >= 100000000
+ WHEN (kc.remaining).frac+tmp.frac >= 100000000
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val+tmp_val
+ remaining.val=(kc.remaining).val+tmp.val
+ CASE
- WHEN remaining_frac+tmp_frac >= 100000000
+ WHEN (kc.remaining).frac+tmp.frac >= 100000000
THEN 1
ELSE 0
END
WHERE coin_pub=in_old_coin_pub;
-
IF NOT FOUND
THEN
RAISE NOTICE 'failed to increase old coin balance from recoup';
@@ -115,8 +111,7 @@ INSERT INTO exchange.recoup_refresh
,known_coin_id
,coin_sig
,coin_blind
- ,amount_val
- ,amount_frac
+ ,amount
,recoup_timestamp
,rrc_serial
)
@@ -125,8 +120,7 @@ VALUES
,in_known_coin_id
,in_coin_sig
,in_coin_blind
- ,tmp_val
- ,tmp_frac
+ ,tmp
,in_recoup_timestamp
,in_rrc_serial);
@@ -139,4 +133,3 @@ END $$;
-- COMMENT ON FUNCTION exchange_do_recoup_to_coin(INT8, INT4, BYTEA, BOOLEAN, BOOLEAN)
-- IS 'Executes a recoup-refresh of a coin that was obtained from a refresh-reveal process';
-
diff --git a/src/exchangedb/exchange_do_recoup_to_reserve.sql b/src/exchangedb/exchange_do_recoup_to_reserve.sql
index 71c1d51b9..10ae063bd 100644
--- a/src/exchangedb/exchange_do_recoup_to_reserve.sql
+++ b/src/exchangedb/exchange_do_recoup_to_reserve.sql
@@ -35,6 +35,7 @@ DECLARE
balance taler_amount; -- current balance of the reserve
new_balance taler_amount; -- new balance of the reserve
reserve RECORD;
+ rval RECORD;
BEGIN
-- Shards: SELECT known_coins (by coin_pub)
-- SELECT recoup (by coin_pub)
@@ -47,11 +48,9 @@ out_internal_failure=FALSE;
-- Check remaining balance of the coin.
SELECT
- remaining_frac
- ,remaining_val
+ remaining
INTO
- tmp.frac
- ,tmp.val
+ rval
FROM exchange.known_coins
WHERE coin_pub=in_coin_pub;
@@ -62,6 +61,8 @@ THEN
RETURN;
END IF;
+tmp := rval.remaining;
+
IF tmp.val + tmp.frac = 0
THEN
-- Check for idempotency
@@ -80,12 +81,12 @@ END IF;
-- Update balance of the coin.
UPDATE known_coins
SET
- remaining_frac=0
- ,remaining_val=0
+ remaining.val = 0
+ ,remaining.frac = 0
WHERE coin_pub=in_coin_pub;
-- Get current balance
-SELECT *
+SELECT current_balance
INTO reserve
FROM reserves
WHERE reserve_pub=in_reserve_pub;
@@ -127,8 +128,7 @@ INSERT INTO exchange.recoup
(coin_pub
,coin_sig
,coin_blind
- ,amount_val
- ,amount_frac
+ ,amount
,recoup_timestamp
,reserve_out_serial_id
)
@@ -136,8 +136,7 @@ VALUES
(in_coin_pub
,in_coin_sig
,in_coin_blind
- ,tmp.val
- ,tmp.frac
+ ,tmp
,in_recoup_timestamp
,in_reserve_out_serial_id);
@@ -149,6 +148,3 @@ END $$;
-- COMMENT ON FUNCTION exchange_do_recoup_to_reserve(INT8, INT4, BYTEA, BOOLEAN, BOOLEAN)
-- IS 'Executes a recoup of a coin that was withdrawn from a reserve';
-
-
-
diff --git a/src/exchangedb/exchange_do_refund.sql b/src/exchangedb/exchange_do_refund.sql
index ceaabfe16..7cb50e9fd 100644
--- a/src/exchangedb/exchange_do_refund.sql
+++ b/src/exchangedb/exchange_do_refund.sql
@@ -15,12 +15,9 @@
--
CREATE OR REPLACE FUNCTION exchange_do_refund(
- IN in_amount_with_fee_val INT8,
- IN in_amount_with_fee_frac INT4,
- IN in_amount_val INT8,
- IN in_amount_frac INT4,
- IN in_deposit_fee_val INT8,
- IN in_deposit_fee_frac INT4,
+ IN in_amount_with_fee taler_amount,
+ IN in_amount taler_amount,
+ IN in_deposit_fee taler_amount,
IN in_h_contract_terms BYTEA,
IN in_rtransaction_id INT8,
IN in_deposit_shard INT8,
@@ -39,11 +36,11 @@ DECLARE
DECLARE
tmp_val INT8; -- total amount refunded
DECLARE
- tmp_frac INT8; -- total amount refunded
+ tmp_frac INT8; -- total amount refunded, large fraction to deal with overflows!
DECLARE
- deposit_val INT8; -- amount that was originally deposited
+ tmp taler_amount; -- total amount refunded, normalized
DECLARE
- deposit_frac INT8; -- amount that was originally deposited
+ deposit taler_amount; -- amount that was originally deposited
BEGIN
-- Shards: SELECT deposits (coin_pub, shard, h_contract_terms, merchant_pub)
-- INSERT refunds (by coin_pub, rtransaction_id) ON CONFLICT DO NOTHING
@@ -52,15 +49,15 @@ BEGIN
SELECT
deposit_serial_id
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,(dep.amount_with_fee).val
+ ,(dep.amount_with_fee).frac
,done
INTO
dsi
- ,deposit_val
- ,deposit_frac
+ ,deposit.val
+ ,deposit.frac
,out_gone
-FROM exchange.deposits
+FROM exchange.deposits dep
WHERE coin_pub=in_coin_pub
AND shard=in_deposit_shard
AND merchant_pub=in_merchant_pub
@@ -81,16 +78,15 @@ INSERT INTO exchange.refunds
,coin_pub
,merchant_sig
,rtransaction_id
- ,amount_with_fee_val
- ,amount_with_fee_frac
+ ,amount_with_fee
)
VALUES
(dsi
,in_coin_pub
,in_merchant_sig
,in_rtransaction_id
- ,in_amount_with_fee_val
- ,in_amount_with_fee_frac)
+ ,in_amount_with_fee
+ )
ON CONFLICT DO NOTHING;
IF NOT FOUND
@@ -105,8 +101,7 @@ THEN
WHERE coin_pub=in_coin_pub
AND deposit_serial_id=dsi
AND rtransaction_id=in_rtransaction_id
- AND amount_with_fee_val=in_amount_with_fee_val
- AND amount_with_fee_frac=in_amount_with_fee_frac;
+ AND amount_with_fee=in_amount_with_fee;
IF NOT FOUND
THEN
@@ -136,12 +131,12 @@ END IF;
-- Check refund balance invariant.
SELECT
- SUM(amount_with_fee_val) -- overflow here is not plausible
- ,SUM(CAST(amount_with_fee_frac AS INT8)) -- compute using 64 bits
+ SUM((refunds.amount_with_fee).val) -- overflow here is not plausible
+ ,SUM(CAST((refunds.amount_with_fee).frac AS INT8)) -- compute using 64 bits
INTO
tmp_val
,tmp_frac
- FROM exchange.refunds
+ FROM exchange.refunds refunds
WHERE coin_pub=in_coin_pub
AND deposit_serial_id=dsi;
IF tmp_val IS NULL
@@ -154,15 +149,15 @@ THEN
END IF;
-- Normalize result before continuing
-tmp_val = tmp_val + tmp_frac / 100000000;
-tmp_frac = tmp_frac % 100000000;
+tmp.val = tmp_val + tmp_frac / 100000000;
+tmp.frac = tmp_frac % 100000000;
-- Actually check if the deposits are sufficient for the refund. Verbosely. ;-)
-IF (tmp_val < deposit_val)
+IF (tmp.val < deposit.val)
THEN
out_refund_ok=TRUE;
ELSE
- IF (tmp_val = deposit_val) AND (tmp_frac <= deposit_frac)
+ IF (tmp.val = deposit.val) AND (tmp.frac <= deposit.frac)
THEN
out_refund_ok=TRUE;
ELSE
@@ -170,42 +165,39 @@ ELSE
END IF;
END IF;
-IF (tmp_val = deposit_val) AND (tmp_frac = deposit_frac)
+IF (tmp.val = deposit.val) AND (tmp.frac = deposit.frac)
THEN
-- Refunds have reached the full value of the original
-- deposit. Also refund the deposit fee.
- in_amount_frac = in_amount_frac + in_deposit_fee_frac;
- in_amount_val = in_amount_val + in_deposit_fee_val;
+ in_amount.frac = in_amount.frac + in_deposit_fee.frac;
+ in_amount.val = in_amount.val + in_deposit_fee.val;
-- Normalize result before continuing
- in_amount_val = in_amount_val + in_amount_frac / 100000000;
- in_amount_frac = in_amount_frac % 100000000;
+ in_amount.val = in_amount.val + in_amount.frac / 100000000;
+ in_amount.frac = in_amount.frac % 100000000;
END IF;
-- Update balance of the coin.
-UPDATE known_coins
+UPDATE known_coins kc
SET
- remaining_frac=remaining_frac+in_amount_frac
+ remaining.frac=(kc.remaining).frac+in_amount.frac
- CASE
- WHEN remaining_frac+in_amount_frac >= 100000000
+ WHEN (kc.remaining).frac+in_amount.frac >= 100000000
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val+in_amount_val
+ remaining.val=(kc.remaining).val+in_amount.val
+ CASE
- WHEN remaining_frac+in_amount_frac >= 100000000
+ WHEN (kc.remaining).frac+in_amount.frac >= 100000000
THEN 1
ELSE 0
END
WHERE coin_pub=in_coin_pub;
-
out_conflict=FALSE;
out_not_found=FALSE;
END $$;
--- COMMENT ON FUNCTION exchange_do_refund(INT8, INT4, BYTEA, BOOLEAN, BOOLEAN)
+-- COMMENT ON FUNCTION exchange_do_refund(taler_amount, BYTEA, BOOLEAN, BOOLEAN)
-- IS 'Executes a refund operation, checking that the corresponding deposit was sufficient to cover the refunded amount';
-
-
diff --git a/src/exchangedb/exchange_do_refund_by_coin.sql b/src/exchangedb/exchange_do_refund_by_coin.sql
index ee00e2b5a..d5f99e6a7 100644
--- a/src/exchangedb/exchange_do_refund_by_coin.sql
+++ b/src/exchangedb/exchange_do_refund_by_coin.sql
@@ -13,11 +13,7 @@
-- You should have received a copy of the GNU General Public License along with
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-/*DROP FUNCTION exchange_do_refund_by_coin(
- IN in_coin_pub BYTEA,
- IN in_merchant_pub BYTEA,
- IN in_h_contract BYTEA
-);*/
+
CREATE OR REPLACE FUNCTION exchange_do_refund_by_coin(
IN in_coin_pub BYTEA,
IN in_merchant_pub BYTEA,
@@ -30,8 +26,7 @@ DECLARE
curs CURSOR
FOR
SELECT
- amount_with_fee_val
- ,amount_with_fee_frac
+ amount_with_fee
,deposit_serial_id
FROM refunds
WHERE coin_pub=in_coin_pub;
@@ -44,8 +39,7 @@ LOOP
EXIT WHEN NOT FOUND;
RETURN QUERY
SELECT
- i.amount_with_fee_val
- ,i.amount_with_fee_frac
+ i.amount_with_fee
FROM deposits
WHERE
coin_pub=in_coin_pub
@@ -56,15 +50,14 @@ END LOOP;
CLOSE curs;
END $$;
-/*RETURNS TABLE(amount_with_fee_val INT8, amount_with_fee_frac INT4)
+/*RETURNS TABLE(amount_with_fee taler_amount)
LANGUAGE plpgsql
AS $$
DECLARE
curs CURSOR
FOR
SELECT
- r.amount_with_fee_val
- ,r.amount_with_fee_frac
+ r.amount_with_fee
,r.deposit_serial_id
FROM refunds r
WHERE r.coin_pub=in_coin_pub;
@@ -78,8 +71,7 @@ LOOP
THEN
RETURN QUERY
SELECT
- i.amount_with_fee_val
- ,i.amount_with_fee_frac
+ i.amount_with_fee
FROM deposits
WHERE
merchant_pub=in_merchant_pub
diff --git a/src/exchangedb/exchange_do_reserve_open_deposit.sql b/src/exchangedb/exchange_do_reserve_open_deposit.sql
index 725122702..aa6f86a9b 100644
--- a/src/exchangedb/exchange_do_reserve_open_deposit.sql
+++ b/src/exchangedb/exchange_do_reserve_open_deposit.sql
@@ -21,8 +21,7 @@ CREATE OR REPLACE FUNCTION exchange_do_reserve_open_deposit(
IN in_coin_sig BYTEA,
IN in_reserve_sig BYTEA,
IN in_reserve_pub BYTEA,
- IN in_coin_total_val INT8,
- IN in_coin_total_frac INT4,
+ IN in_coin_total taler_amount,
OUT out_insufficient_funds BOOLEAN)
LANGUAGE plpgsql
AS $$
@@ -33,16 +32,15 @@ INSERT INTO exchange.reserves_open_deposits
,reserve_pub
,coin_pub
,coin_sig
- ,contribution_val
- ,contribution_frac
+ ,contribution
)
VALUES
(in_reserve_sig
,in_reserve_pub
,in_coin_pub
,in_coin_sig
- ,in_coin_total_val
- ,in_coin_total_frac)
+ ,in_coin_total
+ )
ON CONFLICT DO NOTHING;
IF NOT FOUND
@@ -54,24 +52,24 @@ END IF;
-- Check and update balance of the coin.
-UPDATE exchange.known_coins
+UPDATE exchange.known_coins kc
SET
- remaining_frac=remaining_frac-in_coin_total_frac
+ remaining.frac=(kc.remaining).frac-in_coin_total.frac
+ CASE
- WHEN remaining_frac < in_coin_total_frac
+ WHEN (kc.remaining).frac < in_coin_total.frac
THEN 100000000
ELSE 0
END,
- remaining_val=remaining_val-in_coin_total_val
+ remaining.val=(kc.remaining).val-in_coin_total.val
- CASE
- WHEN remaining_frac < in_coin_total_frac
+ WHEN (kc.remaining).frac < in_coin_total.frac
THEN 1
ELSE 0
END
WHERE coin_pub=in_coin_pub
- AND ( (remaining_val > in_coin_total_val) OR
- ( (remaining_frac >= in_coin_total_frac) AND
- (remaining_val >= in_coin_total_val) ) );
+ AND ( ((kc.remaining).val > in_coin_total.val) OR
+ ( ((kc.remaining).frac >= in_coin_total.frac) AND
+ ((kc.remaining).val >= in_coin_total.val) ) );
IF NOT FOUND
THEN
@@ -84,4 +82,3 @@ END IF;
out_insufficient_funds=FALSE;
END $$;
-
diff --git a/src/exchangedb/exchange_do_reserves_in_insert.sql b/src/exchangedb/exchange_do_reserves_in_insert.sql
index fcf8ef4c4..b5876ba32 100644
--- a/src/exchangedb/exchange_do_reserves_in_insert.sql
+++ b/src/exchangedb/exchange_do_reserves_in_insert.sql
@@ -56,16 +56,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date)
VALUES
(in_reserve_pub
,in_wire_ref
- ,in_credit.val
- ,in_credit.frac
+ ,in_credit
,in_exchange_account_name
,in_wire_source_h_payto
,in_execution_date)
@@ -181,16 +179,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date)
VALUES
(in0_reserve_pub
,in0_wire_ref
- ,in0_credit.val
- ,in0_credit.frac
+ ,in0_credit
,in0_exchange_account_name
,in0_wire_source_h_payto
,in0_execution_date),
@@ -394,16 +390,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date)
VALUES
(in0_reserve_pub
,in0_wire_ref
- ,in0_credit.val
- ,in0_credit.frac
+ ,in0_credit
,in0_exchange_account_name
,in0_wire_source_h_payto
,in0_execution_date),
@@ -750,16 +744,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date)
VALUES
(in0_reserve_pub
,in0_wire_ref
- ,in0_credit.val
- ,in0_credit.frac
+ ,in0_credit
,in0_exchange_account_name
,in0_wire_source_h_payto
,in0_execution_date),
@@ -927,8 +919,7 @@ CREATE OR REPLACE FUNCTION exchange_do_array_reserves_insert(
IN in_reserve_expiration INT8,
IN ina_reserve_pub BYTEA[],
IN ina_wire_ref INT8[],
- IN ina_credit_val INT8[],
- IN ina_credit_frac INT4[],
+ IN ina_credit taler_amount[],
IN ina_exchange_account_name VARCHAR[],
IN ina_execution_date INT8[],
IN ina_wire_source_h_payto BYTEA[],
@@ -960,8 +951,7 @@ BEGIN
SELECT
reserve_pub
,wire_ref
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_name
,execution_date
,wire_source_h_payto
@@ -970,8 +960,7 @@ BEGIN
FROM
UNNEST (ina_reserve_pub) AS reserve_pub
,UNNEST (ina_wire_ref) AS wire_ref
- ,UNNEST (ina_credit_val) AS credit_val
- ,UNNEST (ina_credit_frac) AS credit_frac
+ ,UNNEST (ina_credit) AS credit
,UNNEST (ina_exchange_account_name) AS exchange_account_name
,UNNEST (ina_execution_date) AS execution_date
,UNNEST (ina_wire_source_h_payto) AS wire_source_h_payto
@@ -979,14 +968,12 @@ BEGIN
LOOP
INSERT INTO reserves
(reserve_pub
- ,current_balance_val
- ,current_balance_frac
+ ,current_balance
,expiration_date
,gc_date
) VALUES (
i.reserve_pub
- ,i.credit_val
- ,i.credit_frac
+ ,i.credit
,in_reserve_expiration
,in_gc_date
)
@@ -998,16 +985,14 @@ BEGIN
INSERT INTO reserves_in
(reserve_pub
,wire_reference
- ,credit_val
- ,credit_frac
+ ,credit
,exchange_account_section
,wire_source_h_payto
,execution_date
) VALUES (
i.reserve_pub
,i.wire_reference
- ,i.credit_val
- ,i.credit_frac
+ ,i.credit
,i.exchange_account_section
,i.wire_source_h_payto
,i.execution_date
diff --git a/src/exchangedb/exchange_do_withdraw.sql b/src/exchangedb/exchange_do_withdraw.sql
index 60a63e674..c25267b73 100644
--- a/src/exchangedb/exchange_do_withdraw.sql
+++ b/src/exchangedb/exchange_do_withdraw.sql
@@ -114,8 +114,7 @@ INSERT INTO exchange.reserves_out
,reserve_uuid
,reserve_sig
,execution_date
- ,amount_with_fee_val
- ,amount_with_fee_frac)
+ ,amount_with_fee)
VALUES
(h_coin_envelope
,denom_serial
@@ -123,8 +122,7 @@ VALUES
,ruuid
,reserve_sig
,now
- ,amount.val
- ,amount.frac)
+ ,amount)
ON CONFLICT DO NOTHING;
IF NOT FOUND
@@ -213,4 +211,3 @@ END $$;
COMMENT ON FUNCTION exchange_do_withdraw(BYTEA, taler_amount, BYTEA, BYTEA, BYTEA, BYTEA, BYTEA, INT8, INT8, BOOLEAN)
IS 'Checks whether the reserve has sufficient balance for a withdraw operation (or the request is repeated and was previously approved) and if the age requirements are formally met. If so updates the database with the result';
-
diff --git a/src/exchangedb/pg_add_denomination_key.c b/src/exchangedb/pg_add_denomination_key.c
index fa6d92ed6..48d882c9a 100644
--- a/src/exchangedb/pg_add_denomination_key.c
+++ b/src/exchangedb/pg_add_denomination_key.c
@@ -43,11 +43,16 @@ TEH_PG_add_denomination_key (
GNUNET_PQ_query_param_timestamp (&meta->expire_withdraw),
GNUNET_PQ_query_param_timestamp (&meta->expire_deposit),
GNUNET_PQ_query_param_timestamp (&meta->expire_legal),
- TALER_PQ_query_param_amount (&meta->value),
- TALER_PQ_query_param_amount (&meta->fees.withdraw),
- TALER_PQ_query_param_amount (&meta->fees.deposit),
- TALER_PQ_query_param_amount (&meta->fees.refresh),
- TALER_PQ_query_param_amount (&meta->fees.refund),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &meta->value),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &meta->fees.withdraw),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &meta->fees.deposit),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &meta->fees.refresh),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &meta->fees.refund),
GNUNET_PQ_query_param_uint32 (&meta->age_mask.bits),
GNUNET_PQ_query_param_end
};
@@ -56,8 +61,6 @@ TEH_PG_add_denomination_key (
GNUNET_assert (GNUNET_YES ==
TALER_denom_fee_check_currency (meta->value.currency,
&meta->fees));
- /* Used in #postgres_insert_denomination_info() and
- #postgres_add_denomination_key() */
PREPARE (pg,
"denomination_insert",
"INSERT INTO denominations "
@@ -68,20 +71,15 @@ TEH_PG_add_denomination_key (
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val" /* value of this denom */
- ",coin_frac" /* fractional value of this denom */
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin" /* value of this denom */
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",age_mask"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9, $10,"
- " $11, $12, $13, $14, $15, $16, $17, $18);");
+ " $11, $12, $13);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"denomination_insert",
iparams);
diff --git a/src/exchangedb/pg_add_policy_fulfillment_proof.c b/src/exchangedb/pg_add_policy_fulfillment_proof.c
index 103de7ad2..5ba18f47a 100644
--- a/src/exchangedb/pg_add_policy_fulfillment_proof.c
+++ b/src/exchangedb/pg_add_policy_fulfillment_proof.c
@@ -94,7 +94,7 @@ TEH_PG_add_policy_fulfillment_proof (
GNUNET_PQ_result_spec_end
};
-
+ // FIXME: where do we prepare this statement!??
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"insert_proof_into_policy_fulfillments",
params,
@@ -112,14 +112,19 @@ TEH_PG_add_policy_fulfillment_proof (
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (&pos->hash_code),
GNUNET_PQ_query_param_timestamp (&pos->deadline),
- TALER_PQ_query_param_amount (&pos->commitment),
- TALER_PQ_query_param_amount (&pos->accumulated_total),
- TALER_PQ_query_param_amount (&pos->policy_fee),
- TALER_PQ_query_param_amount (&pos->transferable_amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &pos->commitment),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &pos->accumulated_total),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &pos->policy_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &pos->transferable_amount),
GNUNET_PQ_query_param_auto_from_type (&pos->fulfillment_state),
GNUNET_PQ_query_param_end
};
+ // FIXME: where do we prepare this statement!??
qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
"update_policy_details",
params);
diff --git a/src/exchangedb/pg_aggregate.c b/src/exchangedb/pg_aggregate.c
index 76d0adec3..82f731927 100644
--- a/src/exchangedb/pg_aggregate.c
+++ b/src/exchangedb/pg_aggregate.c
@@ -62,12 +62,10 @@ TEH_PG_aggregate (
" RETURNING"
" deposit_serial_id"
" ,coin_pub"
- " ,amount_with_fee_val AS amount_val"
- " ,amount_with_fee_frac AS amount_frac)"
+ " ,amount_with_fee AS amount)"
" ,ref AS (" /* find applicable refunds -- NOTE: may do a full join on the master, maybe find a left-join way to integrate with query above to push it to the shards? */
" SELECT"
- " amount_with_fee_val AS refund_val"
- " ,amount_with_fee_frac AS refund_frac"
+ " amount_with_fee AS refund"
" ,coin_pub"
" ,deposit_serial_id" /* theoretically, coin could be in multiple refunded transactions */
" FROM refunds"
@@ -75,8 +73,8 @@ TEH_PG_aggregate (
" AND deposit_serial_id IN (SELECT deposit_serial_id FROM dep))"
" ,ref_by_coin AS (" /* total up refunds by coin */
" SELECT"
- " SUM(refund_val) AS sum_refund_val"
- " ,SUM(refund_frac) AS sum_refund_frac"
+ " SUM((ref.refund).val) AS sum_refund_val"
+ " ,SUM((ref.refund).frac) AS sum_refund_frac"
" ,coin_pub"
" ,deposit_serial_id" /* theoretically, coin could be in multiple refunded transactions */
" FROM ref"
@@ -94,13 +92,12 @@ TEH_PG_aggregate (
" FROM norm_ref_by_coin norm"
" JOIN dep"
" ON (norm.coin_pub = dep.coin_pub"
- " AND norm.deposit_serial_id = dep.deposit_Serial_id"
- " AND norm.norm_refund_val = dep.amount_val"
- " AND norm.norm_refund_frac = dep.amount_frac))"
+ " AND norm.deposit_serial_id = dep.deposit_serial_id"
+ " AND norm.norm_refund_val = (dep.amount).val"
+ " AND norm.norm_refund_frac = (dep.amount).frac))"
" ,fees AS (" /* find deposit fees for not fully refunded deposits */
" SELECT"
- " denom.fee_deposit_val AS fee_val"
- " ,denom.fee_deposit_frac AS fee_frac"
+ " denom.fee_deposit AS fee"
" ,cs.deposit_serial_id" /* ensures we get the fee for each coin, not once per denomination */
" FROM dep cs"
" JOIN known_coins kc" /* NOTE: may do a full join on the master, maybe find a left-join way to integrate with query above to push it to the shards? */
@@ -115,12 +112,12 @@ TEH_PG_aggregate (
" SELECT deposit_serial_id,$4"
" FROM dep)"
"SELECT" /* calculate totals (deposits, refunds and fees) */
- " CAST(COALESCE(SUM(dep.amount_val),0) AS INT8) AS sum_deposit_value" /* cast needed, otherwise we get NUMBER */
- " ,COALESCE(SUM(dep.amount_frac),0) AS sum_deposit_fraction" /* SUM over INT returns INT8 */
- " ,CAST(COALESCE(SUM(ref.refund_val),0) AS INT8) AS sum_refund_value"
- " ,COALESCE(SUM(ref.refund_frac),0) AS sum_refund_fraction"
- " ,CAST(COALESCE(SUM(fees.fee_val),0) AS INT8) AS sum_fee_value"
- " ,COALESCE(SUM(fees.fee_frac),0) AS sum_fee_fraction"
+ " CAST(COALESCE(SUM((dep.amount).val),0) AS INT8) AS sum_deposit_value" /* cast needed, otherwise we get NUMBER */
+ " ,COALESCE(SUM((dep.amount).frac),0) AS sum_deposit_fraction" /* SUM over INT returns INT8 */
+ " ,CAST(COALESCE(SUM((ref.refund).val),0) AS INT8) AS sum_refund_value"
+ " ,COALESCE(SUM((ref.refund).frac),0) AS sum_refund_fraction"
+ " ,CAST(COALESCE(SUM((fees.fee).val),0) AS INT8) AS sum_fee_value"
+ " ,COALESCE(SUM((fees.fee).frac),0) AS sum_fee_fraction"
" FROM dep "
" FULL OUTER JOIN ref ON (FALSE)" /* We just want all sums */
" FULL OUTER JOIN fees ON (FALSE);");
diff --git a/src/exchangedb/pg_create_aggregation_transient.c b/src/exchangedb/pg_create_aggregation_transient.c
index 80fba8bf4..5c58c696e 100644
--- a/src/exchangedb/pg_create_aggregation_transient.c
+++ b/src/exchangedb/pg_create_aggregation_transient.c
@@ -38,7 +38,8 @@ TEH_PG_create_aggregation_transient (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
- TALER_PQ_query_param_amount (total),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ total),
GNUNET_PQ_query_param_auto_from_type (merchant_pub),
GNUNET_PQ_query_param_auto_from_type (h_payto),
GNUNET_PQ_query_param_uint64 (&kyc_requirement_row),
@@ -46,18 +47,17 @@ TEH_PG_create_aggregation_transient (
GNUNET_PQ_query_param_auto_from_type (wtid),
GNUNET_PQ_query_param_end
};
- /* Used in #postgres_create_aggregation_transient() */
+
PREPARE (pg,
"create_aggregation_transient",
"INSERT INTO aggregation_transient"
- " (amount_val"
- " ,amount_frac"
+ " (amount"
" ,merchant_pub"
" ,wire_target_h_payto"
" ,legitimization_requirement_serial_id"
" ,exchange_account_section"
" ,wtid_raw)"
- " VALUES ($1, $2, $3, $4, $5, $6, $7);");
+ " VALUES ($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"create_aggregation_transient",
params);
diff --git a/src/exchangedb/pg_do_deposit.c b/src/exchangedb/pg_do_deposit.c
index f3d0856ac..3120232ba 100644
--- a/src/exchangedb/pg_do_deposit.c
+++ b/src/exchangedb/pg_do_deposit.c
@@ -41,7 +41,8 @@ TEH_PG_do_deposit (
struct PostgresClosure *pg = cls;
uint64_t deposit_shard = TEH_PG_compute_shard (&deposit->merchant_pub);
struct GNUNET_PQ_QueryParam params[] = {
- TALER_PQ_query_param_amount (&deposit->amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &deposit->amount_with_fee),
GNUNET_PQ_query_param_auto_from_type (&deposit->h_contract_terms),
GNUNET_PQ_query_param_auto_from_type (&deposit->wire_salt),
GNUNET_PQ_query_param_timestamp (&deposit->timestamp),
@@ -78,7 +79,7 @@ TEH_PG_do_deposit (
",out_balance_ok AS balance_ok"
",out_conflict AS conflicted"
" FROM exchange_do_deposit"
- " ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17);");
+ " ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16);");
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"call_deposit",
params,
diff --git a/src/exchangedb/pg_do_melt.c b/src/exchangedb/pg_do_melt.c
index 40a54d43b..0a827acce 100644
--- a/src/exchangedb/pg_do_melt.c
+++ b/src/exchangedb/pg_do_melt.c
@@ -40,7 +40,8 @@ TEH_PG_do_melt (
NULL == rms
? GNUNET_PQ_query_param_null ()
: GNUNET_PQ_query_param_auto_from_type (rms),
- TALER_PQ_query_param_amount (&refresh->amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &refresh->amount_with_fee),
GNUNET_PQ_query_param_auto_from_type (&refresh->rc),
GNUNET_PQ_query_param_auto_from_type (&refresh->coin.coin_pub),
GNUNET_PQ_query_param_auto_from_type (&refresh->coin_sig),
@@ -63,7 +64,6 @@ TEH_PG_do_melt (
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in #postgres_do_melt() to melt a coin. */
PREPARE (pg,
"call_melt",
"SELECT "
@@ -71,7 +71,7 @@ TEH_PG_do_melt (
",out_zombie_bad AS zombie_required"
",out_noreveal_index AS noreveal_index"
" FROM exchange_do_melt"
- " ($1,$2,$3,$4,$5,$6,$7,$8,$9);");
+ " ($1,$2,$3,$4,$5,$6,$7,$8);");
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"call_melt",
params,
diff --git a/src/exchangedb/pg_do_refund.c b/src/exchangedb/pg_do_refund.c
index 0b9665c48..887b610bd 100644
--- a/src/exchangedb/pg_do_refund.c
+++ b/src/exchangedb/pg_do_refund.c
@@ -25,6 +25,8 @@
#include "pg_do_refund.h"
#include "pg_helper.h"
#include "pg_compute_shard.h"
+
+
enum GNUNET_DB_QueryStatus
TEH_PG_do_refund (
void *cls,
@@ -40,9 +42,12 @@ TEH_PG_do_refund (
uint64_t deposit_shard = TEH_PG_compute_shard (&refund->details.merchant_pub);
struct TALER_Amount amount_without_fee;
struct GNUNET_PQ_QueryParam params[] = {
- TALER_PQ_query_param_amount (&refund->details.refund_amount),
- TALER_PQ_query_param_amount (&amount_without_fee),
- TALER_PQ_query_param_amount (deposit_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &refund->details.refund_amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &amount_without_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ deposit_fee),
GNUNET_PQ_query_param_auto_from_type (&refund->details.h_contract_terms),
GNUNET_PQ_query_param_uint64 (&refund->details.rtransaction_id),
GNUNET_PQ_query_param_uint64 (&deposit_shard),
@@ -72,7 +77,6 @@ TEH_PG_do_refund (
GNUNET_break (0);
return GNUNET_DB_STATUS_HARD_ERROR;
}
- /* Used in #postgres_do_refund() to refund a deposit. */
PREPARE (pg,
"call_refund",
"SELECT "
@@ -81,8 +85,7 @@ TEH_PG_do_refund (
",out_gone AS gone"
",out_conflict AS conflict"
" FROM exchange_do_refund"
- " ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13);");
-
+ " ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);");
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"call_refund",
params,
diff --git a/src/exchangedb/pg_ensure_coin_known.c b/src/exchangedb/pg_ensure_coin_known.c
index 721123fd3..346135756 100644
--- a/src/exchangedb/pg_ensure_coin_known.c
+++ b/src/exchangedb/pg_ensure_coin_known.c
@@ -60,9 +60,8 @@ TEH_PG_ensure_coin_known (void *cls,
&is_age_hash_null),
GNUNET_PQ_result_spec_end
};
- /* Used in #postgres_insert_known_coin() to store the denomination public
- key and signature for a coin known to the exchange.
+ /*
See also:
https://stackoverflow.com/questions/34708509/how-to-use-returning-with-on-conflict-in-postgresql/37543015#37543015
*/
@@ -70,13 +69,11 @@ TEH_PG_ensure_coin_known (void *cls,
"insert_known_coin",
"WITH dd"
" (denominations_serial"
- " ,coin_val"
- " ,coin_frac"
+ " ,coin"
" ) AS ("
" SELECT "
" denominations_serial"
- " ,coin_val"
- " ,coin_frac"
+ " ,coin"
" FROM denominations"
" WHERE denom_pub_hash=$2"
" ), input_rows"
@@ -88,15 +85,13 @@ TEH_PG_ensure_coin_known (void *cls,
" ,denominations_serial"
" ,age_commitment_hash"
" ,denom_sig"
- " ,remaining_val"
- " ,remaining_frac"
+ " ,remaining"
" ) SELECT "
" $1"
" ,denominations_serial"
" ,$3"
" ,$4"
- " ,coin_val"
- " ,coin_frac"
+ " ,coin"
" FROM dd"
" ON CONFLICT DO NOTHING" /* CONFLICT on (coin_pub) */
" RETURNING "
diff --git a/src/exchangedb/pg_find_aggregation_transient.c b/src/exchangedb/pg_find_aggregation_transient.c
index ecc6362cf..b931188a8 100644
--- a/src/exchangedb/pg_find_aggregation_transient.c
+++ b/src/exchangedb/pg_find_aggregation_transient.c
@@ -128,12 +128,11 @@ TEH_PG_find_aggregation_transient (
.pg = pg,
.status = GNUNET_OK
};
- /* Used in #postgres_find_aggregation_transient() */
+
PREPARE (pg,
"find_transient_aggregations",
"SELECT"
- " amount_val"
- " ,amount_frac"
+ " amount"
" ,wtid_raw"
" ,merchant_pub"
" ,payto_uri"
diff --git a/src/exchangedb/pg_get_coin_transactions.c b/src/exchangedb/pg_get_coin_transactions.c
index f24c9be4a..807c4d8fc 100644
--- a/src/exchangedb/pg_get_coin_transactions.c
+++ b/src/exchangedb/pg_get_coin_transactions.c
@@ -726,10 +726,8 @@ TEH_PG_get_coin_transactions (
PREPARE (pg,
"get_deposit_with_coin_pub",
"SELECT"
- " dep.amount_with_fee_val"
- ",dep.amount_with_fee_frac"
- ",denoms.fee_deposit_val"
- ",denoms.fee_deposit_frac"
+ " dep.amount_with_fee"
+ ",denoms.fee_deposit"
",denoms.denom_pub_hash"
",kc.age_commitment_hash"
",dep.wallet_timestamp"
@@ -755,11 +753,9 @@ TEH_PG_get_coin_transactions (
"SELECT"
" rc"
",old_coin_sig"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",denoms.denom_pub_hash"
- ",denoms.fee_refresh_val"
- ",denoms.fee_refresh_frac"
+ ",denoms.fee_refresh"
",kc.age_commitment_hash"
",melt_serial_id"
" FROM refresh_commitments"
@@ -772,10 +768,8 @@ TEH_PG_get_coin_transactions (
"get_purse_deposit_by_coin_pub",
"SELECT"
" partner_base_url"
- ",pd.amount_with_fee_val"
- ",pd.amount_with_fee_frac"
- ",denoms.fee_deposit_val"
- ",denoms.fee_deposit_frac"
+ ",pd.amount_with_fee"
+ ",denoms.fee_deposit"
",pd.purse_pub"
",kc.age_commitment_hash"
",pd.coin_sig"
@@ -802,10 +796,8 @@ TEH_PG_get_coin_transactions (
",ref.merchant_sig"
",dep.h_contract_terms"
",ref.rtransaction_id"
- ",ref.amount_with_fee_val"
- ",ref.amount_with_fee_frac"
- ",denom.fee_refund_val "
- ",denom.fee_refund_frac "
+ ",ref.amount_with_fee"
+ ",denom.fee_refund"
",ref.refund_serial_id"
" FROM refunds ref"
" JOIN deposits dep"
@@ -819,10 +811,8 @@ TEH_PG_get_coin_transactions (
"get_purse_decision_by_coin_pub",
"SELECT"
" pdes.purse_pub"
- ",pd.amount_with_fee_val"
- ",pd.amount_with_fee_frac"
- ",denom.fee_refund_val "
- ",denom.fee_refund_frac "
+ ",pd.amount_with_fee"
+ ",denom.fee_refund"
",pdes.purse_decision_serial_id"
" FROM purse_deposits pd"
" JOIN purse_decision pdes"
@@ -839,8 +829,7 @@ TEH_PG_get_coin_transactions (
" coins.coin_pub"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",denoms.denom_pub_hash"
",coins.denom_sig"
@@ -863,8 +852,7 @@ TEH_PG_get_coin_transactions (
",denoms.denom_pub_hash"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",recoup_uuid"
" FROM recoup rcp"
@@ -889,8 +877,7 @@ TEH_PG_get_coin_transactions (
" old_coins.coin_pub AS old_coin_pub"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",denoms.denom_pub_hash"
",coins.denom_sig"
@@ -913,8 +900,7 @@ TEH_PG_get_coin_transactions (
" reserve_open_deposit_uuid"
",coin_sig"
",reserve_sig"
- ",contribution_val"
- ",contribution_frac"
+ ",contribution"
" FROM reserves_open_deposits"
" WHERE coin_pub=$1;");
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
diff --git a/src/exchangedb/pg_get_denomination_info.c b/src/exchangedb/pg_get_denomination_info.c
index 97250b621..4bae29795 100644
--- a/src/exchangedb/pg_get_denomination_info.c
+++ b/src/exchangedb/pg_get_denomination_info.c
@@ -64,8 +64,6 @@ TEH_PG_get_denomination_info (
GNUNET_PQ_result_spec_end
};
-
- /* Used in #postgres_get_denomination_info() */
PREPARE (pg,
"denomination_get",
"SELECT"
@@ -74,19 +72,14 @@ TEH_PG_get_denomination_info (
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val" /* value of this denom */
- ",coin_frac" /* fractional value of this denom */
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin" /* value of this denom */
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",age_mask"
" FROM denominations"
- " WHERE denom_pub_hash=$1;");
+ " WHERE denom_pub_hash=$1;");
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"denomination_get",
params,
@@ -96,4 +89,3 @@ TEH_PG_get_denomination_info (
issue->denom_hash = *denom_pub_hash;
return qs;
}
-
diff --git a/src/exchangedb/pg_get_drain_profit.c b/src/exchangedb/pg_get_drain_profit.c
index d02802e1d..75fccefcd 100644
--- a/src/exchangedb/pg_get_drain_profit.c
+++ b/src/exchangedb/pg_get_drain_profit.c
@@ -58,7 +58,6 @@ TEH_PG_get_drain_profit (
GNUNET_PQ_result_spec_end
};
-
PREPARE (pg,
"get_profit_drain",
"SELECT"
@@ -66,8 +65,7 @@ TEH_PG_get_drain_profit (
",account_section"
",payto_uri"
",trigger_date"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",master_sig"
" FROM profit_drains"
" WHERE wtid=$1;");
diff --git a/src/exchangedb/pg_get_global_fee.c b/src/exchangedb/pg_get_global_fee.c
index 990113fed..46addfa17 100644
--- a/src/exchangedb/pg_get_global_fee.c
+++ b/src/exchangedb/pg_get_global_fee.c
@@ -64,19 +64,14 @@ TEH_PG_get_global_fee (void *cls,
GNUNET_PQ_result_spec_end
};
-
- /* Used in #postgres_get_global_fee() */
PREPARE (pg,
"get_global_fee",
"SELECT "
" start_date"
",end_date"
- ",history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
diff --git a/src/exchangedb/pg_get_global_fees.c b/src/exchangedb/pg_get_global_fees.c
index e01eb2dab..21be35989 100644
--- a/src/exchangedb/pg_get_global_fees.c
+++ b/src/exchangedb/pg_get_global_fees.c
@@ -143,25 +143,20 @@ TEH_PG_get_global_fees (void *cls,
.status = GNUNET_OK
};
- /* Used in #postgres_get_global_fees() */
PREPARE (pg,
"get_global_fees",
"SELECT "
" start_date"
",end_date"
- ",history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
",master_sig"
" FROM global_fee"
" WHERE start_date >= $1");
-
return GNUNET_PQ_eval_prepared_multi_select (pg->conn,
"get_global_fees",
params,
diff --git a/src/exchangedb/pg_get_melt.c b/src/exchangedb/pg_get_melt.c
index 8e5685ec3..2221054ba 100644
--- a/src/exchangedb/pg_get_melt.c
+++ b/src/exchangedb/pg_get_melt.c
@@ -72,13 +72,11 @@ TEH_PG_get_melt (void *cls,
"get_melt",
/* "SELECT"
" denoms.denom_pub_hash"
- ",denoms.fee_refresh_val"
- ",denoms.fee_refresh_frac"
+ ",denoms.fee_refresh"
",old_coin_pub"
",old_coin_sig"
",kc.age_commitment_hash"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",noreveal_index"
",melt_serial_id"
" FROM refresh_commitments"
@@ -94,13 +92,11 @@ TEH_PG_get_melt (void *cls,
")"
"SELECT"
" denoms.denom_pub_hash"
- ",denoms.fee_refresh_val"
- ",denoms.fee_refresh_frac"
+ ",denoms.fee_refresh"
",rc.old_coin_pub"
",rc.old_coin_sig"
",kc.age_commitment_hash"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",noreveal_index"
",melt_serial_id "
"FROM ("
diff --git a/src/exchangedb/pg_get_purse_deposit.c b/src/exchangedb/pg_get_purse_deposit.c
index 8a135818d..c09d7578d 100644
--- a/src/exchangedb/pg_get_purse_deposit.c
+++ b/src/exchangedb/pg_get_purse_deposit.c
@@ -66,8 +66,7 @@ TEH_PG_get_purse_deposit (
"select_purse_deposit_by_coin_pub",
"SELECT "
" coin_sig"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",denom_pub_hash"
",age_commitment_hash"
",partner_base_url"
diff --git a/src/exchangedb/pg_get_purse_request.c b/src/exchangedb/pg_get_purse_request.c
index c5f5aac76..9d2ee5654 100644
--- a/src/exchangedb/pg_get_purse_request.c
+++ b/src/exchangedb/pg_get_purse_request.c
@@ -67,14 +67,11 @@ TEH_PG_get_purse_request (
",purse_expiration"
",h_contract_terms"
",age_limit"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",balance_val"
- ",balance_frac"
+ ",amount_with_fee"
+ ",balance"
",purse_sig"
" FROM purse_requests"
" WHERE purse_pub=$1;");
-
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"get_purse_request",
params,
diff --git a/src/exchangedb/pg_get_reserve_history.c b/src/exchangedb/pg_get_reserve_history.c
index 6c12abc61..86a33946d 100644
--- a/src/exchangedb/pg_get_reserve_history.c
+++ b/src/exchangedb/pg_get_reserve_history.c
@@ -653,8 +653,7 @@ TEH_PG_get_reserve_history (void *cls,
/*
"SELECT"
" wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",execution_date"
",payto_uri AS sender_account_details"
" FROM reserves_in"
@@ -667,14 +666,13 @@ TEH_PG_get_reserve_history (void *cls,
" FROM reserves_in "
" WHERE reserve_pub = $1 "
") "
- "SELECT "
- " wire_reference "
- " ,credit_val "
- " ,credit_frac "
- " ,execution_date "
- " ,payto_uri AS sender_account_details "
- "FROM wire_targets "
- "JOIN ri "
+ "SELECT"
+ " wire_reference"
+ " ,credit"
+ " ,execution_date"
+ " ,payto_uri AS sender_account_details"
+ " FROM wire_targets"
+ " JOIN ri"
" ON (wire_target_h_payto = wire_source_h_payto) "
"WHERE wire_target_h_payto = ( "
" SELECT wire_source_h_payto FROM ri "
@@ -688,10 +686,8 @@ TEH_PG_get_reserve_history (void *cls,
",ro.denom_sig"
",ro.reserve_sig"
",ro.execution_date"
- ",ro.amount_with_fee_val"
- ",ro.amount_with_fee_frac"
- ",denom.fee_withdraw_val"
- ",denom.fee_withdraw_frac"
+ ",ro.amount_with_fee"
+ ",denom.fee_withdraw"
" FROM reserves res"
" JOIN reserves_out_by_reserve ror"
" ON (res.reserve_uuid = ror.reserve_uuid)"
@@ -709,21 +705,19 @@ TEH_PG_get_reserve_history (void *cls,
" FROM reserves "
" WHERE reserve_pub = $1 "
" ) "
- ") SELECT "
- " ro.h_blind_ev "
- " ,denom.denom_pub_hash "
- " ,ro.denom_sig "
- " ,ro.reserve_sig "
- " ,ro.execution_date "
- " ,ro.amount_with_fee_val "
- " ,ro.amount_with_fee_frac "
- " ,denom.fee_withdraw_val "
- " ,denom.fee_withdraw_frac "
- "FROM robr "
- "JOIN reserves_out ro "
- " ON (ro.h_blind_ev = robr.h_blind_ev) "
- "JOIN denominations denom "
- " ON (ro.denominations_serial = denom.denominations_serial);");
+ ") SELECT"
+ " ro.h_blind_ev"
+ " ,denom.denom_pub_hash"
+ " ,ro.denom_sig"
+ " ,ro.reserve_sig"
+ " ,ro.execution_date"
+ " ,ro.amount_with_fee"
+ " ,denom.fee_withdraw"
+ " FROM robr"
+ " JOIN reserves_out ro"
+ " ON (ro.h_blind_ev = robr.h_blind_ev)"
+ " JOIN denominations denom"
+ " ON (ro.denominations_serial = denom.denominations_serial);");
PREPARE (pg,
"recoup_by_reserve",
/*
@@ -731,8 +725,7 @@ TEH_PG_get_reserve_history (void *cls,
" recoup.coin_pub"
",recoup.coin_sig"
",recoup.coin_blind"
- ",recoup.amount_val"
- ",recoup.amount_frac"
+ ",recoup.amount"
",recoup.recoup_timestamp"
",denominations.denom_pub_hash"
",known_coins.denom_sig"
@@ -753,10 +746,9 @@ TEH_PG_get_reserve_history (void *cls,
" WHERE reserves.reserve_pub=$1);",
*/
"SELECT robr.coin_pub "
- " ,robr.coin_sig "
- " ,robr.coin_blind "
- " ,robr.amount_val "
- " ,robr.amount_frac "
+ " ,robr.coin_sig"
+ " ,robr.coin_blind"
+ " ,robr.amount"
" ,robr.recoup_timestamp "
" ,denominations.denom_pub_hash "
" ,robr.denom_sig "
@@ -766,10 +758,8 @@ TEH_PG_get_reserve_history (void *cls,
PREPARE (pg,
"close_by_reserve",
"SELECT"
- " amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ " amount"
+ ",closing_fee"
",execution_date"
",payto_uri AS receiver_account"
",wtid"
@@ -780,12 +770,9 @@ TEH_PG_get_reserve_history (void *cls,
PREPARE (pg,
"merge_by_reserve",
"SELECT"
- " pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
- ",pr.balance_val"
- ",pr.balance_frac"
- ",pr.purse_fee_val"
- ",pr.purse_fee_frac"
+ " pr.amount_with_fee"
+ ",pr.balance"
+ ",pr.purse_fee"
",pr.h_contract_terms"
",pr.merge_pub"
",am.reserve_sig"
@@ -808,8 +795,7 @@ TEH_PG_get_reserve_history (void *cls,
PREPARE (pg,
"history_by_reserve",
"SELECT"
- " history_fee_val"
- ",history_fee_frac"
+ " history_fee"
",request_timestamp"
",reserve_sig"
" FROM history_requests"
@@ -817,8 +803,7 @@ TEH_PG_get_reserve_history (void *cls,
PREPARE (pg,
"open_request_by_reserve",
"SELECT"
- " reserve_payment_val"
- ",reserve_payment_frac"
+ " reserve_payment"
",request_timestamp"
",expiration_date"
",requested_purse_limit"
@@ -944,8 +929,7 @@ TEH_PG_get_reserve_status (void *cls,
/*
"SELECT"
" wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",execution_date"
",payto_uri AS sender_account_details"
" FROM reserves_in"
@@ -960,15 +944,14 @@ TEH_PG_get_reserve_status (void *cls,
" WHERE reserve_pub = $1 "
") "
"SELECT "
- " wire_reference "
- " ,credit_val "
- " ,credit_frac "
- " ,execution_date "
- " ,payto_uri AS sender_account_details "
- "FROM wire_targets "
- "JOIN ri "
- " ON (wire_target_h_payto = wire_source_h_payto) "
- "WHERE execution_date >= $2"
+ " wire_reference"
+ " ,credit"
+ " ,execution_date"
+ " ,payto_uri AS sender_account_details"
+ " FROM wire_targets"
+ " JOIN ri"
+ " ON (wire_target_h_payto = wire_source_h_payto)"
+ " WHERE execution_date >= $2"
" AND wire_target_h_payto = ( "
" SELECT wire_source_h_payto FROM ri "
"); ");
@@ -981,10 +964,8 @@ TEH_PG_get_reserve_status (void *cls,
",ro.denom_sig"
",ro.reserve_sig"
",ro.execution_date"
- ",ro.amount_with_fee_val"
- ",ro.amount_with_fee_frac"
- ",denom.fee_withdraw_val"
- ",denom.fee_withdraw_frac"
+ ",ro.amount_with_fee"
+ ",denom.fee_withdraw"
" FROM reserves res"
" JOIN reserves_out_by_reserve ror"
" ON (res.reserve_uuid = ror.reserve_uuid)"
@@ -1004,20 +985,18 @@ TEH_PG_get_reserve_status (void *cls,
" WHERE reserve_pub = $1 "
" ) "
") SELECT "
- " ro.h_blind_ev "
- " ,denom.denom_pub_hash "
- " ,ro.denom_sig "
- " ,ro.reserve_sig "
- " ,ro.execution_date "
- " ,ro.amount_with_fee_val "
- " ,ro.amount_with_fee_frac "
- " ,denom.fee_withdraw_val "
- " ,denom.fee_withdraw_frac "
- "FROM robr "
- "JOIN reserves_out ro "
- " ON (ro.h_blind_ev = robr.h_blind_ev) "
- "JOIN denominations denom "
- " ON (ro.denominations_serial = denom.denominations_serial)"
+ " ro.h_blind_ev"
+ " ,denom.denom_pub_hash"
+ " ,ro.denom_sig"
+ " ,ro.reserve_sig"
+ " ,ro.execution_date"
+ " ,ro.amount_with_fee"
+ " ,denom.fee_withdraw"
+ " FROM robr"
+ " JOIN reserves_out ro"
+ " ON (ro.h_blind_ev = robr.h_blind_ev)"
+ " JOIN denominations denom"
+ " ON (ro.denominations_serial = denom.denominations_serial)"
" WHERE ro.execution_date>=$2;");
PREPARE (pg,
"recoup_by_reserve_truncated",
@@ -1026,8 +1005,7 @@ TEH_PG_get_reserve_status (void *cls,
" recoup.coin_pub"
",recoup.coin_sig"
",recoup.coin_blind"
- ",recoup.amount_val"
- ",recoup.amount_frac"
+ ",recoup.amount"
",recoup.recoup_timestamp"
",denominations.denom_pub_hash"
",known_coins.denom_sig"
@@ -1051,8 +1029,7 @@ TEH_PG_get_reserve_status (void *cls,
"SELECT robr.coin_pub "
" ,robr.coin_sig "
" ,robr.coin_blind "
- " ,robr.amount_val "
- " ,robr.amount_frac "
+ " ,robr.amount"
" ,robr.recoup_timestamp "
" ,denominations.denom_pub_hash "
" ,robr.denom_sig "
@@ -1063,10 +1040,8 @@ TEH_PG_get_reserve_status (void *cls,
PREPARE (pg,
"close_by_reserve_truncated",
"SELECT"
- " amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ " amount"
+ ",closing_fee"
",execution_date"
",payto_uri AS receiver_account"
",wtid"
@@ -1078,12 +1053,9 @@ TEH_PG_get_reserve_status (void *cls,
PREPARE (pg,
"merge_by_reserve_truncated",
"SELECT"
- " pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
- ",pr.balance_val"
- ",pr.balance_frac"
- ",pr.purse_fee_val"
- ",pr.purse_fee_frac"
+ " pr.amount_with_fee"
+ ",pr.balance"
+ ",pr.purse_fee"
",pr.h_contract_terms"
",pr.merge_pub"
",am.reserve_sig"
@@ -1107,8 +1079,7 @@ TEH_PG_get_reserve_status (void *cls,
PREPARE (pg,
"history_by_reserve_truncated",
"SELECT"
- " history_fee_val"
- ",history_fee_frac"
+ " history_fee"
",request_timestamp"
",reserve_sig"
" FROM history_requests"
@@ -1117,8 +1088,7 @@ TEH_PG_get_reserve_status (void *cls,
PREPARE (pg,
"open_request_by_reserve_truncated",
"SELECT"
- " reserve_payment_val"
- ",reserve_payment_frac"
+ " reserve_payment"
",request_timestamp"
",expiration_date"
",requested_purse_limit"
diff --git a/src/exchangedb/pg_get_unfinished_close_requests.c b/src/exchangedb/pg_get_unfinished_close_requests.c
index fa8abdf8b..990e8e00e 100644
--- a/src/exchangedb/pg_get_unfinished_close_requests.c
+++ b/src/exchangedb/pg_get_unfinished_close_requests.c
@@ -142,8 +142,7 @@ TEH_PG_get_unfinished_close_requests (
" reserve_pub"
" ,close_request_serial_id"
" ,close_timestamp AS expiration_date"
- " ,close_val"
- " ,close_frac"
+ " ,close"
" ,(SELECT payto_uri"
" FROM reserves_in ri"
" JOIN wire_targets wt ON (ri.wire_source_h_payto = wt.wire_target_h_payto)"
diff --git a/src/exchangedb/pg_get_wire_fee.c b/src/exchangedb/pg_get_wire_fee.c
index 4aab68b85..40f517f28 100644
--- a/src/exchangedb/pg_get_wire_fee.c
+++ b/src/exchangedb/pg_get_wire_fee.c
@@ -54,17 +54,13 @@ TEH_PG_get_wire_fee (void *cls,
GNUNET_PQ_result_spec_end
};
-
- /* Used in #postgres_get_wire_fee() */
PREPARE (pg,
"get_wire_fee",
"SELECT "
" start_date"
",end_date"
- ",wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",wire_fee"
+ ",closing_fee"
",master_sig"
" FROM wire_fee"
" WHERE wire_method=$1"
diff --git a/src/exchangedb/pg_get_wire_fees.c b/src/exchangedb/pg_get_wire_fees.c
index e34d44a9a..193ccff6a 100644
--- a/src/exchangedb/pg_get_wire_fees.c
+++ b/src/exchangedb/pg_get_wire_fees.c
@@ -126,14 +126,11 @@ TEH_PG_get_wire_fees (void *cls,
};
enum GNUNET_DB_QueryStatus qs;
-
PREPARE (pg,
"get_wire_fees",
"SELECT"
- " wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ " wire_fee"
+ ",closing_fee"
",start_date"
",end_date"
",master_sig"
diff --git a/src/exchangedb/pg_get_withdraw_info.c b/src/exchangedb/pg_get_withdraw_info.c
index d6a180b00..e06fa3764 100644
--- a/src/exchangedb/pg_get_withdraw_info.c
+++ b/src/exchangedb/pg_get_withdraw_info.c
@@ -55,10 +55,6 @@ TEH_PG_get_withdraw_info (
GNUNET_PQ_result_spec_end
};
- /* Used in #postgres_get_withdraw_info() to
- locate the response for a /reserve/withdraw request
- using the hash of the blinded message. Used to
- make sure /reserve/withdraw requests are idempotent. */
PREPARE (pg,
"get_withdraw_info",
"SELECT"
@@ -68,10 +64,8 @@ TEH_PG_get_withdraw_info (
",reserves.reserve_pub"
",execution_date"
",h_blind_ev"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",denom.fee_withdraw_val"
- ",denom.fee_withdraw_frac"
+ ",amount_with_fee"
+ ",denom.fee_withdraw"
" FROM reserves_out"
" JOIN reserves"
" USING (reserve_uuid)"
diff --git a/src/exchangedb/pg_have_deposit2.c b/src/exchangedb/pg_have_deposit2.c
index 92c300605..ccb4f5c91 100644
--- a/src/exchangedb/pg_have_deposit2.c
+++ b/src/exchangedb/pg_have_deposit2.c
@@ -70,16 +70,11 @@ TEH_PG_have_deposit2 (
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Getting deposits for coin %s\n",
TALER_B2S (coin_pub));
-
- /* Fetch an existing deposit request, used to ensure idempotency
- during /deposit processing. Used in #postgres_have_deposit(). */
PREPARE (pg,
"get_deposit",
"SELECT"
- " dep.amount_with_fee_val"
- ",dep.amount_with_fee_frac"
- ",denominations.fee_deposit_val"
- ",denominations.fee_deposit_frac"
+ " dep.amount_with_fee"
+ ",denominations.fee_deposit"
",dep.wallet_timestamp"
",dep.exchange_timestamp"
",dep.refund_deadline"
diff --git a/src/exchangedb/pg_helper.h b/src/exchangedb/pg_helper.h
index 512f75056..56f4afc31 100644
--- a/src/exchangedb/pg_helper.h
+++ b/src/exchangedb/pg_helper.h
@@ -141,19 +141,8 @@ struct PostgresClosure
* @param field name of the database field to fetch amount from
* @param[out] amountp pointer to amount to set
*/
-#define TALER_PQ_RESULT_SPEC_AMOUNT(field,amountp) TALER_PQ_result_spec_amount ( \
- field,pg->currency,amountp)
-
-
-/**
- * Wrapper macro to add the currency from the plugin's state
- * when fetching amounts from the database. NBO variant.
- *
- * @param field name of the database field to fetch amount from
- * @param[out] amountp pointer to amount to set
- */
-#define TALER_PQ_RESULT_SPEC_AMOUNT_NBO(field, \
- amountp) TALER_PQ_result_spec_amount_nbo ( \
+#define TALER_PQ_RESULT_SPEC_AMOUNT(field, \
+ amountp) TALER_PQ_result_spec_amount_tuple ( \
field,pg->currency,amountp)
diff --git a/src/exchangedb/pg_insert_aml_decision.c b/src/exchangedb/pg_insert_aml_decision.c
index fcf67ee46..80eb7f2b8 100644
--- a/src/exchangedb/pg_insert_aml_decision.c
+++ b/src/exchangedb/pg_insert_aml_decision.c
@@ -55,7 +55,8 @@ TEH_PG_insert_aml_decision (
: NULL;
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (h_payto),
- TALER_PQ_query_param_amount (new_threshold),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ new_threshold),
GNUNET_PQ_query_param_uint32 (&ns),
GNUNET_PQ_query_param_timestamp (&decision_time),
GNUNET_PQ_query_param_string (justification),
@@ -83,7 +84,7 @@ TEH_PG_insert_aml_decision (
" out_invalid_officer"
",out_last_date"
" FROM exchange_do_insert_aml_decision"
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);");
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"do_insert_aml_decision",
params,
diff --git a/src/exchangedb/pg_insert_close_request.c b/src/exchangedb/pg_insert_close_request.c
index 387dafd9a..01160b745 100644
--- a/src/exchangedb/pg_insert_close_request.c
+++ b/src/exchangedb/pg_insert_close_request.c
@@ -41,8 +41,10 @@ TEH_PG_insert_close_request (
GNUNET_PQ_query_param_auto_from_type (reserve_pub),
GNUNET_PQ_query_param_timestamp (&request_timestamp),
GNUNET_PQ_query_param_auto_from_type (reserve_sig),
- TALER_PQ_query_param_amount (balance),
- TALER_PQ_query_param_amount (closing_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ balance),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ closing_fee),
GNUNET_PQ_query_param_string (payto_uri),
GNUNET_PQ_query_param_end
};
@@ -53,14 +55,12 @@ TEH_PG_insert_close_request (
"(reserve_pub"
",close_timestamp"
",reserve_sig"
- ",close_val"
- ",close_frac"
- ",close_fee_val"
- ",close_fee_frac"
+ ",close"
+ ",close_fee"
",payto_uri"
")"
"VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8)"
+ "($1, $2, $3, $4, $5, $6)"
" ON CONFLICT DO NOTHING;");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_account_close",
diff --git a/src/exchangedb/pg_insert_denomination_info.c b/src/exchangedb/pg_insert_denomination_info.c
index 301996116..620d6dd78 100644
--- a/src/exchangedb/pg_insert_denomination_info.c
+++ b/src/exchangedb/pg_insert_denomination_info.c
@@ -42,11 +42,16 @@ TEH_PG_insert_denomination_info (
GNUNET_PQ_query_param_timestamp (&issue->expire_withdraw),
GNUNET_PQ_query_param_timestamp (&issue->expire_deposit),
GNUNET_PQ_query_param_timestamp (&issue->expire_legal),
- TALER_PQ_query_param_amount (&issue->value),
- TALER_PQ_query_param_amount (&issue->fees.withdraw),
- TALER_PQ_query_param_amount (&issue->fees.deposit),
- TALER_PQ_query_param_amount (&issue->fees.refresh),
- TALER_PQ_query_param_amount (&issue->fees.refund),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &issue->value),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &issue->fees.withdraw),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &issue->fees.deposit),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &issue->fees.refresh),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &issue->fees.refund),
GNUNET_PQ_query_param_uint32 (&denom_pub->age_mask.bits),
GNUNET_PQ_query_param_end
};
@@ -81,20 +86,15 @@ TEH_PG_insert_denomination_info (
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val" /* value of this denom */
- ",coin_frac" /* fractional value of this denom */
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin" /* value of this denom */
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",age_mask"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9, $10,"
- " $11, $12, $13, $14, $15, $16, $17, $18);");
+ " $11, $12, $13);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"denomination_insert",
params);
diff --git a/src/exchangedb/pg_insert_deposit.c b/src/exchangedb/pg_insert_deposit.c
index a4d68fe19..d674983e7 100644
--- a/src/exchangedb/pg_insert_deposit.c
+++ b/src/exchangedb/pg_insert_deposit.c
@@ -52,7 +52,8 @@ TEH_PG_insert_deposit (void *cls,
uint64_t shard = TEH_PG_compute_shard (&deposit->merchant_pub);
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (&deposit->coin.coin_pub),
- TALER_PQ_query_param_amount (&deposit->amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &deposit->amount_with_fee),
GNUNET_PQ_query_param_timestamp (&deposit->timestamp),
GNUNET_PQ_query_param_timestamp (&deposit->refund_deadline),
GNUNET_PQ_query_param_timestamp (&deposit->wire_deadline),
@@ -73,15 +74,13 @@ TEH_PG_insert_deposit (void *cls,
GNUNET_TIME_timestamp2s (deposit->wire_deadline),
(unsigned long long) deposit->wire_deadline.abs_time.abs_value_us,
(unsigned long long) deposit->refund_deadline.abs_time.abs_value_us);
- /* Store information about a /deposit the exchange is to execute.
- Used in #postgres_insert_deposit(). Only used in test cases. */
+
PREPARE (pg,
"insert_deposit",
"INSERT INTO deposits "
"(known_coin_id"
",coin_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",wallet_timestamp"
",refund_deadline"
",wire_deadline"
@@ -93,7 +92,7 @@ TEH_PG_insert_deposit (void *cls,
",exchange_timestamp"
",shard"
") SELECT known_coin_id, $1, $2, $3, $4, $5, $6, "
- " $7, $8, $9, $10, $11, $12, $13"
+ " $7, $8, $9, $10, $11, $12"
" FROM known_coins"
" WHERE coin_pub=$1"
" ON CONFLICT DO NOTHING;");
diff --git a/src/exchangedb/pg_insert_drain_profit.c b/src/exchangedb/pg_insert_drain_profit.c
index 34ab0332c..26dcb9d0f 100644
--- a/src/exchangedb/pg_insert_drain_profit.c
+++ b/src/exchangedb/pg_insert_drain_profit.c
@@ -41,11 +41,12 @@ TEH_PG_insert_drain_profit (
GNUNET_PQ_query_param_string (account_section),
GNUNET_PQ_query_param_string (payto_uri),
GNUNET_PQ_query_param_timestamp (&request_timestamp),
- TALER_PQ_query_param_amount (amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ amount),
GNUNET_PQ_query_param_auto_from_type (master_sig),
GNUNET_PQ_query_param_end
};
- /* Used in #postgres_insert_drain_profit() */
+
PREPARE (pg,
"drain_profit_insert",
"INSERT INTO profit_drains "
@@ -53,11 +54,9 @@ TEH_PG_insert_drain_profit (
",account_section"
",payto_uri"
",trigger_date"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",master_sig"
- ") VALUES ($1, $2, $3, $4, $5, $6, $7);");
-
+ ") VALUES ($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"drain_profit_insert",
params);
diff --git a/src/exchangedb/pg_insert_global_fee.c b/src/exchangedb/pg_insert_global_fee.c
index 1c34016a7..0b5406492 100644
--- a/src/exchangedb/pg_insert_global_fee.c
+++ b/src/exchangedb/pg_insert_global_fee.c
@@ -40,9 +40,12 @@ TEH_PG_insert_global_fee (void *cls,
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_timestamp (&start_date),
GNUNET_PQ_query_param_timestamp (&end_date),
- TALER_PQ_query_param_amount (&fees->history),
- TALER_PQ_query_param_amount (&fees->account),
- TALER_PQ_query_param_amount (&fees->purse),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &fees->history),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &fees->account),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &fees->purse),
GNUNET_PQ_query_param_relative_time (&purse_timeout),
GNUNET_PQ_query_param_relative_time (&history_expiration),
GNUNET_PQ_query_param_uint32 (&purse_account_limit),
@@ -119,18 +122,15 @@ TEH_PG_insert_global_fee (void *cls,
"INSERT INTO global_fee "
"(start_date"
",end_date"
- ",history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
",master_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_global_fee",
params);
diff --git a/src/exchangedb/pg_insert_partner.c b/src/exchangedb/pg_insert_partner.c
index 5abb2c910..24c060051 100644
--- a/src/exchangedb/pg_insert_partner.c
+++ b/src/exchangedb/pg_insert_partner.c
@@ -42,7 +42,8 @@ TEH_PG_insert_partner (void *cls,
GNUNET_PQ_query_param_timestamp (&start_date),
GNUNET_PQ_query_param_timestamp (&end_date),
GNUNET_PQ_query_param_relative_time (&wad_frequency),
- TALER_PQ_query_param_amount (wad_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ wad_fee),
GNUNET_PQ_query_param_auto_from_type (master_sig),
GNUNET_PQ_query_param_string (partner_base_url),
GNUNET_PQ_query_param_end
@@ -56,12 +57,11 @@ TEH_PG_insert_partner (void *cls,
" ,start_date"
" ,end_date"
" ,wad_frequency"
- " ,wad_fee_val"
- " ,wad_fee_frac"
+ " ,wad_fee"
" ,master_sig"
" ,partner_base_url"
" ) VALUES "
- " ($1, $2, $3, $4, $5, $6, $7, $8)"
+ " ($1, $2, $3, $4, $5, $6, $7)"
" ON CONFLICT DO NOTHING;");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_partner",
diff --git a/src/exchangedb/pg_insert_purse_request.c b/src/exchangedb/pg_insert_purse_request.c
index f42129ec4..05977b7b2 100644
--- a/src/exchangedb/pg_insert_purse_request.c
+++ b/src/exchangedb/pg_insert_purse_request.c
@@ -56,8 +56,10 @@ TEH_PG_insert_purse_request (
GNUNET_PQ_query_param_uint32 (&age_limit),
GNUNET_PQ_query_param_uint32 (&flags32),
GNUNET_PQ_query_param_bool (in_reserve_quota),
- TALER_PQ_query_param_amount (amount),
- TALER_PQ_query_param_amount (purse_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ purse_fee),
GNUNET_PQ_query_param_auto_from_type (purse_sig),
GNUNET_PQ_query_param_end
};
@@ -74,13 +76,11 @@ TEH_PG_insert_purse_request (
" ,age_limit"
" ,flags"
" ,in_reserve_quota"
- " ,amount_with_fee_val"
- " ,amount_with_fee_frac"
- " ,purse_fee_val"
- " ,purse_fee_frac"
+ " ,amount_with_fee"
+ " ,purse_fee"
" ,purse_sig"
" ) VALUES "
- " ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)"
+ " ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)"
" ON CONFLICT DO NOTHING;");
qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_purse_request",
diff --git a/src/exchangedb/pg_insert_records_by_table.c b/src/exchangedb/pg_insert_records_by_table.c
index ebac7cee0..97a7cdfb2 100644
--- a/src/exchangedb/pg_insert_records_by_table.c
+++ b/src/exchangedb/pg_insert_records_by_table.c
@@ -74,14 +74,20 @@ irbt_cb_table_denominations (struct PostgresClosure *pg,
&td->details.denominations.expire_deposit),
GNUNET_PQ_query_param_timestamp (
&td->details.denominations.expire_legal),
- TALER_PQ_query_param_amount (&td->details.denominations.coin),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.denominations.coin),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.denominations.fees.withdraw),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.denominations.fees.deposit),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.denominations.fees.refresh),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.denominations.fees.refund),
GNUNET_PQ_query_param_end
};
@@ -99,19 +105,14 @@ irbt_cb_table_denominations (struct PostgresClosure *pg,
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val"
- ",coin_frac"
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin"
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9, $10,"
- " $11, $12, $13, $14, $15, $16, $17, $18, $19, $20);");
+ " $11, $12, $13, $14, $15);");
TALER_denom_pub_hash (
&td->details.denominations.denom_pub,
@@ -321,7 +322,9 @@ irbt_cb_table_reserves_in (struct PostgresClosure *pg,
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_uint64 (&td->details.reserves_in.wire_reference),
- TALER_PQ_query_param_amount (&td->details.reserves_in.credit),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.reserves_in.credit),
GNUNET_PQ_query_param_auto_from_type (
&td->details.reserves_in.sender_account_h_payto),
GNUNET_PQ_query_param_string (
@@ -337,14 +340,13 @@ irbt_cb_table_reserves_in (struct PostgresClosure *pg,
"INSERT INTO reserves_in"
"(reserve_in_serial_id"
",wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",wire_source_h_payto"
",exchange_account_section"
",execution_date"
",reserve_pub"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_reserves_in",
params);
@@ -368,7 +370,8 @@ irbt_cb_table_reserves_open_requests (struct PostgresClosure *pg,
&td->details.reserves_open_requests.expiration_date),
GNUNET_PQ_query_param_auto_from_type (
&td->details.reserves_open_requests.reserve_sig),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.reserves_open_requests.reserve_payment),
GNUNET_PQ_query_param_uint32 (
&td->details.reserves_open_requests.requested_purse_limit),
@@ -383,11 +386,10 @@ irbt_cb_table_reserves_open_requests (struct PostgresClosure *pg,
",request_timestamp"
",expiration_date"
",reserve_sig"
- ",reserve_payment_val"
- ",reserve_payment_frac"
+ ",reserve_payment"
",requested_purse_limit"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_reserves_open_requests",
params);
@@ -413,7 +415,8 @@ irbt_cb_table_reserves_open_deposits (
&td->details.reserves_open_deposits.coin_sig),
GNUNET_PQ_query_param_auto_from_type (
&td->details.reserves_open_deposits.reserve_sig),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.reserves_open_deposits.contribution),
GNUNET_PQ_query_param_end
};
@@ -426,10 +429,9 @@ irbt_cb_table_reserves_open_deposits (
",reserve_pub"
",coin_pub"
",coin_sig"
- ",contribution_val"
- ",contribution_frac"
+ ",contribution"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_reserves_open_deposits",
params);
@@ -454,8 +456,12 @@ irbt_cb_table_reserves_close (struct PostgresClosure *pg,
&td->details.reserves_close.wtid),
GNUNET_PQ_query_param_auto_from_type (
&td->details.reserves_close.sender_account_h_payto),
- TALER_PQ_query_param_amount (&td->details.reserves_close.amount),
- TALER_PQ_query_param_amount (&td->details.reserves_close.closing_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.reserves_close.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.reserves_close.closing_fee),
GNUNET_PQ_query_param_auto_from_type (
&td->details.reserves_close.reserve_pub),
GNUNET_PQ_query_param_end
@@ -468,13 +474,11 @@ irbt_cb_table_reserves_close (struct PostgresClosure *pg,
",execution_date"
",wtid"
",wire_target_h_payto"
- ",amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",amount"
+ ",closing_fee"
",reserve_pub"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_reserves_close",
params);
@@ -505,7 +509,8 @@ irbt_cb_table_reserves_out (struct PostgresClosure *pg,
&td->details.reserves_out.reserve_sig),
GNUNET_PQ_query_param_timestamp (
&td->details.reserves_out.execution_date),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.reserves_out.amount_with_fee),
GNUNET_PQ_query_param_end
};
@@ -520,10 +525,9 @@ irbt_cb_table_reserves_out (struct PostgresClosure *pg,
",reserve_uuid"
",reserve_sig"
",execution_date"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7, $8);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_reserves_out",
params);
@@ -727,7 +731,8 @@ irbt_cb_table_refresh_commitments (struct PostgresClosure *pg,
GNUNET_PQ_query_param_auto_from_type (&td->details.refresh_commitments.rc),
GNUNET_PQ_query_param_auto_from_type (
&td->details.refresh_commitments.old_coin_sig),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.refresh_commitments.amount_with_fee),
GNUNET_PQ_query_param_uint32 (
&td->details.refresh_commitments.noreveal_index),
@@ -742,12 +747,11 @@ irbt_cb_table_refresh_commitments (struct PostgresClosure *pg,
"(melt_serial_id"
",rc"
",old_coin_sig"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",noreveal_index"
",old_coin_pub"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_refresh_commitments",
params);
@@ -866,7 +870,9 @@ irbt_cb_table_deposits (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->details.deposits.known_coin_id),
GNUNET_PQ_query_param_auto_from_type (
&td->details.deposits.coin_pub),
- TALER_PQ_query_param_amount (&td->details.deposits.amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.deposits.amount_with_fee),
GNUNET_PQ_query_param_timestamp (&td->details.deposits.wallet_timestamp),
GNUNET_PQ_query_param_timestamp (
&td->details.deposits.exchange_timestamp),
@@ -894,8 +900,7 @@ irbt_cb_table_deposits (struct PostgresClosure *pg,
",shard"
",known_coin_id"
",coin_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",wallet_timestamp"
",exchange_timestamp"
",refund_deadline"
@@ -909,7 +914,7 @@ irbt_cb_table_deposits (struct PostgresClosure *pg,
",policy_details_serial_id"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9, $10,"
- " $11, $12, $13, $14, $15, $16, $17);");
+ " $11, $12, $13, $14, $15, $16);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_deposits",
params);
@@ -931,7 +936,9 @@ irbt_cb_table_refunds (struct PostgresClosure *pg,
GNUNET_PQ_query_param_auto_from_type (&td->details.refunds.coin_pub),
GNUNET_PQ_query_param_auto_from_type (&td->details.refunds.merchant_sig),
GNUNET_PQ_query_param_uint64 (&td->details.refunds.rtransaction_id),
- TALER_PQ_query_param_amount (&td->details.refunds.amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.refunds.amount_with_fee),
GNUNET_PQ_query_param_uint64 (&td->details.refunds.deposit_serial_id),
GNUNET_PQ_query_param_end
};
@@ -943,11 +950,10 @@ irbt_cb_table_refunds (struct PostgresClosure *pg,
",coin_pub"
",merchant_sig"
",rtransaction_id"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",deposit_serial_id"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_refunds",
params);
@@ -972,7 +978,9 @@ irbt_cb_table_wire_out (struct PostgresClosure *pg,
&td->details.wire_out.wire_target_h_payto),
GNUNET_PQ_query_param_string (
td->details.wire_out.exchange_account_section),
- TALER_PQ_query_param_amount (&td->details.wire_out.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.wire_out.amount),
GNUNET_PQ_query_param_end
};
@@ -984,10 +992,9 @@ irbt_cb_table_wire_out (struct PostgresClosure *pg,
",wtid_raw"
",wire_target_h_payto"
",exchange_account_section"
- ",amount_val"
- ",amount_frac"
+ ",amount"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wire_out",
params);
@@ -1042,8 +1049,12 @@ irbt_cb_table_wire_fee (struct PostgresClosure *pg,
GNUNET_PQ_query_param_string (td->details.wire_fee.wire_method),
GNUNET_PQ_query_param_timestamp (&td->details.wire_fee.start_date),
GNUNET_PQ_query_param_timestamp (&td->details.wire_fee.end_date),
- TALER_PQ_query_param_amount (&td->details.wire_fee.fees.wire),
- TALER_PQ_query_param_amount (&td->details.wire_fee.fees.closing),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.wire_fee.fees.wire),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.wire_fee.fees.closing),
GNUNET_PQ_query_param_auto_from_type (&td->details.wire_fee.master_sig),
GNUNET_PQ_query_param_end
};
@@ -1055,13 +1066,11 @@ irbt_cb_table_wire_fee (struct PostgresClosure *pg,
",wire_method"
",start_date"
",end_date"
- ",wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",wire_fee"
+ ",closing_fee"
",master_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wire_fee",
params);
@@ -1085,11 +1094,14 @@ irbt_cb_table_global_fee (struct PostgresClosure *pg,
&td->details.global_fee.start_date),
GNUNET_PQ_query_param_timestamp (
&td->details.global_fee.end_date),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.global_fee.fees.history),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.global_fee.fees.account),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.global_fee.fees.purse),
GNUNET_PQ_query_param_relative_time (
&td->details.global_fee.purse_timeout),
@@ -1108,18 +1120,15 @@ irbt_cb_table_global_fee (struct PostgresClosure *pg,
"(global_fee_serial"
",start_date"
",end_date"
- ",history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
",master_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_global_fee",
params);
@@ -1140,7 +1149,9 @@ irbt_cb_table_recoup (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (&td->details.recoup.coin_sig),
GNUNET_PQ_query_param_auto_from_type (&td->details.recoup.coin_blind),
- TALER_PQ_query_param_amount (&td->details.recoup.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.recoup.amount),
GNUNET_PQ_query_param_timestamp (&td->details.recoup.timestamp),
GNUNET_PQ_query_param_auto_from_type (
&td->details.recoup.coin_pub),
@@ -1154,13 +1165,12 @@ irbt_cb_table_recoup (struct PostgresClosure *pg,
"(recoup_uuid"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",coin_pub"
",reserve_out_serial_id"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_recoup",
params);
@@ -1182,7 +1192,9 @@ irbt_cb_table_recoup_refresh (struct PostgresClosure *pg,
GNUNET_PQ_query_param_auto_from_type (&td->details.recoup_refresh.coin_sig),
GNUNET_PQ_query_param_auto_from_type (
&td->details.recoup_refresh.coin_blind),
- TALER_PQ_query_param_amount (&td->details.recoup_refresh.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.recoup_refresh.amount),
GNUNET_PQ_query_param_timestamp (&td->details.recoup_refresh.timestamp),
GNUNET_PQ_query_param_uint64 (&td->details.recoup_refresh.known_coin_id),
GNUNET_PQ_query_param_auto_from_type (
@@ -1197,14 +1209,13 @@ irbt_cb_table_recoup_refresh (struct PostgresClosure *pg,
"(recoup_refresh_uuid"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",known_coin_id"
",coin_pub"
",rrc_serial"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7, $8);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_recoup_refresh",
params);
@@ -1261,10 +1272,17 @@ irbt_cb_table_policy_details (struct PostgresClosure *pg,
(td->details.policy_details.no_policy_json)
? GNUNET_PQ_query_param_null ()
: TALER_PQ_query_param_json (td->details.policy_details.policy_json),
- TALER_PQ_query_param_amount (&td->details.policy_details.commitment),
- TALER_PQ_query_param_amount (&td->details.policy_details.accumulated_total),
- TALER_PQ_query_param_amount (&td->details.policy_details.fee),
- TALER_PQ_query_param_amount (&td->details.policy_details.transferable),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.policy_details.commitment),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.policy_details.accumulated_total),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.policy_details.fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &td->details.policy_details.transferable),
GNUNET_PQ_query_param_timestamp (&td->details.policy_details.deadline),
GNUNET_PQ_query_param_uint16 (
&td->details.policy_details.fulfillment_state),
@@ -1282,18 +1300,14 @@ irbt_cb_table_policy_details (struct PostgresClosure *pg,
",policy_hash_code"
",policy_json"
",deadline"
- ",commitment_val"
- ",commitment_frac"
- ",accumulated_total_val"
- ",accumulated_total_frac"
- ",fee_val"
- ",fee_frac"
- ",transferable_val"
- ",transferable_frac"
+ ",commitment"
+ ",accumulated_total"
+ ",fee"
+ ",transferable"
",fulfillment_state"
",fulfillment_id"
") VALUES "
- "($1, $2);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_policy_details",
params);
@@ -1366,8 +1380,12 @@ irbt_cb_table_purse_requests (struct PostgresClosure *pg,
&td->details.purse_requests.h_contract_terms),
GNUNET_PQ_query_param_uint32 (&td->details.purse_requests.age_limit),
GNUNET_PQ_query_param_uint32 (&td->details.purse_requests.flags),
- TALER_PQ_query_param_amount (&td->details.purse_requests.amount_with_fee),
- TALER_PQ_query_param_amount (&td->details.purse_requests.purse_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.purse_requests.amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.purse_requests.purse_fee),
GNUNET_PQ_query_param_auto_from_type (
&td->details.purse_requests.purse_sig),
GNUNET_PQ_query_param_end
@@ -1384,13 +1402,11 @@ irbt_cb_table_purse_requests (struct PostgresClosure *pg,
",h_contract_terms"
",age_limit"
",flags"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",amount_with_fee"
+ ",purse_fee"
",purse_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_purse_requests",
params);
@@ -1488,7 +1504,9 @@ irbt_cb_table_purse_deposits (struct PostgresClosure *pg,
GNUNET_PQ_query_param_auto_from_type (
&td->details.purse_deposits.purse_pub),
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_deposits.coin_pub),
- TALER_PQ_query_param_amount (&td->details.purse_deposits.amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.purse_deposits.amount_with_fee),
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_deposits.coin_sig),
GNUNET_PQ_query_param_end
};
@@ -1500,11 +1518,10 @@ irbt_cb_table_purse_deposits (struct PostgresClosure *pg,
",partner_serial_id"
",purse_pub"
",coin_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",coin_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_purse_deposits",
params);
@@ -1568,7 +1585,8 @@ irbt_cb_table_history_requests (struct PostgresClosure *pg,
&td->details.history_requests.request_timestamp),
GNUNET_PQ_query_param_auto_from_type (
&td->details.history_requests.reserve_sig),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.history_requests.history_fee),
GNUNET_PQ_query_param_end
};
@@ -1580,10 +1598,9 @@ irbt_cb_table_history_requests (struct PostgresClosure *pg,
",reserve_pub"
",request_timestamp"
",reserve_sig"
- ",history_fee_val"
- ",history_fee_frac"
+ ",history_fee"
") VALUES "
- "($1, $2, $3, $4, $5, $6);");
+ "($1, $2, $3, $4, $5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_history_requests",
params);
@@ -1608,9 +1625,11 @@ irbt_cb_table_close_requests (struct PostgresClosure *pg,
&td->details.close_requests.close_timestamp),
GNUNET_PQ_query_param_auto_from_type (
&td->details.close_requests.reserve_sig),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.close_requests.close),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.close_requests.close_fee),
GNUNET_PQ_query_param_string (
td->details.close_requests.payto_uri),
@@ -1624,13 +1643,11 @@ irbt_cb_table_close_requests (struct PostgresClosure *pg,
",reserve_pub"
",close_timestamp"
",reserve_sig"
- ",close_val"
- ",close_frac"
- ",close_fee_val"
- ",close_fee_frac"
+ ",close"
+ ",close_fee"
",payto_uri"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_close_requests",
params);
@@ -1651,7 +1668,9 @@ irbt_cb_table_wads_out (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (&td->details.wads_out.wad_id),
GNUNET_PQ_query_param_uint64 (&td->details.wads_out.partner_serial_id),
- TALER_PQ_query_param_amount (&td->details.wads_out.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.wads_out.amount),
GNUNET_PQ_query_param_timestamp (&td->details.wads_out.execution_time),
GNUNET_PQ_query_param_end
};
@@ -1662,11 +1681,10 @@ irbt_cb_table_wads_out (struct PostgresClosure *pg,
"(wad_out_serial_id"
",wad_id"
",partner_serial_id"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",execution_time"
") VALUES "
- "($1, $2, $3, $4, $5, $6);");
+ "($1, $2, $3, $4, $5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wads_out",
params);
@@ -1697,11 +1715,14 @@ irbt_cb_table_wads_out_entries (struct PostgresClosure *pg,
&td->details.wads_out_entries.purse_expiration),
GNUNET_PQ_query_param_timestamp (
&td->details.wads_out_entries.merge_timestamp),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_out_entries.amount_with_fee),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_out_entries.wad_fee),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_out_entries.deposit_fees),
GNUNET_PQ_query_param_auto_from_type (
&td->details.wads_out_entries.reserve_sig),
@@ -1720,16 +1741,13 @@ irbt_cb_table_wads_out_entries (struct PostgresClosure *pg,
",h_contract"
",purse_expiration"
",merge_timestamp"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",wad_fee_val"
- ",wad_fee_frac"
- ",deposit_fees_val"
- ",deposit_fees_frac"
+ ",amount_with_fee"
+ ",wad_fee"
+ ",deposit_fees"
",reserve_sig"
",purse_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wads_out_entries",
params);
@@ -1750,7 +1768,9 @@ irbt_cb_table_wads_in (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (&td->details.wads_in.wad_id),
GNUNET_PQ_query_param_string (td->details.wads_in.origin_exchange_url),
- TALER_PQ_query_param_amount (&td->details.wads_in.amount),
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
+ &td->details.wads_in.amount),
GNUNET_PQ_query_param_timestamp (&td->details.wads_in.arrival_time),
GNUNET_PQ_query_param_end
};
@@ -1761,11 +1781,10 @@ irbt_cb_table_wads_in (struct PostgresClosure *pg,
"(wad_in_serial_id"
",wad_id"
",origin_exchange_url"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",arrival_time"
") VALUES "
- "($1, $2, $3, $4, $5, $6);");
+ "($1, $2, $3, $4, $5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wads_in",
params);
@@ -1794,11 +1813,14 @@ irbt_cb_table_wads_in_entries (struct PostgresClosure *pg,
&td->details.wads_in_entries.purse_expiration),
GNUNET_PQ_query_param_timestamp (
&td->details.wads_in_entries.merge_timestamp),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_in_entries.amount_with_fee),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_in_entries.wad_fee),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.wads_in_entries.deposit_fees),
GNUNET_PQ_query_param_auto_from_type (
&td->details.wads_in_entries.reserve_sig),
@@ -1817,16 +1839,13 @@ irbt_cb_table_wads_in_entries (struct PostgresClosure *pg,
",h_contract"
",purse_expiration"
",merge_timestamp"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",wad_fee_val"
- ",wad_fee_frac"
- ",deposit_fees_val"
- ",deposit_fees_frac"
+ ",amount_with_fee"
+ ",wad_fee"
+ ",deposit_fees"
",reserve_sig"
",purse_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_wads_in_entries",
params);
@@ -1853,7 +1872,8 @@ irbt_cb_table_profit_drains (struct PostgresClosure *pg,
td->details.profit_drains.payto_uri),
GNUNET_PQ_query_param_timestamp (
&td->details.profit_drains.trigger_date),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.profit_drains.amount),
GNUNET_PQ_query_param_auto_from_type (
&td->details.profit_drains.master_sig),
@@ -1868,11 +1888,10 @@ irbt_cb_table_profit_drains (struct PostgresClosure *pg,
",account_section"
",payto_uri"
",trigger_date"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",master_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8);");
+ "($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_profit_drains",
params);
@@ -1939,7 +1958,8 @@ irbt_cb_table_aml_history (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (
&td->details.aml_history.h_payto),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.aml_history.new_threshold),
GNUNET_PQ_query_param_uint32 (
&status32),
@@ -1965,8 +1985,7 @@ irbt_cb_table_aml_history (struct PostgresClosure *pg,
"INSERT INTO aml_history"
"(aml_history_serial_id"
",h_payto"
- ",new_threshold_val"
- ",new_threshold_frac"
+ ",new_threshold"
",new_status"
",decision_time"
",justification"
@@ -1975,7 +1994,7 @@ irbt_cb_table_aml_history (struct PostgresClosure *pg,
",decider_pub"
",decider_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_aml_history",
params);
@@ -2076,7 +2095,8 @@ irbt_cb_table_age_withdraw (struct PostgresClosure *pg,
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (
&td->details.age_withdraw.h_commitment),
- TALER_PQ_query_param_amount (
+ TALER_PQ_query_param_amount_tuple (
+ pg->conn,
&td->details.age_withdraw.amount_with_fee),
GNUNET_PQ_query_param_uint16 (
&td->details.age_withdraw.max_age),
@@ -2095,14 +2115,13 @@ irbt_cb_table_age_withdraw (struct PostgresClosure *pg,
"INSERT INTO age_withdraw"
"(age_withdraw_commitment_id"
",h_commitment"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",max_age"
",reserve_pub"
",reserve_sig"
",noreveal_index"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ "($1, $2, $3, $4, $5, $6, $7, $8);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_age_withdraw",
params);
diff --git a/src/exchangedb/pg_insert_refund.c b/src/exchangedb/pg_insert_refund.c
index 020750870..9d35cbfd4 100644
--- a/src/exchangedb/pg_insert_refund.c
+++ b/src/exchangedb/pg_insert_refund.c
@@ -37,14 +37,14 @@ TEH_PG_insert_refund (void *cls,
GNUNET_PQ_query_param_auto_from_type (&refund->details.merchant_sig),
GNUNET_PQ_query_param_auto_from_type (&refund->details.h_contract_terms),
GNUNET_PQ_query_param_uint64 (&refund->details.rtransaction_id),
- TALER_PQ_query_param_amount (&refund->details.refund_amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &refund->details.refund_amount),
GNUNET_PQ_query_param_end
};
GNUNET_assert (GNUNET_YES ==
TALER_amount_cmp_currency (&refund->details.refund_amount,
&refund->details.refund_fee));
-
PREPARE (pg,
"insert_refund",
"INSERT INTO refunds "
@@ -52,9 +52,8 @@ TEH_PG_insert_refund (void *cls,
",deposit_serial_id"
",merchant_sig"
",rtransaction_id"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ") SELECT $1, deposit_serial_id, $3, $5, $6, $7"
+ ",amount_with_fee"
+ ") SELECT $1, deposit_serial_id, $3, $5, $6"
" FROM deposits"
" WHERE coin_pub=$1"
" AND h_contract_terms=$4"
diff --git a/src/exchangedb/pg_insert_reserve_closed.c b/src/exchangedb/pg_insert_reserve_closed.c
index 963a38226..58322fe92 100644
--- a/src/exchangedb/pg_insert_reserve_closed.c
+++ b/src/exchangedb/pg_insert_reserve_closed.c
@@ -51,13 +51,14 @@ TEH_PG_insert_reserve_closed (
GNUNET_PQ_query_param_timestamp (&execution_date),
GNUNET_PQ_query_param_auto_from_type (wtid),
GNUNET_PQ_query_param_auto_from_type (&h_payto),
- TALER_PQ_query_param_amount (amount_with_fee),
- TALER_PQ_query_param_amount (closing_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ amount_with_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ closing_fee),
GNUNET_PQ_query_param_uint64 (&close_request_row),
GNUNET_PQ_query_param_end
};
- /* Used in #postgres_insert_reserve_closed() */
PREPARE (pg,
"reserves_close_insert",
"INSERT INTO reserves_close "
@@ -65,12 +66,10 @@ TEH_PG_insert_reserve_closed (
",execution_date"
",wtid"
",wire_target_h_payto"
- ",amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",amount"
+ ",closing_fee"
",close_request_row"
- ") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9);");
+ ") VALUES ($1, $2, $3, $4, $5, $6, $7);");
qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
"reserves_close_insert",
diff --git a/src/exchangedb/pg_insert_reserve_open_deposit.c b/src/exchangedb/pg_insert_reserve_open_deposit.c
index 8bf70e7b2..25fbcbde9 100644
--- a/src/exchangedb/pg_insert_reserve_open_deposit.c
+++ b/src/exchangedb/pg_insert_reserve_open_deposit.c
@@ -44,7 +44,8 @@ TEH_PG_insert_reserve_open_deposit (
GNUNET_PQ_query_param_auto_from_type (coin_sig),
GNUNET_PQ_query_param_auto_from_type (reserve_sig),
GNUNET_PQ_query_param_auto_from_type (reserve_pub),
- TALER_PQ_query_param_amount (coin_total),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ coin_total),
GNUNET_PQ_query_param_end
};
struct GNUNET_PQ_ResultSpec rs[] = {
@@ -58,7 +59,7 @@ TEH_PG_insert_reserve_open_deposit (
"SELECT "
" out_insufficient_funds"
" FROM exchange_do_reserve_open_deposit"
- " ($1,$2,$3,$4,$5,$6,$7);");
+ " ($1,$2,$3,$4,$5,$6);");
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"insert_reserve_open_deposit",
params,
diff --git a/src/exchangedb/pg_insert_wire_fee.c b/src/exchangedb/pg_insert_wire_fee.c
index 6d94e3d56..b6070c929 100644
--- a/src/exchangedb/pg_insert_wire_fee.c
+++ b/src/exchangedb/pg_insert_wire_fee.c
@@ -40,8 +40,10 @@ TEH_PG_insert_wire_fee (void *cls,
GNUNET_PQ_query_param_string (type),
GNUNET_PQ_query_param_timestamp (&start_date),
GNUNET_PQ_query_param_timestamp (&end_date),
- TALER_PQ_query_param_amount (&fees->wire),
- TALER_PQ_query_param_amount (&fees->closing),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &fees->wire),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &fees->closing),
GNUNET_PQ_query_param_auto_from_type (master_sig),
GNUNET_PQ_query_param_end
};
@@ -89,20 +91,17 @@ TEH_PG_insert_wire_fee (void *cls,
return GNUNET_DB_STATUS_SUCCESS_NO_RESULTS;
}
- /* Used in #postgres_insert_wire_fee */
PREPARE (pg,
"insert_wire_fee",
"INSERT INTO wire_fee "
"(wire_method"
",start_date"
",end_date"
- ",wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",wire_fee"
+ ",closing_fee"
",master_sig"
") VALUES "
- "($1, $2, $3, $4, $5, $6, $7, $8);");
+ "($1, $2, $3, $4, $5, $6);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_wire_fee",
params);
diff --git a/src/exchangedb/pg_iterate_denomination_info.c b/src/exchangedb/pg_iterate_denomination_info.c
index ba7026ebc..cab51d5ce 100644
--- a/src/exchangedb/pg_iterate_denomination_info.c
+++ b/src/exchangedb/pg_iterate_denomination_info.c
@@ -155,7 +155,6 @@ TEH_PG_iterate_denomination_info (void *cls,
.pg = pg
};
- /* Used in #postgres_iterate_denomination_info() */
PREPARE (pg,
"denomination_iterate",
"SELECT"
@@ -165,16 +164,11 @@ TEH_PG_iterate_denomination_info (void *cls,
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val" /* value of this denom */
- ",coin_frac" /* fractional value of this denom */
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin" /* value of this denom */
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",denom_pub"
",age_mask"
" FROM denominations;");
diff --git a/src/exchangedb/pg_iterate_denominations.c b/src/exchangedb/pg_iterate_denominations.c
index 1549ed77a..684aa165a 100644
--- a/src/exchangedb/pg_iterate_denominations.c
+++ b/src/exchangedb/pg_iterate_denominations.c
@@ -143,7 +143,6 @@ TEH_PG_iterate_denominations (void *cls,
.pg = pg
};
- /* Used in #postgres_iterate_denominations() */
PREPARE (pg,
"select_denominations",
"SELECT"
@@ -154,24 +153,17 @@ TEH_PG_iterate_denominations (void *cls,
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val" /* value of this denom */
- ",coin_frac" /* fractional value of this denom */
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin" /* value of this denom */
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",denom_type"
",age_mask"
",denom_pub"
" FROM denominations"
" LEFT JOIN "
" denomination_revocations USING (denominations_serial);");
-
-
return GNUNET_PQ_eval_prepared_multi_select (pg->conn,
"select_denominations",
params,
diff --git a/src/exchangedb/pg_iterate_reserve_close_info.c b/src/exchangedb/pg_iterate_reserve_close_info.c
index f1b2d452b..ff0a813c3 100644
--- a/src/exchangedb/pg_iterate_reserve_close_info.c
+++ b/src/exchangedb/pg_iterate_reserve_close_info.c
@@ -113,8 +113,7 @@ TEH_PG_iterate_reserve_close_info (
PREPARE (pg,
"iterate_reserve_close_info",
"SELECT"
- " amount_val"
- ",amount_frac"
+ " amount"
",execution_date"
" FROM reserves_close"
" WHERE wire_target_h_payto=$1"
diff --git a/src/exchangedb/pg_lookup_denomination_key.c b/src/exchangedb/pg_lookup_denomination_key.c
index 759af1b5c..20eb703dd 100644
--- a/src/exchangedb/pg_lookup_denomination_key.c
+++ b/src/exchangedb/pg_lookup_denomination_key.c
@@ -68,16 +68,11 @@ TEH_PG_lookup_denomination_key (
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val"
- ",coin_frac"
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin"
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",age_mask"
" FROM denominations"
" WHERE denom_pub_hash=$1;");
diff --git a/src/exchangedb/pg_lookup_global_fee_by_time.c b/src/exchangedb/pg_lookup_global_fee_by_time.c
index 0119c2cd1..c3a6ec8b7 100644
--- a/src/exchangedb/pg_lookup_global_fee_by_time.c
+++ b/src/exchangedb/pg_lookup_global_fee_by_time.c
@@ -165,12 +165,9 @@ TEH_PG_lookup_global_fee_by_time (
PREPARE (pg,
"lookup_global_fee_by_time",
"SELECT"
- " history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ " history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
diff --git a/src/exchangedb/pg_lookup_records_by_table.c b/src/exchangedb/pg_lookup_records_by_table.c
index aec8cb61e..92378c3f2 100644
--- a/src/exchangedb/pg_lookup_records_by_table.c
+++ b/src/exchangedb/pg_lookup_records_by_table.c
@@ -2872,16 +2872,11 @@ TEH_PG_lookup_records_by_table (void *cls,
",expire_withdraw"
",expire_deposit"
",expire_legal"
- ",coin_val"
- ",coin_frac"
- ",fee_withdraw_val"
- ",fee_withdraw_frac"
- ",fee_deposit_val"
- ",fee_deposit_frac"
- ",fee_refresh_val"
- ",fee_refresh_frac"
- ",fee_refund_val"
- ",fee_refund_frac"
+ ",coin"
+ ",fee_withdraw"
+ ",fee_deposit"
+ ",fee_refresh"
+ ",fee_refund"
",age_mask"
" FROM denominations"
" WHERE denominations_serial > $1"
@@ -2954,8 +2949,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" reserve_in_serial_id AS serial"
",reserve_pub"
",wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",wire_source_h_payto"
",exchange_account_section"
",execution_date"
@@ -2972,10 +2966,8 @@ TEH_PG_lookup_records_by_table (void *cls,
",execution_date"
",wtid"
",wire_target_h_payto"
- ",amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",amount"
+ ",closing_fee"
" FROM reserves_close"
" WHERE close_uuid > $1"
" ORDER BY close_uuid ASC;");
@@ -2989,8 +2981,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",request_timestamp"
",expiration_date"
",reserve_sig"
- ",reserve_payment_val"
- ",reserve_payment_frac"
+ ",reserve_payment"
",requested_purse_limit"
" FROM reserves_open_requests"
" WHERE open_request_uuid > $1"
@@ -3005,8 +2996,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",reserve_pub"
",coin_pub"
",coin_sig"
- ",contribution_val"
- ",contribution_frac"
+ ",contribution"
" FROM reserves_open_deposits"
" WHERE reserves_open_deposit_uuid > $1"
" ORDER BY reserves_open_deposit_uuid ASC;");
@@ -3022,8 +3012,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",reserve_uuid"
",reserve_sig"
",execution_date"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
" FROM reserves_out"
" JOIN reserves USING (reserve_uuid)"
" WHERE reserve_out_serial_id > $1"
@@ -3099,8 +3088,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" melt_serial_id AS serial"
",rc"
",old_coin_sig"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",noreveal_index"
",old_coin_pub"
" FROM refresh_commitments"
@@ -3143,8 +3131,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",shard"
",coin_pub"
",known_coin_id"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",wallet_timestamp"
",exchange_timestamp"
",refund_deadline"
@@ -3169,8 +3156,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",coin_pub"
",merchant_sig"
",rtransaction_id"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",deposit_serial_id"
" FROM refunds"
" WHERE refund_serial_id > $1"
@@ -3185,8 +3171,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",wtid_raw"
",wire_target_h_payto"
",exchange_account_section"
- ",amount_val"
- ",amount_frac"
+ ",amount"
" FROM wire_out"
" WHERE wireout_uuid > $1"
" ORDER BY wireout_uuid ASC;");
@@ -3210,10 +3195,8 @@ TEH_PG_lookup_records_by_table (void *cls,
",wire_method"
",start_date"
",end_date"
- ",wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",wire_fee"
+ ",closing_fee"
",master_sig"
" FROM wire_fee"
" WHERE wire_fee_serial > $1"
@@ -3226,12 +3209,9 @@ TEH_PG_lookup_records_by_table (void *cls,
" global_fee_serial AS serial"
",start_date"
",end_date"
- ",history_fee_val"
- ",history_fee_frac"
- ",account_fee_val"
- ",account_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",history_fee"
+ ",account_fee"
+ ",purse_fee"
",purse_timeout"
",history_expiration"
",purse_account_limit"
@@ -3247,8 +3227,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" recoup_uuid AS serial"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",coin_pub"
",reserve_out_serial_id"
@@ -3263,8 +3242,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" recoup_refresh_uuid AS serial"
",coin_sig"
",coin_blind"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",recoup_timestamp"
",coin_pub"
",known_coin_id"
@@ -3297,10 +3275,8 @@ TEH_PG_lookup_records_by_table (void *cls,
",h_contract_terms"
",age_limit"
",flags"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",purse_fee_val"
- ",purse_fee_frac"
+ ",amount_with_fee"
+ ",purse_fee"
",purse_sig"
" FROM purse_requests"
" WHERE purse_requests_serial_id > $1"
@@ -3340,8 +3316,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",partner_serial_id"
",purse_pub"
",coin_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",coin_sig"
" FROM purse_deposits"
" WHERE purse_deposit_serial_id > $1"
@@ -3368,8 +3343,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",reserve_pub"
",request_timestamp"
",reserve_sig"
- ",history_fee_val"
- ",history_fee_frac"
+ ",history_fee"
" FROM history_requests"
" WHERE history_request_serial_id > $1"
" ORDER BY history_request_serial_id ASC;");
@@ -3382,8 +3356,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",reserve_pub"
",close_timestamp"
",reserve_sig"
- ",close_val"
- ",close_frac"
+ ",close"
" FROM close_requests"
" WHERE close_request_serial_id > $1"
" ORDER BY close_request_serial_id ASC;");
@@ -3395,8 +3368,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" wad_out_serial_id"
",wad_id"
",partner_serial_id"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",execution_time"
" FROM wads_out"
" WHERE wad_out_serial_id > $1"
@@ -3412,12 +3384,9 @@ TEH_PG_lookup_records_by_table (void *cls,
",h_contract"
",purse_expiration"
",merge_timestamp"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",wad_fee_val"
- ",wad_fee_frac"
- ",deposit_fees_val"
- ",deposit_fees_frac"
+ ",amount_with_fee"
+ ",wad_fee"
+ ",deposit_fees"
",reserve_sig"
",purse_sig"
" FROM wad_out_entries"
@@ -3431,8 +3400,7 @@ TEH_PG_lookup_records_by_table (void *cls,
" wad_in_serial_id"
",wad_id"
",origin_exchange_url"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",arrival_time"
" FROM wads_in"
" WHERE wad_in_serial_id > $1"
@@ -3448,12 +3416,9 @@ TEH_PG_lookup_records_by_table (void *cls,
",h_contract"
",purse_expiration"
",merge_timestamp"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",wad_fee_val"
- ",wad_fee_frac"
- ",deposit_fees_val"
- ",deposit_fees_frac"
+ ",amount_with_fee"
+ ",wad_fee"
+ ",deposit_fees"
",reserve_sig"
",purse_sig"
" FROM wad_in_entries"
@@ -3469,8 +3434,7 @@ TEH_PG_lookup_records_by_table (void *cls,
",account_section"
",payto_uri"
",trigger_date"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",master_sig"
" FROM profit_drains"
" WHERE profit_drain_serial_id > $1"
@@ -3498,8 +3462,7 @@ TEH_PG_lookup_records_by_table (void *cls,
"SELECT"
" aml_history_serial_id"
",h_payto"
- ",new_threshold_val"
- ",new_threshold_frac"
+ ",new_threshold"
",new_status"
",decision_time"
",justification"
@@ -3543,8 +3506,7 @@ TEH_PG_lookup_records_by_table (void *cls,
"SELECT"
" age_withdraw_id"
",h_commitment"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",max_age"
",reserve_pub"
",reserve_sig"
diff --git a/src/exchangedb/pg_lookup_transfer_by_deposit.c b/src/exchangedb/pg_lookup_transfer_by_deposit.c
index a9de0dd6d..5a3043585 100644
--- a/src/exchangedb/pg_lookup_transfer_by_deposit.c
+++ b/src/exchangedb/pg_lookup_transfer_by_deposit.c
@@ -76,12 +76,10 @@ TEH_PG_lookup_transfer_by_deposit (
"SELECT"
" aggregation_tracking.wtid_raw"
",wire_out.execution_date"
- ",dep.amount_with_fee_val"
- ",dep.amount_with_fee_frac"
+ ",dep.amount_with_fee"
",dep.wire_salt"
",wt.payto_uri"
- ",denom.fee_deposit_val"
- ",denom.fee_deposit_frac"
+ ",denom.fee_deposit"
" FROM deposits dep"
" JOIN wire_targets wt"
" USING (wire_target_h_payto)"
@@ -167,10 +165,8 @@ TEH_PG_lookup_transfer_by_deposit (
" agt.legitimization_requirement_serial_id"
",dep.wire_salt"
",wt.payto_uri"
- ",dep.amount_with_fee_val"
- ",dep.amount_with_fee_frac"
- ",denom.fee_deposit_val"
- ",denom.fee_deposit_frac"
+ ",dep.amount_with_fee"
+ ",denom.fee_deposit"
",dep.wire_deadline"
",aml.status"
",aml.kyc_requirement"
diff --git a/src/exchangedb/pg_lookup_wire_fee_by_time.c b/src/exchangedb/pg_lookup_wire_fee_by_time.c
index 89be4087a..775232a48 100644
--- a/src/exchangedb/pg_lookup_wire_fee_by_time.c
+++ b/src/exchangedb/pg_lookup_wire_fee_by_time.c
@@ -142,10 +142,8 @@ TEH_PG_lookup_wire_fee_by_time (
PREPARE (pg,
"lookup_wire_fee_by_time",
"SELECT"
- " wire_fee_val"
- ",wire_fee_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ " wire_fee"
+ ",closing_fee"
" FROM wire_fee"
" WHERE wire_method=$1"
" AND end_date > $2"
diff --git a/src/exchangedb/pg_lookup_wire_transfer.c b/src/exchangedb/pg_lookup_wire_transfer.c
index 5d1ad25f5..500ec2890 100644
--- a/src/exchangedb/pg_lookup_wire_transfer.c
+++ b/src/exchangedb/pg_lookup_wire_transfer.c
@@ -159,10 +159,8 @@ TEH_PG_lookup_wire_transfer (
",kc.coin_pub"
",deposits.merchant_pub"
",wire_out.execution_date"
- ",deposits.amount_with_fee_val"
- ",deposits.amount_with_fee_frac"
- ",denom.fee_deposit_val"
- ",denom.fee_deposit_frac"
+ ",deposits.amount_with_fee"
+ ",denom.fee_deposit"
",denom.denom_pub"
" FROM aggregation_tracking"
" JOIN deposits"
diff --git a/src/exchangedb/pg_persist_policy_details.c b/src/exchangedb/pg_persist_policy_details.c
index 3bc7afa98..7db31039f 100644
--- a/src/exchangedb/pg_persist_policy_details.c
+++ b/src/exchangedb/pg_persist_policy_details.c
@@ -39,10 +39,14 @@ TEH_PG_persist_policy_details (
GNUNET_PQ_query_param_auto_from_type (&details->hash_code),
TALER_PQ_query_param_json (details->policy_json),
GNUNET_PQ_query_param_timestamp (&details->deadline),
- TALER_PQ_query_param_amount (&details->commitment),
- TALER_PQ_query_param_amount (&details->accumulated_total),
- TALER_PQ_query_param_amount (&details->policy_fee),
- TALER_PQ_query_param_amount (&details->transferable_amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &details->commitment),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &details->accumulated_total),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &details->policy_fee),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ &details->transferable_amount),
GNUNET_PQ_query_param_auto_from_type (&details->fulfillment_state),
(details->no_policy_fulfillment_id)
? GNUNET_PQ_query_param_null ()
@@ -63,11 +67,10 @@ TEH_PG_persist_policy_details (
"call_insert_or_update_policy_details",
"SELECT"
" out_policy_details_serial_id AS policy_details_serial_id"
- ",out_accumulated_total_val AS accumulated_total_val"
- ",out_accumulated_total_frac AS accumulated_total_frac"
+ ",out_accumulated_total AS accumulated_total"
",out_fulfillment_state AS fulfillment_state"
" FROM exchange_do_insert_or_update_policy_details"
- "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13);");
+ "($1, $2, $3, $4, $5, $6, $7, $8, $9);");
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"call_insert_or_update_policy_details",
params,
diff --git a/src/exchangedb/pg_profit_drains_get_pending.c b/src/exchangedb/pg_profit_drains_get_pending.c
index f4a5d4517..c844a3f38 100644
--- a/src/exchangedb/pg_profit_drains_get_pending.c
+++ b/src/exchangedb/pg_profit_drains_get_pending.c
@@ -66,8 +66,7 @@ TEH_PG_profit_drains_get_pending (
",account_section"
",payto_uri"
",trigger_date"
- ",amount_val"
- ",amount_frac"
+ ",amount"
",master_sig"
" FROM profit_drains"
" WHERE NOT executed"
diff --git a/src/exchangedb/pg_select_account_merges_above_serial_id.c b/src/exchangedb/pg_select_account_merges_above_serial_id.c
index 95c2f93a1..6c3c81121 100644
--- a/src/exchangedb/pg_select_account_merges_above_serial_id.c
+++ b/src/exchangedb/pg_select_account_merges_above_serial_id.c
@@ -168,12 +168,10 @@ TEH_PG_select_account_merges_above_serial_id (
",am.purse_pub"
",pr.h_contract_terms"
",pr.purse_expiration"
- ",pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
+ ",pr.amount_with_fee"
",pr.age_limit"
",pr.flags"
- ",pr.purse_fee_val"
- ",pr.purse_fee_frac"
+ ",pr.purse_fee"
",pm.merge_timestamp"
",am.reserve_sig"
" FROM account_merges am"
diff --git a/src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c b/src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c
index d24c6245b..0d5d0ee25 100644
--- a/src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c
+++ b/src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c
@@ -135,8 +135,7 @@ TEH_PG_select_aggregation_amounts_for_kyc_check (
PREPARE (pg,
"select_kyc_relevant_aggregation_events",
"SELECT"
- " amount_val"
- ",amount_frac"
+ " amount"
",execution_date AS date"
" FROM wire_out"
" WHERE wire_target_h_payto=$1"
diff --git a/src/exchangedb/pg_select_aggregation_transient.c b/src/exchangedb/pg_select_aggregation_transient.c
index d8d7ae701..f9b6193ed 100644
--- a/src/exchangedb/pg_select_aggregation_transient.c
+++ b/src/exchangedb/pg_select_aggregation_transient.c
@@ -53,8 +53,7 @@ TEH_PG_select_aggregation_transient (
PREPARE (pg,
"select_aggregation_transient",
"SELECT"
- " amount_val"
- " ,amount_frac"
+ " amount"
" ,wtid_raw"
" FROM aggregation_transient"
" WHERE wire_target_h_payto=$1"
diff --git a/src/exchangedb/pg_select_aml_history.c b/src/exchangedb/pg_select_aml_history.c
index c54a3ef0c..0461e0d9b 100644
--- a/src/exchangedb/pg_select_aml_history.c
+++ b/src/exchangedb/pg_select_aml_history.c
@@ -138,8 +138,7 @@ TEH_PG_select_aml_history (
PREPARE (pg,
"lookup_aml_history",
"SELECT"
- " new_threshold_val"
- ",new_threshold_frac"
+ " new_threshold"
",new_status"
",decision_time"
",justification"
diff --git a/src/exchangedb/pg_select_aml_process.c b/src/exchangedb/pg_select_aml_process.c
index 5df5fe657..c34cae4bb 100644
--- a/src/exchangedb/pg_select_aml_process.c
+++ b/src/exchangedb/pg_select_aml_process.c
@@ -140,8 +140,7 @@ TEH_PG_select_aml_process (
"SELECT"
" aml_status_serial_id"
",h_payto"
- ",threshold_val"
- ",threshold_frac"
+ ",threshold"
",status"
" FROM aml_status"
" WHERE aml_status_serial_id > $2"
@@ -153,8 +152,7 @@ TEH_PG_select_aml_process (
"SELECT"
" aml_status_serial_id"
",h_payto"
- ",threshold_val"
- ",threshold_frac"
+ ",threshold"
",status"
" FROM aml_status"
" WHERE aml_status_serial_id < $2"
diff --git a/src/exchangedb/pg_select_aml_threshold.c b/src/exchangedb/pg_select_aml_threshold.c
index f78a71fff..23286f029 100644
--- a/src/exchangedb/pg_select_aml_threshold.c
+++ b/src/exchangedb/pg_select_aml_threshold.c
@@ -54,8 +54,7 @@ TEH_PG_select_aml_threshold (
PREPARE (pg,
"select_aml_threshold",
"SELECT"
- " threshold_val"
- ",threshold_frac"
+ " threshold"
",status"
",kyc_requirement"
" FROM aml_status"
diff --git a/src/exchangedb/pg_select_deposits_above_serial_id.c b/src/exchangedb/pg_select_deposits_above_serial_id.c
index b3258bd4c..102604f24 100644
--- a/src/exchangedb/pg_select_deposits_above_serial_id.c
+++ b/src/exchangedb/pg_select_deposits_above_serial_id.c
@@ -162,8 +162,7 @@ TEH_PG_select_deposits_above_serial_id (
PREPARE (pg,
"audit_get_deposits_incr",
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
",wallet_timestamp"
",exchange_timestamp"
",merchant_pub"
diff --git a/src/exchangedb/pg_select_deposits_missing_wire.c b/src/exchangedb/pg_select_deposits_missing_wire.c
index e638c88e9..a18a7abf8 100644
--- a/src/exchangedb/pg_select_deposits_missing_wire.c
+++ b/src/exchangedb/pg_select_deposits_missing_wire.c
@@ -143,8 +143,7 @@ TEH_PG_select_deposits_missing_wire (void *cls,
"SELECT"
" deposit_serial_id"
",coin_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",payto_uri"
",wire_deadline"
",done"
diff --git a/src/exchangedb/pg_select_history_requests_above_serial_id.c b/src/exchangedb/pg_select_history_requests_above_serial_id.c
index 36902e0ab..2ff2f989c 100644
--- a/src/exchangedb/pg_select_history_requests_above_serial_id.c
+++ b/src/exchangedb/pg_select_history_requests_above_serial_id.c
@@ -136,8 +136,7 @@ TEH_PG_select_history_requests_above_serial_id (
"audit_get_history_requests_incr",
"SELECT"
" history_request_serial_id"
- ",history_fee_val"
- ",history_fee_frac"
+ ",history_fee"
",request_timestamp"
",reserve_pub"
",reserve_sig"
diff --git a/src/exchangedb/pg_select_merge_amounts_for_kyc_check.c b/src/exchangedb/pg_select_merge_amounts_for_kyc_check.c
index b1bdd1450..417d78ec7 100644
--- a/src/exchangedb/pg_select_merge_amounts_for_kyc_check.c
+++ b/src/exchangedb/pg_select_merge_amounts_for_kyc_check.c
@@ -135,8 +135,7 @@ TEH_PG_select_merge_amounts_for_kyc_check (
PREPARE (pg,
"select_kyc_relevant_merge_events",
"SELECT"
- " amount_with_fee_val AS amount_val"
- ",amount_with_fee_frac AS amount_frac"
+ " amount_with_fee AS amount"
",merge_timestamp AS date"
" FROM account_merges"
" JOIN purse_merges USING (purse_pub)"
diff --git a/src/exchangedb/pg_select_purse.c b/src/exchangedb/pg_select_purse.c
index 6496d4a28..7c0a638ac 100644
--- a/src/exchangedb/pg_select_purse.c
+++ b/src/exchangedb/pg_select_purse.c
@@ -70,10 +70,8 @@ TEH_PG_select_purse (
",pr.purse_creation"
",pr.purse_expiration"
",pr.h_contract_terms"
- ",pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
- ",pr.balance_val"
- ",pr.balance_frac"
+ ",pr.amount_with_fee"
+ ",pr.balance"
",pm.merge_timestamp"
",pd.purse_sig IS NOT NULL AS purse_deleted"
" FROM purse_requests pr"
diff --git a/src/exchangedb/pg_select_purse_by_merge_pub.c b/src/exchangedb/pg_select_purse_by_merge_pub.c
index 965b27ba3..d035b3255 100644
--- a/src/exchangedb/pg_select_purse_by_merge_pub.c
+++ b/src/exchangedb/pg_select_purse_by_merge_pub.c
@@ -60,7 +60,6 @@ TEH_PG_select_purse_by_merge_pub (
GNUNET_PQ_result_spec_end
};
-
PREPARE (pg,
"select_purse_by_merge_pub",
"SELECT "
@@ -68,14 +67,11 @@ TEH_PG_select_purse_by_merge_pub (
",purse_expiration"
",h_contract_terms"
",age_limit"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
- ",balance_val"
- ",balance_frac"
+ ",amount_with_fee"
+ ",balance"
",purse_sig"
" FROM purse_requests"
" WHERE merge_pub=$1;");
-
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"select_purse_by_merge_pub",
params,
diff --git a/src/exchangedb/pg_select_purse_decisions_above_serial_id.c b/src/exchangedb/pg_select_purse_decisions_above_serial_id.c
index 02e67197b..f301ea78a 100644
--- a/src/exchangedb/pg_select_purse_decisions_above_serial_id.c
+++ b/src/exchangedb/pg_select_purse_decisions_above_serial_id.c
@@ -140,8 +140,7 @@ TEH_PG_select_purse_decisions_above_serial_id (
" pd.purse_pub"
",pm.reserve_pub"
",pd.purse_decision_serial_id"
- ",pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
+ ",pr.amount_with_fee"
" FROM purse_decision pd"
" JOIN purse_requests pr ON (pd.purse_pub = pr.purse_pub)"
" LEFT JOIN purse_merges pm ON (pm.purse_pub = pd.purse_pub)"
diff --git a/src/exchangedb/pg_select_purse_deposits_above_serial_id.c b/src/exchangedb/pg_select_purse_deposits_above_serial_id.c
index 72fdcd99b..bb4320663 100644
--- a/src/exchangedb/pg_select_purse_deposits_above_serial_id.c
+++ b/src/exchangedb/pg_select_purse_deposits_above_serial_id.c
@@ -168,12 +168,9 @@ TEH_PG_select_purse_deposits_above_serial_id (
PREPARE (pg,
"audit_get_purse_deposits_incr",
"SELECT"
- " pd.amount_with_fee_val"
- ",pd.amount_with_fee_frac"
- ",pr.amount_with_fee_val AS total_val"
- ",pr.amount_with_fee_frac AS total_frac"
- ",pr.balance_val"
- ",pr.balance_frac"
+ " pd.amount_with_fee"
+ ",pr.amount_with_fee AS total"
+ ",pr.balance"
",pr.flags"
",pd.purse_pub"
",pd.coin_sig"
diff --git a/src/exchangedb/pg_select_purse_deposits_by_purse.c b/src/exchangedb/pg_select_purse_deposits_by_purse.c
index 5fe7e014b..cfc72a440 100644
--- a/src/exchangedb/pg_select_purse_deposits_by_purse.c
+++ b/src/exchangedb/pg_select_purse_deposits_by_purse.c
@@ -133,8 +133,7 @@ TEH_PG_select_purse_deposits_by_purse (
"audit_get_purse_deposits_by_purse",
"SELECT"
" pd.purse_deposit_serial_id"
- ",pd.amount_with_fee_val"
- ",pd.amount_with_fee_frac"
+ ",pd.amount_with_fee"
",pd.coin_pub"
",denom.denom_pub"
" FROM purse_deposits pd"
diff --git a/src/exchangedb/pg_select_purse_merges_above_serial_id.c b/src/exchangedb/pg_select_purse_merges_above_serial_id.c
index 748a92b73..cd06d65e9 100644
--- a/src/exchangedb/pg_select_purse_merges_above_serial_id.c
+++ b/src/exchangedb/pg_select_purse_merges_above_serial_id.c
@@ -163,10 +163,8 @@ TEH_PG_select_purse_merges_above_serial_id (
"SELECT"
" pm.purse_merge_request_serial_id"
",partner_base_url"
- ",pr.amount_with_fee_val"
- ",pr.amount_with_fee_frac"
- ",pr.balance_val"
- ",pr.balance_frac"
+ ",pr.amount_with_fee"
+ ",pr.balance"
",pr.flags"
",pr.merge_pub"
",pm.reserve_pub"
diff --git a/src/exchangedb/pg_select_purse_requests_above_serial_id.c b/src/exchangedb/pg_select_purse_requests_above_serial_id.c
index 51f5de82c..61a4f2041 100644
--- a/src/exchangedb/pg_select_purse_requests_above_serial_id.c
+++ b/src/exchangedb/pg_select_purse_requests_above_serial_id.c
@@ -155,8 +155,7 @@ TEH_PG_select_purse_requests_above_serial_id (
"SELECT"
" purse_requests_serial_id"
",purse_pub"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",age_limit"
",h_contract_terms"
",purse_creation"
diff --git a/src/exchangedb/pg_select_recoup_above_serial_id.c b/src/exchangedb/pg_select_recoup_above_serial_id.c
index b2933fae3..62e94f368 100644
--- a/src/exchangedb/pg_select_recoup_above_serial_id.c
+++ b/src/exchangedb/pg_select_recoup_above_serial_id.c
@@ -172,8 +172,7 @@ TEH_PG_select_recoup_above_serial_id (
",coins.denom_sig"
",coins.age_commitment_hash"
",denoms.denom_pub"
- ",amount_val"
- ",amount_frac"
+ ",amount"
" FROM recoup"
" JOIN known_coins coins"
" USING (coin_pub)"
diff --git a/src/exchangedb/pg_select_recoup_refresh_above_serial_id.c b/src/exchangedb/pg_select_recoup_refresh_above_serial_id.c
index c6fb62cc7..b6029777c 100644
--- a/src/exchangedb/pg_select_recoup_refresh_above_serial_id.c
+++ b/src/exchangedb/pg_select_recoup_refresh_above_serial_id.c
@@ -178,8 +178,7 @@ TEH_PG_select_recoup_refresh_above_serial_id (
",rrc.h_coin_ev AS h_blind_ev"
",new_denoms.denom_pub_hash"
",new_coins.denom_sig AS denom_sig"
- ",amount_val"
- ",amount_frac"
+ ",amount"
" FROM recoup_refresh"
" INNER JOIN refresh_revealed_coins rrc"
" USING (rrc_serial)"
diff --git a/src/exchangedb/pg_select_refreshes_above_serial_id.c b/src/exchangedb/pg_select_refreshes_above_serial_id.c
index 401e6dcef..db432269c 100644
--- a/src/exchangedb/pg_select_refreshes_above_serial_id.c
+++ b/src/exchangedb/pg_select_refreshes_above_serial_id.c
@@ -149,8 +149,7 @@ TEH_PG_select_refreshes_above_serial_id (
.status = GNUNET_OK
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in #postgres_select_refreshes_above_serial_id() to fetch
- refresh session with id '\geq' the given parameter */
+
PREPARE (pg,
"audit_get_refresh_commitments_incr",
"SELECT"
@@ -158,8 +157,7 @@ TEH_PG_select_refreshes_above_serial_id (
",kc.coin_pub AS old_coin_pub"
",kc.age_commitment_hash"
",old_coin_sig"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",noreveal_index"
",melt_serial_id"
",rc"
diff --git a/src/exchangedb/pg_select_refunds_above_serial_id.c b/src/exchangedb/pg_select_refunds_above_serial_id.c
index d8c87d7d4..34e6ba8b4 100644
--- a/src/exchangedb/pg_select_refunds_above_serial_id.c
+++ b/src/exchangedb/pg_select_refunds_above_serial_id.c
@@ -188,8 +188,7 @@ TEH_PG_select_refunds_above_serial_id (
",ref.rtransaction_id"
",denom.denom_pub"
",kc.coin_pub"
- ",ref.amount_with_fee_val"
- ",ref.amount_with_fee_frac"
+ ",ref.amount_with_fee"
",ref.refund_serial_id"
" FROM refunds ref"
" JOIN deposits dep"
@@ -203,16 +202,14 @@ TEH_PG_select_refunds_above_serial_id (
PREPARE (pg,
"test_refund_full",
"SELECT"
- " CAST(SUM(CAST(ref.amount_with_fee_frac AS INT8)) AS INT8) AS s_f"
- ",CAST(SUM(ref.amount_with_fee_val) AS INT8) AS s_v"
- ",dep.amount_with_fee_val"
- ",dep.amount_with_fee_frac"
+ " CAST(SUM(CAST((ref.amount_with_fee).frac AS INT8)) AS INT8) AS s_f"
+ ",CAST(SUM((ref.amount_with_fee).val) AS INT8) AS s_v"
+ ",dep.amount_with_fee"
" FROM refunds ref"
" JOIN deposits dep"
" ON (ref.coin_pub=dep.coin_pub AND ref.deposit_serial_id=dep.deposit_serial_id)"
" WHERE ref.refund_serial_id=$1"
- " GROUP BY (dep.amount_with_fee_val, dep.amount_with_fee_frac);");
-
+ " GROUP BY (dep.amount_with_fee);");
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
"audit_get_refunds_incr",
params,
diff --git a/src/exchangedb/pg_select_refunds_by_coin.c b/src/exchangedb/pg_select_refunds_by_coin.c
index 7325b3597..44a505791 100644
--- a/src/exchangedb/pg_select_refunds_by_coin.c
+++ b/src/exchangedb/pg_select_refunds_by_coin.c
@@ -153,8 +153,7 @@ TEH_PG_select_refunds_by_coin (
PREPARE (pg,
query,
"SELECT"
- " ref.amount_with_fee_val"
- ",ref.amount_with_fee_frac"
+ " ref.amount_with_fee"
" FROM refunds ref"
" JOIN deposits dep"
" USING (coin_pub,deposit_serial_id)"
@@ -167,8 +166,7 @@ TEH_PG_select_refunds_by_coin (
PREPARE (pg,
query,
"SELECT"
- " ref.amount_with_fee_val"
- ",ref.amount_with_fee_frac"
+ " ref.amount_with_fee"
" FROM refunds ref"
" LEFT JOIN deposits dep"
" ON dep.coin_pub = ref.coin_pub"
@@ -183,15 +181,13 @@ TEH_PG_select_refunds_by_coin (
query,
"WITH rc AS MATERIALIZED("
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
",coin_pub"
",deposit_serial_id"
" FROM refunds ref"
" WHERE ref.coin_pub=$1)"
"SELECT"
- " rc.amount_with_fee_val"
- " ,rc.amount_with_fee_frac"
+ " rc.amount_with_fee"
" FROM deposits dep"
" JOIN rc"
" ON rc.deposit_serial_id = dep.deposit_serial_id"
@@ -206,18 +202,15 @@ TEH_PG_select_refunds_by_coin (
query,
"WITH rc AS MATERIALIZED("
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
",deposit_serial_id"
" FROM refunds"
" WHERE coin_pub=$1)"
"SELECT"
- " rc.amount_with_fee_val"
- " ,rc.amount_with_fee_frac"
+ " rc.amount_with_fee"
" FROM ("
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
" FROM deposits depos"
" WHERE"
" depos.coin_pub = $1"
@@ -230,20 +223,17 @@ TEH_PG_select_refunds_by_coin (
query,
"WITH rc AS MATERIALIZED("
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
",coin_pub"
",deposit_serial_id"
" FROM refunds ref"
" WHERE ref.coin_pub=$1)"
"SELECT"
- " rc.amount_with_fee_val"
- " ,rc.amount_with_fee_frac"
+ " rc.amount_with_fee"
" ,deposit_serial_id"
" FROM ("
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
" FROM deposits depos"
" WHERE"
" depos.merchant_pub = $2"
@@ -256,8 +246,7 @@ TEH_PG_select_refunds_by_coin (
PREPARE (pg,
query,
"SELECT"
- " amount_with_fee_val"
- ",amount_with_fee_frac"
+ " amount_with_fee"
",coin_pub"
",deposit_serial_id"
" FROM refunds"
@@ -270,8 +259,7 @@ TEH_PG_select_refunds_by_coin (
"WITH"
" rc AS MATERIALIZED("
" SELECT"
- " amount_with_fee_val"
- " ,amount_with_fee_frac"
+ " amount_with_fee"
" ,coin_pub"
" ,deposit_serial_id"
" FROM refunds"
@@ -285,8 +273,7 @@ TEH_PG_select_refunds_by_coin (
" AND h_contract_terms = $3"
")"
"SELECT"
- " rc.amount_with_fee_val"
- " ,rc.amount_with_fee_frac"
+ " rc.amount_with_fee"
" FROM "
" rc JOIN dep USING (deposit_serial_id);");
break;
@@ -295,8 +282,7 @@ TEH_PG_select_refunds_by_coin (
PREPARE (pg,
query,
"SELECT"
- " ref.amount_with_fee_val"
- " ,ref.amount_with_fee_frac"
+ " ref.amount_with_fee"
" FROM deposits dep"
" JOIN refunds ref USING(deposit_serial_id)"
" WHERE dep.coin_pub IN ("
@@ -315,7 +301,7 @@ TEH_PG_select_refunds_by_coin (
" FROM"
" exchange_do_refund_by_coin"
" ($1, $2, $3) "
- " AS (amount_with_fee_val INT8, amount_with_fee_frac INT4);");
+ " AS (amount_with_fee taler_amount);");
break;
default:
GNUNET_break (0);
diff --git a/src/exchangedb/pg_select_reserve_closed_above_serial_id.c b/src/exchangedb/pg_select_reserve_closed_above_serial_id.c
index 985c6792c..d24d6a600 100644
--- a/src/exchangedb/pg_select_reserve_closed_above_serial_id.c
+++ b/src/exchangedb/pg_select_reserve_closed_above_serial_id.c
@@ -157,10 +157,8 @@ TEH_PG_select_reserve_closed_above_serial_id (
",execution_date"
",wtid"
",payto_uri AS receiver_account"
- ",amount_val"
- ",amount_frac"
- ",closing_fee_val"
- ",closing_fee_frac"
+ ",amount"
+ ",closing_fee"
",close_request_row"
" FROM reserves_close"
" JOIN wire_targets"
diff --git a/src/exchangedb/pg_select_reserve_open_above_serial_id.c b/src/exchangedb/pg_select_reserve_open_above_serial_id.c
index cc33bc48c..1675e71a7 100644
--- a/src/exchangedb/pg_select_reserve_open_above_serial_id.c
+++ b/src/exchangedb/pg_select_reserve_open_above_serial_id.c
@@ -152,8 +152,7 @@ TEH_PG_select_reserve_open_above_serial_id (
",request_timestamp"
",expiration_date"
",reserve_sig"
- ",reserve_payment_val"
- ",reserve_payment_frac"
+ ",reserve_payment"
",requested_purse_limit"
" FROM reserves_open_requests"
" WHERE open_request_uuid>=$1"
diff --git a/src/exchangedb/pg_select_reserves_in_above_serial_id.c b/src/exchangedb/pg_select_reserves_in_above_serial_id.c
index 8dd4a9aba..21033e80d 100644
--- a/src/exchangedb/pg_select_reserves_in_above_serial_id.c
+++ b/src/exchangedb/pg_select_reserves_in_above_serial_id.c
@@ -137,15 +137,12 @@ TEH_PG_select_reserves_in_above_serial_id (
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in postgres_select_reserves_in_above_serial_id() to obtain inbound
- transactions for reserves with serial id '\geq' the given parameter */
PREPARE (pg,
"audit_reserves_in_get_transactions_incr",
"SELECT"
" reserves.reserve_pub"
",wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",execution_date"
",payto_uri AS sender_account_details"
",reserve_in_serial_id"
diff --git a/src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c b/src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c
index 809df191b..daedb3f8b 100644
--- a/src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c
+++ b/src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c
@@ -138,15 +138,12 @@ TEH_PG_select_reserves_in_above_serial_id_by_account (
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in postgres_select_reserves_in_above_serial_id() to obtain inbound
- transactions for reserves with serial id '\geq' the given parameter */
PREPARE (pg,
"audit_reserves_in_get_transactions_incr_by_account",
"SELECT"
" reserves.reserve_pub"
",wire_reference"
- ",credit_val"
- ",credit_frac"
+ ",credit"
",execution_date"
",payto_uri AS sender_account_details"
",reserve_in_serial_id"
@@ -157,7 +154,6 @@ TEH_PG_select_reserves_in_above_serial_id_by_account (
" ON (wire_source_h_payto = wire_target_h_payto)"
" WHERE reserve_in_serial_id>=$1 AND exchange_account_section=$2"
" ORDER BY reserve_in_serial_id;");
-
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
"audit_reserves_in_get_transactions_incr_by_account",
params,
diff --git a/src/exchangedb/pg_select_wire_out_above_serial_id.c b/src/exchangedb/pg_select_wire_out_above_serial_id.c
index a9615ac8e..8668c429d 100644
--- a/src/exchangedb/pg_select_wire_out_above_serial_id.c
+++ b/src/exchangedb/pg_select_wire_out_above_serial_id.c
@@ -140,8 +140,7 @@ TEH_PG_select_wire_out_above_serial_id (
",execution_date"
",wtid_raw"
",payto_uri"
- ",amount_val"
- ",amount_frac"
+ ",amount"
" FROM wire_out"
" JOIN wire_targets"
" USING (wire_target_h_payto)"
diff --git a/src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c b/src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c
index a6c3f0730..3448c5a49 100644
--- a/src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c
+++ b/src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c
@@ -135,7 +135,6 @@ TEH_PG_select_wire_out_above_serial_id_by_account (
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in #postgres_select_wire_out_above_serial_id_by_account() */
PREPARE (pg,
"audit_get_wire_incr_by_account",
"SELECT"
@@ -143,8 +142,7 @@ TEH_PG_select_wire_out_above_serial_id_by_account (
",execution_date"
",wtid_raw"
",payto_uri"
- ",amount_val"
- ",amount_frac"
+ ",amount"
" FROM wire_out"
" JOIN wire_targets"
" USING (wire_target_h_payto)"
diff --git a/src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c b/src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c
index 339fa3e23..8875e22c7 100644
--- a/src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c
+++ b/src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c
@@ -131,13 +131,11 @@ TEH_PG_select_withdraw_amounts_for_kyc_check (
.status = GNUNET_OK
};
enum GNUNET_DB_QueryStatus qs;
- /* Used in #postgres_select_withdraw_amounts_for_kyc_check (
- () */
+
PREPARE (pg,
"select_kyc_relevant_withdraw_events",
"SELECT"
- " ro.amount_with_fee_val AS amount_val"
- ",ro.amount_with_fee_frac AS amount_frac"
+ " ro.amount_with_fee AS amount"
",ro.execution_date AS date"
" FROM reserves_out ro"
" JOIN reserves_out_by_reserve USING (h_blind_ev)"
diff --git a/src/exchangedb/pg_select_withdrawals_above_serial_id.c b/src/exchangedb/pg_select_withdrawals_above_serial_id.c
index b842b11aa..9beb0f936 100644
--- a/src/exchangedb/pg_select_withdrawals_above_serial_id.c
+++ b/src/exchangedb/pg_select_withdrawals_above_serial_id.c
@@ -142,7 +142,6 @@ TEH_PG_select_withdrawals_above_serial_id (
enum GNUNET_DB_QueryStatus qs;
/* Fetch deposits with rowid '\geq' the given parameter */
-
PREPARE (pg,
"audit_get_reserves_out_incr",
"SELECT"
@@ -151,8 +150,7 @@ TEH_PG_select_withdrawals_above_serial_id (
",reserve_sig"
",reserves.reserve_pub"
",execution_date"
- ",amount_with_fee_val"
- ",amount_with_fee_frac"
+ ",amount_with_fee"
",reserve_out_serial_id"
" FROM reserves_out"
" JOIN reserves"
@@ -161,8 +159,6 @@ TEH_PG_select_withdrawals_above_serial_id (
" USING (denominations_serial)"
" WHERE reserve_out_serial_id>=$1"
" ORDER BY reserve_out_serial_id ASC;");
-
-
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
"audit_get_reserves_out_incr",
params,
diff --git a/src/exchangedb/pg_set_purse_balance.c b/src/exchangedb/pg_set_purse_balance.c
index e955cb1cb..ef8673f99 100644
--- a/src/exchangedb/pg_set_purse_balance.c
+++ b/src/exchangedb/pg_set_purse_balance.c
@@ -35,15 +35,15 @@ TEH_PG_set_purse_balance (
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (purse_pub),
- TALER_PQ_query_param_amount (balance),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ balance),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"set_purse_balance",
"UPDATE purse_requests"
- " SET balance_val=$2"
- " ,balance_frac=$3"
+ " SET balance=$2"
" WHERE purse_pub=$1;");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
diff --git a/src/exchangedb/pg_store_wire_transfer_out.c b/src/exchangedb/pg_store_wire_transfer_out.c
index b8b0bb692..c899a487e 100644
--- a/src/exchangedb/pg_store_wire_transfer_out.c
+++ b/src/exchangedb/pg_store_wire_transfer_out.c
@@ -40,11 +40,11 @@ TEH_PG_store_wire_transfer_out (
GNUNET_PQ_query_param_auto_from_type (wtid),
GNUNET_PQ_query_param_auto_from_type (h_payto),
GNUNET_PQ_query_param_string (exchange_account_section),
- TALER_PQ_query_param_amount (amount),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ amount),
GNUNET_PQ_query_param_end
};
- /* Used in #postgres_store_wire_transfer_out */
PREPARE (pg,
"insert_wire_out",
"INSERT INTO wire_out "
@@ -52,11 +52,9 @@ TEH_PG_store_wire_transfer_out (
",wtid_raw"
",wire_target_h_payto"
",exchange_account_section"
- ",amount_val"
- ",amount_frac"
+ ",amount"
") VALUES "
- "($1, $2, $3, $4, $5, $6);");
-
+ "($1, $2, $3, $4, $5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_wire_out",
params);
diff --git a/src/exchangedb/pg_trigger_aml_process.c b/src/exchangedb/pg_trigger_aml_process.c
index 4dfc8a508..a46b41476 100644
--- a/src/exchangedb/pg_trigger_aml_process.c
+++ b/src/exchangedb/pg_trigger_aml_process.c
@@ -35,7 +35,8 @@ TEH_PG_trigger_aml_process (
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (h_payto),
- TALER_PQ_query_param_amount (threshold_crossed),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ threshold_crossed),
GNUNET_PQ_query_param_end
};
@@ -43,15 +44,13 @@ TEH_PG_trigger_aml_process (
"trigger_aml_process",
"INSERT INTO aml_status"
"(h_payto"
- ",threshold_val"
- ",threshold_frac"
+ ",threshold"
",status)"
"VALUES"
- "($1, $2, $3, 1)" // 1: decision needed
+ "($1, $2, 1)" // 1: decision needed
"ON CONFLICT DO"
" UPDATE SET"
- " threshold_val=$2"
- " ,threshold_frac=$3"
+ " threshold=$2"
" ,status=status | 1;"); // do not clear 'frozen' status
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"trigger_aml_process",
diff --git a/src/exchangedb/pg_update_aggregation_transient.c b/src/exchangedb/pg_update_aggregation_transient.c
index c44cd67ec..06c768823 100644
--- a/src/exchangedb/pg_update_aggregation_transient.c
+++ b/src/exchangedb/pg_update_aggregation_transient.c
@@ -36,23 +36,21 @@ TEH_PG_update_aggregation_transient (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
- TALER_PQ_query_param_amount (total),
+ TALER_PQ_query_param_amount_tuple (pg->conn,
+ total),
GNUNET_PQ_query_param_auto_from_type (h_payto),
GNUNET_PQ_query_param_auto_from_type (wtid),
GNUNET_PQ_query_param_uint64 (&kyc_requirement_row),
GNUNET_PQ_query_param_end
};
-
- /* Used in #postgres_update_aggregation_transient() */
PREPARE (pg,
"update_aggregation_transient",
"UPDATE aggregation_transient"
- " SET amount_val=$1"
- " ,amount_frac=$2"
- " ,legitimization_requirement_serial_id=$5"
- " WHERE wire_target_h_payto=$3"
- " AND wtid_raw=$4");
+ " SET amount=$1"
+ " ,legitimization_requirement_serial_id=$4"
+ " WHERE wire_target_h_payto=$2"
+ " AND wtid_raw=$3");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"update_aggregation_transient",
params);
diff --git a/src/exchangedb/shard-0001.sql b/src/exchangedb/shard-0001.sql
deleted file mode 100644
index 030664435..000000000
--- a/src/exchangedb/shard-0001.sql
+++ /dev/null
@@ -1,2575 +0,0 @@
-BEGIN;
-SELECT _v.register_patch('shard-0001', NULL, NULL);
-CREATE SCHEMA exchange;
-COMMENT ON SCHEMA exchange IS 'taler-exchange data';
-SET search_path TO exchange;
-CREATE OR REPLACE FUNCTION create_partitioned_table(
- IN table_definition VARCHAR
- ,IN table_name VARCHAR
- ,IN main_table_partition_str VARCHAR
- ,IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- IF shard_suffix IS NOT NULL THEN
- table_name=table_name || '_' || shard_suffix;
- main_table_partition_str = '';
- END IF;
- EXECUTE FORMAT(
- table_definition,
- table_name,
- main_table_partition_str
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wire_targets(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(wire_target_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',wire_target_h_payto BYTEA PRIMARY KEY CHECK (LENGTH(wire_target_h_payto)=32)'
- ',payto_uri VARCHAR NOT NULL'
- ') %s ;'
- ,'wire_targets'
- ,'PARTITION BY HASH (wire_target_h_payto)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wire_targets_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wire_targets_' || partition_suffix || ' '
- 'ADD CONSTRAINT wire_targets_' || partition_suffix || '_wire_target_serial_id_key '
- 'UNIQUE (wire_target_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_legitimization_processes(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(legitimization_process_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',h_payto BYTEA NOT NULL CHECK (LENGTH(h_payto)=32)'
- ',expiration_time INT8 NOT NULL DEFAULT (0)'
- ',provider_section VARCHAR NOT NULL'
- ',provider_user_id VARCHAR DEFAULT NULL'
- ',provider_legitimization_id VARCHAR DEFAULT NULL'
- ',UNIQUE (h_payto, provider_section)'
- ') %s ;'
- ,'legitimization_processes'
- ,'PARTITION BY HASH (h_payto)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_legitimization_processes_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-DECLARE
- partition_name VARCHAR;
-BEGIN
- partition_name = concat_ws('_', 'legitimization_processes', partition_suffix);
- EXECUTE FORMAT (
- 'ALTER TABLE ' || partition_name
- || ' '
- 'ADD CONSTRAINT ' || partition_name || '_serial_key '
- 'UNIQUE (legitimization_process_serial_id)');
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || partition_name || '_by_provider_and_legi_index '
- 'ON '|| partition_name || ' '
- '(provider_section,provider_legitimization_id)'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || partition_name || '_by_provider_and_legi_index '
- 'IS ' || quote_literal('used (rarely) in kyc_provider_account_lookup') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_legitimization_requirements(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(legitimization_requirement_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',h_payto BYTEA NOT NULL CHECK (LENGTH(h_payto)=32)'
- ',required_checks VARCHAR NOT NULL'
- ',UNIQUE (h_payto, required_checks)'
- ') %s ;'
- ,'legitimization_requirements'
- ,'PARTITION BY HASH (h_payto)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_legitimization_requirements_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-DECLARE
- partition_name VARCHAR;
-BEGIN
- partition_name = concat_ws('_', 'legitimization_requirements', partition_suffix);
- EXECUTE FORMAT (
- 'ALTER TABLE ' || partition_name
- || ' '
- 'ADD CONSTRAINT ' || partition_name || '_serial_id_key '
- 'UNIQUE (legitimization_requirement_serial_id)');
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'reserves';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA PRIMARY KEY CHECK(LENGTH(reserve_pub)=32)'
- ',current_balance_val INT8 NOT NULL DEFAULT(0)'
- ',current_balance_frac INT4 NOT NULL DEFAULT(0)'
- ',purses_active INT8 NOT NULL DEFAULT(0)'
- ',purses_allowed INT8 NOT NULL DEFAULT(0)'
- ',birthdate INT4 NOT NULL DEFAULT(0)' -- 0 means: no age restriction.
- ',expiration_date INT8 NOT NULL'
- ',gc_date INT8 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_expiration_index '
- 'ON ' || table_name || ' '
- '(expiration_date'
- ',current_balance_val'
- ',current_balance_frac'
- ');'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_expiration_index '
- 'IS ' || quote_literal('used in get_expired_reserves') || ';'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_uuid_index '
- 'ON ' || table_name || ' '
- '(reserve_uuid);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_gc_date_index '
- 'ON ' || table_name || ' '
- '(gc_date);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_gc_date_index '
- 'IS ' || quote_literal('for reserve garbage collection') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_in(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'reserves_in';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_in_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA PRIMARY KEY'
- ',wire_reference INT8 NOT NULL'
- ',credit_val INT8 NOT NULL'
- ',credit_frac INT4 NOT NULL'
- ',wire_source_h_payto BYTEA CHECK (LENGTH(wire_source_h_payto)=32)'
- ',exchange_account_section TEXT NOT NULL'
- ',execution_date INT8 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_in_serial_id_index '
- 'ON ' || table_name || ' '
- '(reserve_in_serial_id);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_exch_accnt_section_execution_date_idx '
- 'ON ' || table_name || ' '
- '(exchange_account_section '
- ',execution_date'
- ');'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_exch_accnt_reserve_in_serial_id_idx '
- 'ON ' || table_name || ' '
- '(exchange_account_section,'
- 'reserve_in_serial_id DESC'
- ');'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_reserves_in_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE reserves_in_' || partition_suffix || ' '
- 'ADD CONSTRAINT reserves_in_' || partition_suffix || '_reserve_in_serial_id_key '
- 'UNIQUE (reserve_in_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_close(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'reserves_close';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(close_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA NOT NULL'
- ',execution_date INT8 NOT NULL'
- ',wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32)'
- ',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',closing_fee_val INT8 NOT NULL'
- ',closing_fee_frac INT4 NOT NULL'
- ',close_request_row INT8 NOT NULL DEFAULT(0)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_uuid_index '
- 'ON ' || table_name || ' '
- '(close_uuid);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_pub_index '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_reserves_close_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE reserves_close_' || partition_suffix || ' '
- 'ADD CONSTRAINT reserves_close_' || partition_suffix || '_close_uuid_pkey '
- 'PRIMARY KEY (close_uuid)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_close_requests(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'close_requests';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(close_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
- ',close_timestamp INT8 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',close_val INT8 NOT NULL'
- ',close_frac INT4 NOT NULL'
- ',close_fee_val INT8 NOT NULL'
- ',close_fee_frac INT4 NOT NULL'
- ',payto_uri VARCHAR NOT NULL'
- ',done BOOL NOT NULL DEFAULT(FALSE)'
- ',PRIMARY KEY (reserve_pub,close_timestamp)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_close_requests(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'close_requests';
-BEGIN
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_uuid_index '
- 'ON ' || table_name || ' '
- '(close_request_serial_id);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_close_request_done_index '
- 'ON ' || table_name || ' '
- '(done);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_close_requests_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE close_requests_' || partition_suffix || ' '
- 'ADD CONSTRAINT close_requests_' || partition_suffix || '_close_request_uuid_pkey '
- 'UNIQUE (close_request_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_open_requests(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'reserves_open_requests';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(open_request_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA NOT NULL'
- ',request_timestamp INT8 NOT NULL'
- ',expiration_date INT8 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',reserve_payment_val INT8 NOT NULL'
- ',reserve_payment_frac INT4 NOT NULL'
- ',requested_purse_limit INT4 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_open_uuid_index '
- 'ON ' || table_name || ' '
- '(open_request_uuid);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_pub_index '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_reserves_open_request_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE reserves_open_requests_' || partition_suffix || ' '
- 'ADD CONSTRAINT reserves_open_requests_' || partition_suffix || '_by_uuid '
- 'PRIMARY KEY (open_request_uuid),'
- 'ADD CONSTRAINT reserves_open_requests_' || partition_suffix || '_by_time '
- 'UNIQUE (reserve_pub,request_timestamp)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_open_deposits(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'reserves_open_deposits';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_open_deposit_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)'
- ',contribution_val INT8 NOT NULL'
- ',contribution_frac INT4 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_uuid '
- 'ON ' || table_name || ' '
- '(reserve_open_deposit_uuid);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_reserves_open_deposits_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE reserves_open_deposits_' || partition_suffix || ' '
- 'ADD CONSTRAINT reserves_open_deposits_' || partition_suffix || '_coin_unique '
- 'PRIMARY KEY (coin_pub,coin_sig)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_out(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'reserves_out';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_out_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',h_blind_ev BYTEA CHECK (LENGTH(h_blind_ev)=64) UNIQUE'
- ',denominations_serial INT8 NOT NULL'
- ',denom_sig BYTEA NOT NULL'
- ',reserve_uuid INT8 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',execution_date INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ') %s ;'
- ,'reserves_out'
- ,'PARTITION BY HASH (h_blind_ev)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_out_serial_id_index '
- 'ON ' || table_name || ' '
- '(reserve_out_serial_id);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_uuid_and_execution_date_index '
- 'ON ' || table_name || ' '
- '(reserve_uuid, execution_date);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_reserve_uuid_and_execution_date_index '
- 'IS ' || quote_literal('for get_reserves_out and exchange_do_withdraw_limit_check') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_reserves_out_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE reserves_out_' || partition_suffix || ' '
- 'ADD CONSTRAINT reserves_out_' || partition_suffix || '_reserve_out_serial_id_key '
- 'UNIQUE (reserve_out_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_reserves_out_by_reserve(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'reserves_out_by_reserve';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_uuid INT8 NOT NULL'
- ',h_blind_ev BYTEA CHECK (LENGTH(h_blind_ev)=64)'
- ') %s '
- ,table_name
- ,'PARTITION BY HASH (reserve_uuid)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_main_index '
- 'ON ' || table_name || ' '
- '(reserve_uuid);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_known_coins(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR default 'known_coins';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(known_coin_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',denominations_serial INT8 NOT NULL'
- ',coin_pub BYTEA NOT NULL PRIMARY KEY CHECK (LENGTH(coin_pub)=32)'
- ',age_commitment_hash BYTEA CHECK (LENGTH(age_commitment_hash)=32)'
- ',denom_sig BYTEA NOT NULL'
- ',remaining_val INT8 NOT NULL DEFAULT(0)'
- ',remaining_frac INT4 NOT NULL DEFAULT(0)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_known_coins_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE known_coins_' || partition_suffix || ' '
- 'ADD CONSTRAINT known_coins_' || partition_suffix || '_known_coin_id_key '
- 'UNIQUE (known_coin_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_refresh_commitments(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'refresh_commitments';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(melt_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',rc BYTEA PRIMARY KEY CHECK (LENGTH(rc)=64)'
- ',old_coin_pub BYTEA NOT NULL'
- ',old_coin_sig BYTEA NOT NULL CHECK(LENGTH(old_coin_sig)=64)'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',noreveal_index INT4 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (rc)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_old_coin_pub_index '
- 'ON ' || table_name || ' '
- '(old_coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_refresh_commitments_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE refresh_commitments_' || partition_suffix || ' '
- 'ADD CONSTRAINT refresh_commitments_' || partition_suffix || '_melt_serial_id_key '
- 'UNIQUE (melt_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_refresh_revealed_coins(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'refresh_revealed_coins';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(rrc_serial BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',melt_serial_id INT8 NOT NULL'
- ',freshcoin_index INT4 NOT NULL'
- ',link_sig BYTEA NOT NULL CHECK(LENGTH(link_sig)=64)'
- ',denominations_serial INT8 NOT NULL'
- ',coin_ev BYTEA NOT NULL'
- ',h_coin_ev BYTEA NOT NULL CHECK(LENGTH(h_coin_ev)=64)'
- ',ev_sig BYTEA NOT NULL'
- ',ewv BYTEA NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (melt_serial_id)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_coins_by_melt_serial_id_index '
- 'ON ' || table_name || ' '
- '(melt_serial_id);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_refresh_revealed_coins_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE refresh_revealed_coins_' || partition_suffix || ' '
- 'ADD CONSTRAINT refresh_revealed_coins_' || partition_suffix || '_rrc_serial_key '
- 'UNIQUE (rrc_serial) '
- ',ADD CONSTRAINT refresh_revealed_coins_' || partition_suffix || '_coin_ev_key '
- 'UNIQUE (coin_ev) '
- ',ADD CONSTRAINT refresh_revealed_coins_' || partition_suffix || '_h_coin_ev_key '
- 'UNIQUE (h_coin_ev) '
- ',ADD PRIMARY KEY (melt_serial_id, freshcoin_index) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_refresh_transfer_keys(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'refresh_transfer_keys';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(rtc_serial BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',melt_serial_id INT8 PRIMARY KEY'
- ',transfer_pub BYTEA NOT NULL CHECK(LENGTH(transfer_pub)=32)'
- ',transfer_privs BYTEA NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (melt_serial_id)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_refresh_transfer_keys_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE refresh_transfer_keys_' || partition_suffix || ' '
- 'ADD CONSTRAINT refresh_transfer_keys_' || partition_suffix || '_rtc_serial_key '
- 'UNIQUE (rtc_serial)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_deposits(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'deposits';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(deposit_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',shard INT8 NOT NULL'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',known_coin_id INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',wallet_timestamp INT8 NOT NULL'
- ',exchange_timestamp INT8 NOT NULL'
- ',refund_deadline INT8 NOT NULL'
- ',wire_deadline INT8 NOT NULL'
- ',merchant_pub BYTEA NOT NULL CHECK (LENGTH(merchant_pub)=32)'
- ',h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)'
- ',coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)'
- ',wire_salt BYTEA NOT NULL CHECK (LENGTH(wire_salt)=16)'
- ',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
- ',done BOOLEAN NOT NULL DEFAULT FALSE'
- ',policy_blocked BOOLEAN NOT NULL DEFAULT FALSE'
- ',policy_details_serial_id INT8'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_coin_pub_index '
- 'ON ' || table_name || ' '
- '(coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_deposits_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE deposits_' || partition_suffix || ' '
- 'ADD CONSTRAINT deposits_' || partition_suffix || '_deposit_serial_id_pkey '
- 'PRIMARY KEY (deposit_serial_id) '
- ',ADD CONSTRAINT deposits_' || partition_suffix || '_coin_pub_merchant_pub_h_contract_terms_key '
- 'UNIQUE (coin_pub, merchant_pub, h_contract_terms)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_deposits_by_ready(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'deposits_by_ready';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(wire_deadline INT8 NOT NULL'
- ',shard INT8 NOT NULL'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',deposit_serial_id INT8'
- ') %s ;'
- ,table_name
- ,'PARTITION BY RANGE (wire_deadline)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_main_index '
- 'ON ' || table_name || ' '
- '(wire_deadline ASC, shard ASC, coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_deposits_for_matching(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'deposits_for_matching';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(refund_deadline INT8 NOT NULL'
- ',merchant_pub BYTEA NOT NULL CHECK (LENGTH(merchant_pub)=32)'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',deposit_serial_id INT8'
- ') %s ;'
- ,table_name
- ,'PARTITION BY RANGE (refund_deadline)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_main_index '
- 'ON ' || table_name || ' '
- '(refund_deadline ASC, merchant_pub, coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_refunds(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'refunds';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(refund_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',deposit_serial_id INT8 NOT NULL'
- ',merchant_sig BYTEA NOT NULL CHECK(LENGTH(merchant_sig)=64)'
- ',rtransaction_id INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_coin_pub_index '
- 'ON ' || table_name || ' '
- '(coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_refunds_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE refunds_' || partition_suffix || ' '
- 'ADD CONSTRAINT refunds_' || partition_suffix || '_refund_serial_id_key '
- 'UNIQUE (refund_serial_id) '
- ',ADD PRIMARY KEY (deposit_serial_id, rtransaction_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wire_out(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'wire_out';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(wireout_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',execution_date INT8 NOT NULL'
- ',wtid_raw BYTEA UNIQUE NOT NULL CHECK (LENGTH(wtid_raw)=32)'
- ',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
- ',exchange_account_section TEXT NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (wtid_raw)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_wire_target_h_payto_index '
- 'ON ' || table_name || ' '
- '(wire_target_h_payto);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wire_out_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS void
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wire_out_' || partition_suffix || ' '
- 'ADD CONSTRAINT wire_out_' || partition_suffix || '_wireout_uuid_pkey '
- 'PRIMARY KEY (wireout_uuid)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_aggregation_transient(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'aggregation_transient';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)'
- ',merchant_pub BYTEA CHECK (LENGTH(merchant_pub)=32)'
- ',exchange_account_section TEXT NOT NULL'
- ',legitimization_requirement_serial_id INT8 NOT NULL DEFAULT(0)'
- ',wtid_raw BYTEA NOT NULL CHECK (LENGTH(wtid_raw)=32)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (wire_target_h_payto)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_aggregation_tracking(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'aggregation_tracking';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(aggregation_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',deposit_serial_id INT8 PRIMARY KEY'
- ',wtid_raw BYTEA NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (deposit_serial_id)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_wtid_raw_index '
- 'ON ' || table_name || ' '
- '(wtid_raw);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_wtid_raw_index '
- 'IS ' || quote_literal('for lookup_transactions') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_aggregation_tracking_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE aggregation_tracking_' || partition_suffix || ' '
- 'ADD CONSTRAINT aggregation_tracking_' || partition_suffix || '_aggregation_serial_id_key '
- 'UNIQUE (aggregation_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_recoup(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'recoup';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(recoup_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
- ',coin_blind BYTEA NOT NULL CHECK(LENGTH(coin_blind)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',recoup_timestamp INT8 NOT NULL'
- ',reserve_out_serial_id INT8 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub);'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_coin_pub_index '
- 'ON ' || table_name || ' '
- '(coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_recoup_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE recoup_' || partition_suffix || ' '
- 'ADD CONSTRAINT recoup_' || partition_suffix || '_recoup_uuid_key '
- 'UNIQUE (recoup_uuid) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_recoup_by_reserve(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'recoup_by_reserve';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(reserve_out_serial_id INT8 NOT NULL'
- ',coin_pub BYTEA CHECK (LENGTH(coin_pub)=32)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_out_serial_id)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_main_index '
- 'ON ' || table_name || ' '
- '(reserve_out_serial_id);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_recoup_refresh(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'recoup_refresh';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(recoup_refresh_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)'
- ',known_coin_id BIGINT NOT NULL'
- ',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
- ',coin_blind BYTEA NOT NULL CHECK(LENGTH(coin_blind)=32)'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',recoup_timestamp INT8 NOT NULL'
- ',rrc_serial INT8 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (coin_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_rrc_serial_index '
- 'ON ' || table_name || ' '
- '(rrc_serial);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_coin_pub_index '
- 'ON ' || table_name || ' '
- '(coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_recoup_refresh_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE recoup_refresh_' || partition_suffix || ' '
- 'ADD CONSTRAINT recoup_refresh_' || partition_suffix || '_recoup_refresh_uuid_key '
- 'UNIQUE (recoup_refresh_uuid) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_prewire(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'prewire';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(prewire_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY'
- ',wire_method TEXT NOT NULL'
- ',finished BOOLEAN NOT NULL DEFAULT false'
- ',failed BOOLEAN NOT NULL DEFAULT false'
- ',buf BYTEA NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (prewire_uuid)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_finished_index '
- 'ON ' || table_name || ' '
- '(finished);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_finished_index '
- 'IS ' || quote_literal('for gc_prewire') || ';'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_failed_finished_index '
- 'ON ' || table_name || ' '
- '(failed,finished);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_by_failed_finished_index '
- 'IS ' || quote_literal('for wire_prepare_data_get') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_cs_nonce_locks(
- shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I'
- '(cs_nonce_lock_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',nonce BYTEA PRIMARY KEY CHECK (LENGTH(nonce)=32)'
- ',op_hash BYTEA NOT NULL CHECK (LENGTH(op_hash)=64)'
- ',max_denomination_serial INT8 NOT NULL'
- ') %s ;'
- ,'cs_nonce_locks'
- ,'PARTITION BY HASH (nonce)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_cs_nonce_locks_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE cs_nonce_locks_' || partition_suffix || ' '
- 'ADD CONSTRAINT cs_nonce_locks_' || partition_suffix || '_cs_nonce_lock_serial_id_key '
- 'UNIQUE (cs_nonce_lock_serial_id)'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_purse_requests(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'purse_requests';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(purse_requests_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',merge_pub BYTEA NOT NULL CHECK (LENGTH(merge_pub)=32)'
- ',purse_creation INT8 NOT NULL'
- ',purse_expiration INT8 NOT NULL'
- ',h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)'
- ',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)'
- ',purse_sig BYTEA NOT NULL CHECK(LENGTH(purse_sig)=64)'
- ',PRIMARY KEY (purse_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_merge_pub '
- 'ON ' || table_name || ' '
- '(merge_pub);'
- );
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_purse_expiration '
- 'ON ' || table_name || ' '
- '(purse_expiration);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_purse_requests_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE purse_requests_' || partition_suffix || ' '
- 'ADD CONSTRAINT purse_requests_' || partition_suffix || '_purse_requests_serial_id_key '
- 'UNIQUE (purse_requests_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_purse_merges(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'purse_merges';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(purse_merge_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY '
- ',partner_serial_id INT8'
- ',reserve_pub BYTEA NOT NULL CHECK(length(reserve_pub)=32)'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',merge_sig BYTEA NOT NULL CHECK (LENGTH(merge_sig)=64)'
- ',merge_timestamp INT8 NOT NULL'
- ',PRIMARY KEY (purse_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_reserve_pub '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_reserve_pub '
- 'IS ' || quote_literal('needed in reserve history computation') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_purse_merges_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE purse_merges_' || partition_suffix || ' '
- 'ADD CONSTRAINT purse_merges_' || partition_suffix || '_purse_merge_request_serial_id_key '
- 'UNIQUE (purse_merge_request_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_account_merges(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'account_merges';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(account_merge_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',wallet_h_payto BYTEA NOT NULL CHECK (LENGTH(wallet_h_payto)=32)'
- ',PRIMARY KEY (purse_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_pub '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_account_merges_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE account_merges_' || partition_suffix || ' '
- 'ADD CONSTRAINT account_merges_' || partition_suffix || '_account_merge_request_serial_id_key '
- 'UNIQUE (account_merge_request_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_purse_decision(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'purse_decision';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(purse_decision_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',action_timestamp INT8 NOT NULL'
- ',refunded BOOL NOT NULL'
- ',PRIMARY KEY (purse_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_purse_decision_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE purse_decision_' || partition_suffix || ' '
- 'ADD CONSTRAINT purse_decision_' || partition_suffix || '_purse_action_serial_id_key '
- 'UNIQUE (purse_decision_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_contracts(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'contracts';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(contract_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',pub_ckey BYTEA NOT NULL CHECK (LENGTH(pub_ckey)=32)'
- ',contract_sig BYTEA NOT NULL CHECK (LENGTH(contract_sig)=64)'
- ',e_contract BYTEA NOT NULL'
- ',purse_expiration INT8 NOT NULL'
- ',PRIMARY KEY (purse_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_contracts_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE contracts_' || partition_suffix || ' '
- 'ADD CONSTRAINT contracts_' || partition_suffix || '_contract_serial_id_key '
- 'UNIQUE (contract_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_history_requests(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'history_requests';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(history_request_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32)'
- ',request_timestamp INT8 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',history_fee_val INT8 NOT NULL'
- ',history_fee_frac INT4 NOT NULL'
- ',PRIMARY KEY (reserve_pub,request_timestamp)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (reserve_pub)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_purse_deposits(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'purse_deposits';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(purse_deposit_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',partner_serial_id INT8'
- ',purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32)'
- ',coin_pub BYTEA NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)'
- ',PRIMARY KEY (purse_pub,coin_pub)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_coin_pub '
- 'ON ' || table_name || ' '
- '(coin_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_purse_deposits_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE purse_deposits_' || partition_suffix || ' '
- 'ADD CONSTRAINT purse_deposits_' || partition_suffix || '_purse_deposit_serial_id_key '
- 'UNIQUE (purse_deposit_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wads_out(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'wads_out';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(wad_out_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)'
- ',partner_serial_id INT8 NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',execution_time INT8 NOT NULL'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (wad_id)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wads_out_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wads_out_' || partition_suffix || ' '
- 'ADD CONSTRAINT wads_out_' || partition_suffix || '_wad_out_serial_id_key '
- 'UNIQUE (wad_out_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wad_out_entries(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'wad_out_entries';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(wad_out_entry_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',wad_out_serial_id INT8'
- ',reserve_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32)'
- ',purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32)'
- ',h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)'
- ',purse_expiration INT8 NOT NULL'
- ',merge_timestamp INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',wad_fee_val INT8 NOT NULL'
- ',wad_fee_frac INT4 NOT NULL'
- ',deposit_fees_val INT8 NOT NULL'
- ',deposit_fees_frac INT4 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_by_reserve_pub '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wad_out_entries_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wad_out_entries_' || partition_suffix || ' '
- 'ADD CONSTRAINT wad_out_entries_' || partition_suffix || '_wad_out_entry_serial_id_key '
- 'UNIQUE (wad_out_entry_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wads_in(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'wads_in';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(wad_in_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)'
- ',origin_exchange_url TEXT NOT NULL'
- ',amount_val INT8 NOT NULL'
- ',amount_frac INT4 NOT NULL'
- ',arrival_time INT8 NOT NULL'
- ',UNIQUE (wad_id, origin_exchange_url)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (wad_id)'
- ,shard_suffix
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wads_in_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wads_in_' || partition_suffix || ' '
- 'ADD CONSTRAINT wads_in_' || partition_suffix || '_wad_in_serial_id_key '
- 'UNIQUE (wad_in_serial_id) '
- ',ADD CONSTRAINT wads_in_' || partition_suffix || '_wad_is_origin_exchange_url_key '
- 'UNIQUE (wad_id, origin_exchange_url) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_table_wad_in_entries(
- IN shard_suffix VARCHAR DEFAULT NULL
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- table_name VARCHAR DEFAULT 'wad_in_entries';
-BEGIN
- PERFORM create_partitioned_table(
- 'CREATE TABLE IF NOT EXISTS %I '
- '(wad_in_entry_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
- ',wad_in_serial_id INT8'
- ',reserve_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32)'
- ',purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32)'
- ',h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)'
- ',purse_expiration INT8 NOT NULL'
- ',merge_timestamp INT8 NOT NULL'
- ',amount_with_fee_val INT8 NOT NULL'
- ',amount_with_fee_frac INT4 NOT NULL'
- ',wad_fee_val INT8 NOT NULL'
- ',wad_fee_frac INT4 NOT NULL'
- ',deposit_fees_val INT8 NOT NULL'
- ',deposit_fees_frac INT4 NOT NULL'
- ',reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)'
- ',purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64)'
- ') %s ;'
- ,table_name
- ,'PARTITION BY HASH (purse_pub)'
- ,shard_suffix
- );
- table_name = concat_ws('_', table_name, shard_suffix);
- EXECUTE FORMAT (
- 'CREATE INDEX IF NOT EXISTS ' || table_name || '_reserve_pub '
- 'ON ' || table_name || ' '
- '(reserve_pub);'
- );
- EXECUTE FORMAT (
- 'COMMENT ON INDEX ' || table_name || '_reserve_pub '
- 'IS ' || quote_literal('needed in reserve history computation') || ';'
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION add_constraints_to_wad_in_entries_partition(
- IN partition_suffix VARCHAR
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- EXECUTE FORMAT (
- 'ALTER TABLE wad_in_entries_' || partition_suffix || ' '
- 'ADD CONSTRAINT wad_in_entries_' || partition_suffix || '_wad_in_entry_serial_id_key '
- 'UNIQUE (wad_in_entry_serial_id) '
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_hash_partition(
- source_table_name VARCHAR
- ,modulus INTEGER
- ,partition_num INTEGER
- )
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'Creating partition %_%', source_table_name, partition_num;
- EXECUTE FORMAT(
- 'CREATE TABLE IF NOT EXISTS %I '
- 'PARTITION OF %I '
- 'FOR VALUES WITH (MODULUS %s, REMAINDER %s)'
- ,source_table_name || '_' || partition_num
- ,source_table_name
- ,modulus
- ,partition_num-1
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_range_partition(
- source_table_name VARCHAR
- ,partition_num INTEGER
-)
- RETURNS void
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'TODO';
-END
-$$;
-CREATE OR REPLACE FUNCTION detach_default_partitions()
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'Detaching all default table partitions';
- ALTER TABLE IF EXISTS wire_targets
- DETACH PARTITION wire_targets_default;
- ALTER TABLE IF EXISTS reserves
- DETACH PARTITION reserves_default;
- ALTER TABLE IF EXISTS reserves_in
- DETACH PARTITION reserves_in_default;
- ALTER TABLE IF EXISTS reserves_close
- DETACH PARTITION reserves_close_default;
- ALTER TABLE IF EXISTS history_requests
- DETACH partition history_requests_default;
- ALTER TABLE IF EXISTS close_requests
- DETACH partition close_requests_default;
- ALTER TABLE IF EXISTS reserves_open_requests
- DETACH partition reserves_open_requests_default;
- ALTER TABLE IF EXISTS reserves_out
- DETACH PARTITION reserves_out_default;
- ALTER TABLE IF EXISTS reserves_out_by_reserve
- DETACH PARTITION reserves_out_by_reserve_default;
- ALTER TABLE IF EXISTS known_coins
- DETACH PARTITION known_coins_default;
- ALTER TABLE IF EXISTS refresh_commitments
- DETACH PARTITION refresh_commitments_default;
- ALTER TABLE IF EXISTS refresh_revealed_coins
- DETACH PARTITION refresh_revealed_coins_default;
- ALTER TABLE IF EXISTS refresh_transfer_keys
- DETACH PARTITION refresh_transfer_keys_default;
- ALTER TABLE IF EXISTS deposits
- DETACH PARTITION deposits_default;
- ALTER TABLE IF EXISTS refunds
- DETACH PARTITION refunds_default;
- ALTER TABLE IF EXISTS wire_out
- DETACH PARTITION wire_out_default;
- ALTER TABLE IF EXISTS aggregation_transient
- DETACH PARTITION aggregation_transient_default;
- ALTER TABLE IF EXISTS aggregation_tracking
- DETACH PARTITION aggregation_tracking_default;
- ALTER TABLE IF EXISTS recoup
- DETACH PARTITION recoup_default;
- ALTER TABLE IF EXISTS recoup_by_reserve
- DETACH PARTITION recoup_by_reserve_default;
- ALTER TABLE IF EXISTS recoup_refresh
- DETACH PARTITION recoup_refresh_default;
- ALTER TABLE IF EXISTS prewire
- DETACH PARTITION prewire_default;
- ALTER TABLE IF EXISTS cs_nonce_locks
- DETACH partition cs_nonce_locks_default;
- ALTER TABLE IF EXISTS purse_requests
- DETACH partition purse_requests_default;
- ALTER TABLE IF EXISTS purse_decision
- DETACH partition purse_decision_default;
- ALTER TABLE IF EXISTS purse_merges
- DETACH partition purse_merges_default;
- ALTER TABLE IF EXISTS account_merges
- DETACH partition account_merges_default;
- ALTER TABLE IF EXISTS contracts
- DETACH partition contracts_default;
- ALTER TABLE IF EXISTS purse_deposits
- DETACH partition purse_deposits_default;
- ALTER TABLE IF EXISTS wad_out_entries
- DETACH partition wad_out_entries_default;
- ALTER TABLE IF EXISTS wads_in
- DETACH partition wads_in_default;
- ALTER TABLE IF EXISTS wad_in_entries
- DETACH partition wad_in_entries_default;
-END
-$$;
-COMMENT ON FUNCTION detach_default_partitions
- IS 'We need to drop default and create new one before deleting the default partitions
- otherwise constraints get lost too. Might be needed in sharding too';
-CREATE OR REPLACE FUNCTION drop_default_partitions()
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'Dropping default table partitions';
- DROP TABLE IF EXISTS wire_targets_default;
- DROP TABLE IF EXISTS reserves_default;
- DROP TABLE IF EXISTS reserves_in_default;
- DROP TABLE IF EXISTS reserves_close_default;
- DROP TABLE IF EXISTS reserves_open_requests_default;
- DROP TABLE IF EXISTS history_requests_default;
- DROP TABLE IF EXISTS close_requests_default;
- DROP TABLE IF EXISTS reserves_out_default;
- DROP TABLE IF EXISTS reserves_out_by_reserve_default;
- DROP TABLE IF EXISTS known_coins_default;
- DROP TABLE IF EXISTS refresh_commitments_default;
- DROP TABLE IF EXISTS refresh_revealed_coins_default;
- DROP TABLE IF EXISTS refresh_transfer_keys_default;
- DROP TABLE IF EXISTS deposits_default;
- DROP TABLE IF EXISTS refunds_default;
- DROP TABLE IF EXISTS wire_out_default;
- DROP TABLE IF EXISTS aggregation_transient_default;
- DROP TABLE IF EXISTS aggregation_tracking_default;
- DROP TABLE IF EXISTS recoup_default;
- DROP TABLE IF EXISTS recoup_by_reserve_default;
- DROP TABLE IF EXISTS recoup_refresh_default;
- DROP TABLE IF EXISTS prewire_default;
- DROP TABLE IF EXISTS cs_nonce_locks_default;
- DROP TABLE IF EXISTS purse_requests_default;
- DROP TABLE IF EXISTS purse_decision_default;
- DROP TABLE IF EXISTS purse_merges_default;
- DROP TABLE IF EXISTS account_merges_default;
- DROP TABLE IF EXISTS purse_deposits_default;
- DROP TABLE IF EXISTS contracts_default;
- DROP TABLE IF EXISTS wad_out_entries_default;
- DROP TABLE IF EXISTS wads_in_default;
- DROP TABLE IF EXISTS wad_in_entries_default;
-END
-$$;
-COMMENT ON FUNCTION drop_default_partitions
- IS 'Drop all default partitions once other partitions are attached.
- Might be needed in sharding too.';
-CREATE OR REPLACE FUNCTION create_partitions(
- num_partitions INTEGER
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- modulus INTEGER;
-BEGIN
- modulus := num_partitions;
- PERFORM detach_default_partitions();
- LOOP
- PERFORM create_hash_partition(
- 'wire_targets'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_wire_targets_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'reserves'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'reserves_in'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_reserves_in_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'reserves_close'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_reserves_close_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'reserves_out'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_reserves_out_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'reserves_out_by_reserve'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'known_coins'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_known_coins_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'refresh_commitments'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_refresh_commitments_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'refresh_revealed_coins'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_refresh_revealed_coins_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'refresh_transfer_keys'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_refresh_transfer_keys_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'deposits'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_deposits_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'refunds'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_refunds_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'wire_out'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_wire_out_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'aggregation_transient'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'aggregation_tracking'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_aggregation_tracking_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'recoup'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_recoup_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'recoup_by_reserve'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'recoup_refresh'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_recoup_refresh_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'prewire'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'cs_nonce_locks'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_cs_nonce_locks_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'close_requests'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'reserves_open_requests'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_reserves_open_request_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'history_requests'
- ,modulus
- ,num_partitions
- );
- PERFORM create_hash_partition(
- 'purse_requests'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_purse_requests_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'purse_decision'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_purse_decision_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'purse_merges'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_purse_merges_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'account_merges'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_account_merges_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'contracts'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_contracts_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'purse_deposits'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_purse_deposits_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'wad_out_entries'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_wad_out_entries_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'wads_in'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_wads_in_partition(num_partitions::varchar);
- PERFORM create_hash_partition(
- 'wad_in_entries'
- ,modulus
- ,num_partitions
- );
- PERFORM add_constraints_to_wad_in_entries_partition(num_partitions::varchar);
- num_partitions=num_partitions-1;
- EXIT WHEN num_partitions=0;
- END LOOP;
- PERFORM drop_default_partitions();
-END
-$$;
-CREATE OR REPLACE FUNCTION create_foreign_hash_partition(
- source_table_name VARCHAR
- ,modulus INTEGER
- ,shard_suffix VARCHAR
- ,current_shard_num INTEGER
- ,local_user VARCHAR DEFAULT 'taler-exchange-httpd'
- )
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'Creating %_% on %', source_table_name, shard_suffix, shard_suffix;
- EXECUTE FORMAT(
- 'CREATE FOREIGN TABLE IF NOT EXISTS %I '
- 'PARTITION OF %I '
- 'FOR VALUES WITH (MODULUS %s, REMAINDER %s) '
- 'SERVER %I'
- ,source_table_name || '_' || shard_suffix
- ,source_table_name
- ,modulus
- ,current_shard_num-1
- ,shard_suffix
- );
- EXECUTE FORMAT(
- 'ALTER FOREIGN TABLE %I OWNER TO %I'
- ,source_table_name || '_' || shard_suffix
- ,local_user
- );
-END
-$$;
-CREATE OR REPLACE FUNCTION create_foreign_range_partition(
- source_table_name VARCHAR
- ,partition_num INTEGER
-)
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'TODO';
-END
-$$;
-CREATE OR REPLACE FUNCTION prepare_sharding()
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- CREATE EXTENSION IF NOT EXISTS postgres_fdw;
- PERFORM detach_default_partitions();
- ALTER TABLE IF EXISTS wire_targets
- DROP CONSTRAINT IF EXISTS wire_targets_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS reserves
- DROP CONSTRAINT IF EXISTS reserves_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS reserves_in
- DROP CONSTRAINT IF EXISTS reserves_in_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS reserves_close
- DROP CONSTRAINT IF EXISTS reserves_close_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS reserves_out
- DROP CONSTRAINT IF EXISTS reserves_out_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS reserves_out_denominations_serial_fkey
- ,DROP CONSTRAINT IF EXISTS reserves_out_h_blind_ev_key
- ;
- ALTER TABLE IF EXISTS known_coins
- DROP CONSTRAINT IF EXISTS known_coins_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS known_coins_denominations_serial_fkey
- ;
- ALTER TABLE IF EXISTS refresh_commitments
- DROP CONSTRAINT IF EXISTS refresh_commitments_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS refresh_old_coin_pub_fkey
- ;
- ALTER TABLE IF EXISTS refresh_revealed_coins
- DROP CONSTRAINT IF EXISTS refresh_revealed_coins_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS refresh_revealed_coins_denominations_serial_fkey
- ;
- ALTER TABLE IF EXISTS refresh_transfer_keys
- DROP CONSTRAINT IF EXISTS refresh_transfer_keys_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS deposits
- DROP CONSTRAINT IF EXISTS deposits_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS deposits_policy_details_serial_id_fkey
- ,DROP CONSTRAINT IF EXISTS deposits_coin_pub_merchant_pub_h_contract_terms_key CASCADE
- ;
- ALTER TABLE IF EXISTS refunds
- DROP CONSTRAINT IF EXISTS refunds_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS wire_out
- DROP CONSTRAINT IF EXISTS wire_out_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS wire_out_wtid_raw_key CASCADE
- ;
- ALTER TABLE IF EXISTS aggregation_tracking
- DROP CONSTRAINT IF EXISTS aggregation_tracking_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS aggregation_tracking_wtid_raw_fkey
- ;
- ALTER TABLE IF EXISTS recoup
- DROP CONSTRAINT IF EXISTS recoup_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS recoup_refresh
- DROP CONSTRAINT IF EXISTS recoup_refresh_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS prewire
- DROP CONSTRAINT IF EXISTS prewire_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS cs_nonce_locks
- DROP CONSTRAINT IF EXISTS cs_nonce_locks_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS purse_requests
- DROP CONSTRAINT IF EXISTS purse_requests_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS purse_decision
- DROP CONSTRAINT IF EXISTS purse_decision_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS purse_merges
- DROP CONSTRAINT IF EXISTS purse_merges_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS account_merges
- DROP CONSTRAINT IF EXISTS account_merges_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS contracts
- DROP CONSTRAINT IF EXISTS contracts_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS history_requests
- DROP CONSTRAINT IF EXISTS history_requests_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS close_requests
- DROP CONSTRAINT IF EXISTS close_requests_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS purse_deposits
- DROP CONSTRAINT IF EXISTS purse_deposits_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS wads_out
- DROP CONSTRAINT IF EXISTS wads_out_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS wad_out_entries
- DROP CONSTRAINT IF EXISTS wad_out_entries_pkey CASCADE
- ;
- ALTER TABLE IF EXISTS wads_in
- DROP CONSTRAINT IF EXISTS wads_in_pkey CASCADE
- ,DROP CONSTRAINT IF EXISTS wads_in_wad_id_origin_exchange_url_key
- ;
- ALTER TABLE IF EXISTS wad_in_entries
- DROP CONSTRAINT IF EXISTS wad_in_entries_pkey CASCADE
- ;
-END
-$$;
-CREATE OR REPLACE FUNCTION create_shard_server(
- shard_suffix VARCHAR
- ,total_num_shards INTEGER
- ,current_shard_num INTEGER
- ,remote_host VARCHAR
- ,remote_user VARCHAR
- ,remote_user_password VARCHAR
- ,remote_db_name VARCHAR DEFAULT 'taler-exchange'
- ,remote_port INTEGER DEFAULT '5432'
- ,local_user VARCHAR DEFAULT 'taler-exchange-httpd'
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-BEGIN
- RAISE NOTICE 'Creating server %', remote_host;
- EXECUTE FORMAT(
- 'CREATE SERVER IF NOT EXISTS %I '
- 'FOREIGN DATA WRAPPER postgres_fdw '
- 'OPTIONS (dbname %L, host %L, port %L)'
- ,shard_suffix
- ,remote_db_name
- ,remote_host
- ,remote_port
- );
- EXECUTE FORMAT(
- 'CREATE USER MAPPING IF NOT EXISTS '
- 'FOR %I SERVER %I '
- 'OPTIONS (user %L, password %L)'
- ,local_user
- ,shard_suffix
- ,remote_user
- ,remote_user_password
- );
- EXECUTE FORMAT(
- 'GRANT ALL PRIVILEGES '
- 'ON FOREIGN SERVER %I '
- 'TO %I;'
- ,shard_suffix
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'wire_targets'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'reserves'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'reserves_in'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'reserves_out'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'reserves_out_by_reserve'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'reserves_close'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'history_requests'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'close_requests'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'open_requests'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'known_coins'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'refresh_commitments'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'refresh_revealed_coins'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'refresh_transfer_keys'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'deposits'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'refunds'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'wire_out'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'aggregation_transient'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'aggregation_tracking'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'recoup'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'recoup_by_reserve'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'recoup_refresh'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'prewire'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'cs_nonce_locks'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'purse_requests'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'purse_decision'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'purse_merges'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'account_merges'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'contracts'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'purse_deposits'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'wad_out_entries'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'wads_in'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
- PERFORM create_foreign_hash_partition(
- 'wad_in_entries'
- ,total_num_shards
- ,shard_suffix
- ,current_shard_num
- ,local_user
- );
-END
-$$;
-COMMENT ON FUNCTION create_shard_server
- IS 'Create a shard server on the master
- node with all foreign tables and user mappings';
-CREATE OR REPLACE FUNCTION create_foreign_servers(
- amount INTEGER
- ,domain VARCHAR
- ,remote_user VARCHAR DEFAULT 'taler'
- ,remote_user_password VARCHAR DEFAULT 'taler'
-)
- RETURNS VOID
- LANGUAGE plpgsql
-AS $$
-BEGIN
- PERFORM prepare_sharding();
- FOR i IN 1..amount LOOP
- PERFORM create_shard_server(
- i::varchar
- ,amount
- ,i
- ,'shard-' || i::varchar || '.' || domain
- ,remote_user
- ,remote_user_password
- ,'taler-exchange'
- ,'5432'
- ,'taler-exchange-httpd'
- );
- END LOOP;
- PERFORM drop_default_partitions();
-END
-$$;
-CREATE OR REPLACE FUNCTION setup_shard(
- shard_idx INTEGER
-)
-RETURNS VOID
-LANGUAGE plpgsql
-AS $$
-DECLARE
- shard_suffix VARCHAR;
-BEGIN
- shard_suffix = shard_idx::varchar;
- PERFORM create_table_wire_targets(shard_suffix);
- PERFORM add_constraints_to_wire_targets_partition(shard_suffix);
- PERFORM create_table_reserves(shard_suffix);
- PERFORM create_table_legitimization_requirements(shard_suffix);
- PERFORM add_constraints_to_legitimization_requirements_partition(shard_suffix);
- PERFORM create_table_legitimization_processes(shard_suffix);
- PERFORM add_constraints_to_legitimization_processes_partition(shard_suffix);
- PERFORM create_table_reserves_in(shard_suffix);
- PERFORM add_constraints_to_reserves_in_partition(shard_suffix);
- PERFORM create_table_reserves_close(shard_suffix);
- PERFORM add_constraints_to_reserves_close_partition(shard_suffix);
- PERFORM create_table_reserves_open_requests(shard_suffix);
- PERFORM add_constraints_to_reserves_open_request_partition(shard_suffix);
- PERFORM create_table_reserves_open_deposits(shard_suffix);
- PERFORM add_constraints_to_reserves_open_deposits_partition(shard_suffix);
- PERFORM create_table_reserves_out(shard_suffix);
- PERFORM add_constraints_to_reserves_out_partition(shard_suffix);
- PERFORM create_table_reserves_out_by_reserve(shard_suffix);
- PERFORM create_table_known_coins(shard_suffix);
- PERFORM add_constraints_to_known_coins_partition(shard_suffix);
- PERFORM create_table_refresh_commitments(shard_suffix);
- PERFORM add_constraints_to_refresh_commitments_partition(shard_suffix);
- PERFORM create_table_refresh_revealed_coins(shard_suffix);
- PERFORM add_constraints_to_refresh_revealed_coins_partition(shard_suffix);
- PERFORM create_table_refresh_transfer_keys(shard_suffix);
- PERFORM add_constraints_to_refresh_transfer_keys_partition(shard_suffix);
- PERFORM create_table_deposits(shard_suffix);
- PERFORM add_constraints_to_deposits_partition(shard_suffix);
- PERFORM create_table_deposits_by_ready(shard_suffix);
- PERFORM create_table_deposits_for_matching(shard_suffix);
- PERFORM create_table_refunds(shard_suffix);
- PERFORM add_constraints_to_refunds_partition(shard_suffix);
- PERFORM create_table_wire_out(shard_suffix);
- PERFORM add_constraints_to_wire_out_partition(shard_suffix);
- PERFORM create_table_aggregation_transient(shard_suffix);
- PERFORM create_table_aggregation_tracking(shard_suffix);
- PERFORM add_constraints_to_aggregation_tracking_partition(shard_suffix);
- PERFORM create_table_recoup(shard_suffix);
- PERFORM add_constraints_to_recoup_partition(shard_suffix);
- PERFORM create_table_recoup_by_reserve(shard_suffix);
- PERFORM create_table_recoup_refresh(shard_suffix);
- PERFORM add_constraints_to_recoup_refresh_partition(shard_suffix);
- PERFORM create_table_prewire(shard_suffix);
- PERFORM create_table_cs_nonce_locks(shard_suffix);
- PERFORM add_constraints_to_cs_nonce_locks_partition(shard_suffix);
- PERFORM create_table_purse_requests(shard_suffix);
- PERFORM add_constraints_to_purse_requests_partition(shard_suffix);
- PERFORM create_table_purse_decision(shard_suffix);
- PERFORM add_constraints_to_purse_decision_partition(shard_suffix);
- PERFORM create_table_purse_merges(shard_suffix);
- PERFORM add_constraints_to_purse_merges_partition(shard_suffix);
- PERFORM create_table_account_merges(shard_suffix);
- PERFORM add_constraints_to_account_merges_partition(shard_suffix);
- PERFORM create_table_contracts(shard_suffix);
- PERFORM add_constraints_to_contracts_partition(shard_suffix);
- PERFORM create_table_history_requests(shard_suffix);
- PERFORM create_table_close_requests(shard_suffix);
- PERFORM add_constraints_to_close_requests_partition(shard_suffix);
- PERFORM create_table_purse_deposits(shard_suffix);
- PERFORM add_constraints_to_purse_deposits_partition(shard_suffix);
- PERFORM create_table_wad_out_entries(shard_suffix);
- PERFORM add_constraints_to_wad_out_entries_partition(shard_suffix);
- PERFORM create_table_wads_in(shard_suffix);
- PERFORM add_constraints_to_wads_in_partition(shard_suffix);
- PERFORM create_table_wad_in_entries(shard_suffix);
- PERFORM add_constraints_to_wad_in_entries_partition(shard_suffix);
-END
-$$;
-COMMIT;