diff options
Diffstat (limited to 'src/exchangedb')
-rw-r--r-- | src/exchangedb/exchange-0001.sql | 186 | ||||
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 5 | ||||
-rw-r--r-- | src/exchangedb/test_exchangedb.c | 2 |
3 files changed, 100 insertions, 93 deletions
diff --git a/src/exchangedb/exchange-0001.sql b/src/exchangedb/exchange-0001.sql index baf0056b..272ee84b 100644 --- a/src/exchangedb/exchange-0001.sql +++ b/src/exchangedb/exchange-0001.sql @@ -88,7 +88,7 @@ CREATE TABLE IF NOT EXISTS wire_targets_default PARTITION OF wire_targets FOR VALUES WITH (MODULUS 1, REMAINDER 0); --- FIXME partition by serial_id rather than h_payto, +-- FIXME partition by serial_id rather than h_payto, -- it is used more in join conditions - crucial for sharding to select this. -- Author: (Boss Marco) CREATE INDEX IF NOT EXISTS wire_targets_serial_id_index @@ -108,19 +108,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'reserves' - ELSE + ELSE 'reserves_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (reserve_pub);' - ELSE + ELSE ';' END; @@ -189,19 +189,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'reserves_in' - ELSE + ELSE 'reserves_in_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (reserve_pub);' - ELSE + ELSE ';' END; @@ -267,19 +267,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'reserves_close' - ELSE + ELSE 'reserves_close_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (reserve_pub);' - ELSE + ELSE ';' END; @@ -335,19 +335,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'reserves_out' - ELSE + ELSE 'reserves_out_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (h_blind_ev);' - ELSE + ELSE ';' END; @@ -488,19 +488,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'known_coins' - ELSE + ELSE 'known_coins_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (coin_pub);' -- FIXME: or include denominations_serial? or multi-level partitioning? - ELSE + ELSE ';' END; @@ -559,19 +559,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'refresh_commitments' - ELSE + ELSE 'refresh_commitments_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (rc);' - ELSE + ELSE ';' END; @@ -632,19 +632,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'refresh_revealed_coins' - ELSE + ELSE 'refresh_revealed_coins_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (melt_serial_id);' - ELSE + ELSE ';' END; @@ -715,19 +715,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'refresh_transfer_keys' - ELSE + ELSE 'refresh_transfer_keys_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (melt_serial_id);' - ELSE + ELSE ';' END; @@ -790,19 +790,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'deposits' - ELSE + ELSE 'deposits_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (shard);' - ELSE + ELSE ';' END; @@ -902,19 +902,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'refunds' - ELSE + ELSE 'refunds_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (deposit_serial_id);' - ELSE + ELSE ';' END; @@ -969,19 +969,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'wire_out' - ELSE + ELSE 'wire_out_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (wtid_raw);' - ELSE + ELSE ';' END; @@ -1037,19 +1037,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'aggregation_tracking' - ELSE + ELSE 'aggregation_tracking_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (deposit_serial_id);' - ELSE + ELSE ';' END; @@ -1123,19 +1123,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'recoup' - ELSE + ELSE 'recoup_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (known_coin_id);' - ELSE + ELSE ';' END; @@ -1199,19 +1199,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'recoup_refresh' - ELSE + ELSE 'recoup_refresh_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (known_coin_id);' - ELSE + ELSE ';' END; @@ -1273,19 +1273,19 @@ DECLARE partition_str VARCHAR; BEGIN - table_name = CASE + table_name = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'prewire' - ELSE + ELSE 'prewire_' || shard_suffix END; - partition_str = CASE + partition_str = CASE shard_suffix - WHEN '' THEN + WHEN '' THEN 'PARTITION BY HASH (prewire_uuid);' - ELSE + ELSE ';' END; @@ -1697,8 +1697,8 @@ IF EXISTS ( SELECT 1 FROM information_Schema.constraint_column_usage WHERE table_name='wire_out' - AND constraint_name='wire_out_ref') -THEN + AND constraint_name='wire_out_ref') +THEN SET CONSTRAINTS wire_out_ref DEFERRED; END IF; diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 2476fcfd..1ee401bc 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -1240,6 +1240,7 @@ prepare_statements (struct PostgresClosure *pg) " aggregation_serial_id" ",deposits.h_contract_terms" ",payto_uri" + ",h_payto" ",kc.coin_pub" ",deposits.merchant_pub" ",wire_out.execution_date" @@ -7160,6 +7161,7 @@ handle_wt_result (void *cls, uint64_t rowid; struct TALER_PrivateContractHashP h_contract_terms; struct TALER_CoinSpendPublicKeyP coin_pub; + struct TALER_PaytoHashP h_payto; struct TALER_MerchantPublicKeyP merchant_pub; struct GNUNET_TIME_Timestamp exec_time; struct TALER_Amount amount_with_fee; @@ -7172,6 +7174,8 @@ handle_wt_result (void *cls, &h_contract_terms), GNUNET_PQ_result_spec_string ("payto_uri", &payto_uri), + GNUNET_PQ_result_spec_auto_from_type ("h_payto", + &h_payto), TALER_PQ_result_spec_denom_pub ("denom_pub", &denom_pub), GNUNET_PQ_result_spec_auto_from_type ("coin_pub", @@ -7200,6 +7204,7 @@ handle_wt_result (void *cls, rowid, &merchant_pub, payto_uri, + &h_payto, exec_time, &h_contract_terms, &denom_pub, diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c index a3652a50..497d6140 100644 --- a/src/exchangedb/test_exchangedb.c +++ b/src/exchangedb/test_exchangedb.c @@ -536,6 +536,7 @@ cb_wt_never (void *cls, uint64_t serial_id, const struct TALER_MerchantPublicKeyP *merchant_pub, const char *account_payto_uri, + const struct TALER_PaytoHashP *h_payto, struct GNUNET_TIME_Timestamp exec_time, const struct TALER_PrivateContractHashP *h_contract_terms, const struct TALER_DenominationPublicKey *denom_pub, @@ -576,6 +577,7 @@ cb_wt_check (void *cls, uint64_t rowid, const struct TALER_MerchantPublicKeyP *merchant_pub, const char *account_payto_uri, + const struct TALER_PaytoHashP *h_payto, struct GNUNET_TIME_Timestamp exec_time, const struct TALER_PrivateContractHashP *h_contract_terms, const struct TALER_DenominationPublicKey *denom_pub, |