From 67aeb85a13db9acf9505098d82433cf7e7cfa23a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 2 Sep 2019 08:01:55 +0200 Subject: misc. auditor bugfixes --- src/auditordb/plugin_auditordb_postgres.c | 40 ++++++++++++++++++++++--------- src/auditordb/test_auditordb.c | 9 +++++++ 2 files changed, 38 insertions(+), 11 deletions(-) (limited to 'src/auditordb') diff --git a/src/auditordb/plugin_auditordb_postgres.c b/src/auditordb/plugin_auditordb_postgres.c index daa1c1418..df357fa5a 100644 --- a/src/auditordb/plugin_auditordb_postgres.c +++ b/src/auditordb/plugin_auditordb_postgres.c @@ -358,6 +358,8 @@ postgres_create_tables (void *cls) " REFERENCES auditor_denominations (denom_pub_hash) ON DELETE CASCADE" ",denom_balance_val INT8 NOT NULL" ",denom_balance_frac INT4 NOT NULL" + ",denom_loss_val INT8 NOT NULL" + ",denom_loss_frac INT4 NOT NULL" ",num_issued INT8 NOT NULL" ",denom_risk_val INT8 NOT NULL" ",denom_risk_frac INT4 NOT NULL" @@ -860,30 +862,38 @@ postgres_prepare (PGconn *db_conn) "(denom_pub_hash" ",denom_balance_val" ",denom_balance_frac" + ",denom_loss_val" + ",denom_loss_frac" ",num_issued" ",denom_risk_val" ",denom_risk_frac" ",payback_loss_val" ",payback_loss_frac" - ") VALUES ($1,$2,$3,$4,$5,$6,$7,$8);", - 8), + ") VALUES (" + "$1,$2,$3,$4,$5,$6,$7,$8,$9,$10" + ");", + 10), /* Used in #postgres_update_denomination_balance() */ GNUNET_PQ_make_prepare ("auditor_denomination_pending_update", "UPDATE auditor_denomination_pending SET" " denom_balance_val=$1" ",denom_balance_frac=$2" - ",num_issued=$3" - ",denom_risk_val=$4" - ",denom_risk_frac=$5" - ",payback_loss_val=$6" - ",payback_loss_frac=$7" - " WHERE denom_pub_hash=$8", - 8), + ",denom_loss_val=$3" + ",denom_loss_frac=$4" + ",num_issued=$5" + ",denom_risk_val=$6" + ",denom_risk_frac=$7" + ",payback_loss_val=$8" + ",payback_loss_frac=$9" + " WHERE denom_pub_hash=$10", + 10), /* Used in #postgres_get_denomination_balance() */ GNUNET_PQ_make_prepare ("auditor_denomination_pending_select", "SELECT" " denom_balance_val" ",denom_balance_frac" + ",denom_loss_val" + ",denom_loss_frac" ",num_issued" ",denom_risk_val" ",denom_risk_frac" @@ -2814,6 +2824,7 @@ postgres_get_wire_fee_summary (void *cls, * @param session connection to use * @param denom_pub_hash hash of the denomination public key * @param denom_balance value of coins outstanding with this denomination key + * @param denom_loss value of coins redeemed that were not outstanding (effectively, negative @a denom_balance) * @param denom_risk value of coins issued with this denomination key * @param payback_loss losses from payback (if this denomination was revoked) * @param num_issued how many coins of this denomination did the exchange blind-sign @@ -2825,6 +2836,7 @@ postgres_insert_denomination_balance (void *cls, const struct GNUNET_HashCode *denom_pub_hash, const struct TALER_Amount *denom_balance, + const struct TALER_Amount *denom_loss, const struct TALER_Amount *denom_risk, const struct TALER_Amount *payback_loss, uint64_t num_issued) @@ -2832,6 +2844,7 @@ postgres_insert_denomination_balance (void *cls, struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_auto_from_type (denom_pub_hash), TALER_PQ_query_param_amount (denom_balance), + TALER_PQ_query_param_amount (denom_loss), GNUNET_PQ_query_param_uint64 (&num_issued), TALER_PQ_query_param_amount (denom_risk), TALER_PQ_query_param_amount (payback_loss), @@ -2852,7 +2865,8 @@ postgres_insert_denomination_balance (void *cls, * @param session connection to use * @param denom_pub_hash hash of the denomination public key * @param denom_balance value of coins outstanding with this denomination key - * @param denom_risk value of coins issued with this denomination key + * @param denom_loss value of coins redeemed that were not outstanding (effectively, negative @a denom_balance) +* @param denom_risk value of coins issued with this denomination key * @param payback_loss losses from payback (if this denomination was revoked) * @param num_issued how many coins of this denomination did the exchange blind-sign * @return transaction status code @@ -2863,12 +2877,14 @@ postgres_update_denomination_balance (void *cls, const struct GNUNET_HashCode *denom_pub_hash, const struct TALER_Amount *denom_balance, + const struct TALER_Amount *denom_loss, const struct TALER_Amount *denom_risk, const struct TALER_Amount *payback_loss, uint64_t num_issued) { struct GNUNET_PQ_QueryParam params[] = { TALER_PQ_query_param_amount (denom_balance), + TALER_PQ_query_param_amount (denom_loss), GNUNET_PQ_query_param_uint64 (&num_issued), TALER_PQ_query_param_amount (denom_risk), TALER_PQ_query_param_amount (payback_loss), @@ -2890,6 +2906,7 @@ postgres_update_denomination_balance (void *cls, * @param denom_pub_hash hash of the denomination public key * @param[out] denom_balance value of coins outstanding with this denomination key * @param[out] denom_risk value of coins issued with this denomination key + * @param[out] denom_loss value of coins redeemed that were not outstanding (effectively, negative @a denom_balance) * @param[out] payback_loss losses from payback (if this denomination was revoked) * @param[out] num_issued how many coins of this denomination did the exchange blind-sign * @return transaction status code @@ -2899,6 +2916,7 @@ postgres_get_denomination_balance (void *cls, struct TALER_AUDITORDB_Session *session, const struct GNUNET_HashCode *denom_pub_hash, struct TALER_Amount *denom_balance, + struct TALER_Amount *denom_loss, struct TALER_Amount *denom_risk, struct TALER_Amount *payback_loss, uint64_t *num_issued) @@ -2910,6 +2928,7 @@ postgres_get_denomination_balance (void *cls, }; struct GNUNET_PQ_ResultSpec rs[] = { TALER_PQ_RESULT_SPEC_AMOUNT ("denom_balance", denom_balance), + TALER_PQ_RESULT_SPEC_AMOUNT ("denom_loss", denom_loss), TALER_PQ_RESULT_SPEC_AMOUNT ("denom_risk", denom_risk), TALER_PQ_RESULT_SPEC_AMOUNT ("payback_loss", payback_loss), GNUNET_PQ_result_spec_uint64 ("num_issued", num_issued), @@ -2964,7 +2983,6 @@ postgres_insert_balance_summary (void *cls, GNUNET_assert (GNUNET_YES == TALER_amount_cmp_currency (denom_balance, deposit_fee_balance)); - GNUNET_assert (GNUNET_YES == TALER_amount_cmp_currency (denom_balance, melt_fee_balance)); diff --git a/src/auditordb/test_auditordb.c b/src/auditordb/test_auditordb.c index 8f226266a..f286660fb 100644 --- a/src/auditordb/test_auditordb.c +++ b/src/auditordb/test_auditordb.c @@ -369,6 +369,8 @@ run (void *cls) "Test: insert_denomination_balance\n"); struct TALER_Amount denom_balance; + struct TALER_Amount denom_loss; + struct TALER_Amount denom_loss2; struct TALER_Amount deposit_fee_balance; struct TALER_Amount melt_fee_balance; struct TALER_Amount refund_fee_balance; @@ -385,6 +387,9 @@ run (void *cls) GNUNET_assert (GNUNET_OK == TALER_string_to_amount (CURRENCY ":12.345678", &denom_balance)); + GNUNET_assert (GNUNET_OK == + TALER_string_to_amount (CURRENCY ":0.1", + &denom_loss)); GNUNET_assert (GNUNET_OK == TALER_string_to_amount (CURRENCY ":23.456789", &deposit_fee_balance)); @@ -406,6 +411,7 @@ run (void *cls) session, &denom_pub_hash, &denom_balance, + &denom_loss, &rbalance, &loss, 42)); @@ -423,6 +429,7 @@ run (void *cls) session, &denom_pub_hash, &denom_balance, + &denom_loss, &rbalance, &loss, 62)); @@ -434,11 +441,13 @@ run (void *cls) session, &denom_pub_hash, &denom_balance2, + &denom_loss2, &rbalance2, &loss2, &nissued)); FAILIF (0 != GNUNET_memcmp (&denom_balance2, &denom_balance)); + FAILIF (0 != GNUNET_memcmp (&denom_loss2, &denom_loss)); FAILIF (0 != GNUNET_memcmp (&rbalance2, &rbalance)); FAILIF (62 != nissued); -- cgit v1.2.3