add required rowid for diagnostics

This commit is contained in:
Christian Grothoff 2017-03-15 13:36:47 +01:00
parent a3db0d4a8c
commit 54b3a9e930
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
4 changed files with 12 additions and 5 deletions

View File

@ -26,7 +26,6 @@
* *
* TODO: * TODO:
* - modify auditordb to allow multiple last serial IDs per table in progress tracking * - modify auditordb to allow multiple last serial IDs per table in progress tracking
* - modify auditordb to return row ID where we need it for diagnostics
* - implement coin/denomination audit * - implement coin/denomination audit
* - implement merchant deposit audit * - implement merchant deposit audit
* - see if we need more tables there * - see if we need more tables there
@ -367,11 +366,13 @@ static int
load_auditor_reserve_summary (struct ReserveSummary *rs) load_auditor_reserve_summary (struct ReserveSummary *rs)
{ {
int ret; int ret;
uint64_t rowid;
ret = adb->get_reserve_info (adb->cls, ret = adb->get_reserve_info (adb->cls,
asession, asession,
&rs->reserve_pub, &rs->reserve_pub,
&master_pub, &master_pub,
&rowid,
&rs->a_balance, &rs->a_balance,
&rs->a_withdraw_fee_balance, &rs->a_withdraw_fee_balance,
&rs->a_expiration_date, &rs->a_expiration_date,
@ -402,7 +403,7 @@ load_auditor_reserve_summary (struct ReserveSummary *rs)
&rs->a_balance)) ) &rs->a_balance)) )
{ {
report_row_inconsistency ("auditor-reserve-info", report_row_inconsistency ("auditor-reserve-info",
UINT64_MAX, /* FIXME: modify API to get rowid! */ rowid,
"currencies for reserve differ"); "currencies for reserve differ");
/* TODO: find a sane way to continue... */ /* TODO: find a sane way to continue... */
GNUNET_break (0); GNUNET_break (0);

View File

@ -300,6 +300,7 @@ postgres_create_tables (void *cls)
",expiration_date INT8 NOT NULL" ",expiration_date INT8 NOT NULL"
",last_reserve_in_serial_id INT8 NOT NULL" ",last_reserve_in_serial_id INT8 NOT NULL"
",last_reserve_out_serial_id INT8 NOT NULL" ",last_reserve_out_serial_id INT8 NOT NULL"
",auditor_reserves_rowid BIGSERIAL"
")"); ")");
SQLEXEC_INDEX("CREATE INDEX auditor_reserves_by_reserve_pub " SQLEXEC_INDEX("CREATE INDEX auditor_reserves_by_reserve_pub "
@ -645,6 +646,7 @@ postgres_prepare (PGconn *db_conn)
",expiration_date" ",expiration_date"
",last_reserve_in_serial_id" ",last_reserve_in_serial_id"
",last_reserve_out_serial_id" ",last_reserve_out_serial_id"
",auditor_reserves_rowid"
" FROM auditor_reserves" " FROM auditor_reserves"
" WHERE reserve_pub=$1 AND master_pub=$2;", " WHERE reserve_pub=$1 AND master_pub=$2;",
2, NULL); 2, NULL);
@ -1656,6 +1658,7 @@ postgres_del_reserve_info (void *cls,
* @param session connection to use * @param session connection to use
* @param reserve_pub public key of the reserve * @param reserve_pub public key of the reserve
* @param master_pub master public key of the exchange * @param master_pub master public key of the exchange
* @param[out] rowid which row did we get the information from
* @param[out] reserve_balance amount stored in the reserve * @param[out] reserve_balance amount stored in the reserve
* @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees * @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees
* due to withdrawals from this reserve * due to withdrawals from this reserve
@ -1672,6 +1675,7 @@ postgres_get_reserve_info (void *cls,
struct TALER_AUDITORDB_Session *session, struct TALER_AUDITORDB_Session *session,
const struct TALER_ReservePublicKeyP *reserve_pub, const struct TALER_ReservePublicKeyP *reserve_pub,
const struct TALER_MasterPublicKeyP *master_pub, const struct TALER_MasterPublicKeyP *master_pub,
uint64_t *rowid,
struct TALER_Amount *reserve_balance, struct TALER_Amount *reserve_balance,
struct TALER_Amount *withdraw_fee_balance, struct TALER_Amount *withdraw_fee_balance,
struct GNUNET_TIME_Absolute *expiration_date, struct GNUNET_TIME_Absolute *expiration_date,
@ -1708,12 +1712,10 @@ postgres_get_reserve_info (void *cls,
struct GNUNET_PQ_ResultSpec rs[] = { struct GNUNET_PQ_ResultSpec rs[] = {
TALER_PQ_result_spec_amount ("reserve_balance", reserve_balance), TALER_PQ_result_spec_amount ("reserve_balance", reserve_balance),
TALER_PQ_result_spec_amount ("withdraw_fee_balance", withdraw_fee_balance), TALER_PQ_result_spec_amount ("withdraw_fee_balance", withdraw_fee_balance),
GNUNET_PQ_result_spec_auto_from_type ("expiration_date", expiration_date), GNUNET_PQ_result_spec_auto_from_type ("expiration_date", expiration_date),
GNUNET_PQ_result_spec_uint64 ("last_reserve_in_serial_id", last_reserve_in_serial_id), GNUNET_PQ_result_spec_uint64 ("last_reserve_in_serial_id", last_reserve_in_serial_id),
GNUNET_PQ_result_spec_uint64 ("last_reserve_out_serial_id", last_reserve_out_serial_id), GNUNET_PQ_result_spec_uint64 ("last_reserve_out_serial_id", last_reserve_out_serial_id),
GNUNET_PQ_result_spec_uint64 ("auditor_reserves_rowid", rowid),
GNUNET_PQ_result_spec_end GNUNET_PQ_result_spec_end
}; };
if (GNUNET_OK != if (GNUNET_OK !=

View File

@ -73,6 +73,7 @@ run (void *cls)
{ {
struct GNUNET_CONFIGURATION_Handle *cfg = cls; struct GNUNET_CONFIGURATION_Handle *cfg = cls;
struct TALER_AUDITORDB_Session *session; struct TALER_AUDITORDB_Session *session;
uint64_t rowid;
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"loading database plugin\n"); "loading database plugin\n");
@ -303,6 +304,7 @@ run (void *cls)
session, session,
&reserve_pub, &reserve_pub,
&master_pub, &master_pub,
&rowid,
&reserve_balance2, &reserve_balance2,
&withdraw_fee_balance2, &withdraw_fee_balance2,
&date, &date,

View File

@ -413,6 +413,7 @@ struct TALER_AUDITORDB_Plugin
* @param session connection to use * @param session connection to use
* @param reserve_pub public key of the reserve * @param reserve_pub public key of the reserve
* @param master_pub master public key of the exchange * @param master_pub master public key of the exchange
* @param[out] rowid which row did we get the information from
* @param[out] reserve_balance amount stored in the reserve * @param[out] reserve_balance amount stored in the reserve
* @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees * @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees
* due to withdrawals from this reserve * due to withdrawals from this reserve
@ -429,6 +430,7 @@ struct TALER_AUDITORDB_Plugin
struct TALER_AUDITORDB_Session *session, struct TALER_AUDITORDB_Session *session,
const struct TALER_ReservePublicKeyP *reserve_pub, const struct TALER_ReservePublicKeyP *reserve_pub,
const struct TALER_MasterPublicKeyP *master_pub, const struct TALER_MasterPublicKeyP *master_pub,
uint64_t *rowid,
struct TALER_Amount *reserve_balance, struct TALER_Amount *reserve_balance,
struct TALER_Amount *withdraw_fee_balance, struct TALER_Amount *withdraw_fee_balance,
struct GNUNET_TIME_Absolute *expiration_date, struct GNUNET_TIME_Absolute *expiration_date,