aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2024-08-28 22:42:33 +0200
committerChristian Grothoff <christian@grothoff.org>2024-08-28 22:42:33 +0200
commitd16350ef1085bc16f2ef04eb8fe60edeb0f6978d (patch)
tree365d23207a023f47466b293f13080be274c11563
parent94339b2d73c6df0d61ee18f60e2a4b16bc56c750 (diff)
fix patch from Nic and also fix various other auditor bugs found during review
-rw-r--r--src/auditor/taler-helper-auditor-aggregation.c8
-rw-r--r--src/auditor/taler-helper-auditor-coins.c12
-rw-r--r--src/auditor/taler-helper-auditor-purses.c9
-rw-r--r--src/auditor/taler-helper-auditor-reserves.c16
-rw-r--r--src/auditor/taler-helper-auditor-wire-debit.c1
-rw-r--r--src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql8
-rw-r--r--src/auditordb/0002-auditor_bad_sig_losses.sql6
-rw-r--r--src/auditordb/0002-auditor_closure_lags.sql3
-rw-r--r--src/auditordb/0002-auditor_coin_inconsistency.sql8
-rw-r--r--src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql7
-rw-r--r--src/auditordb/0002-auditor_denominations_without_sigs.sql2
-rw-r--r--src/auditordb/0002-auditor_deposit_confirmations.sql1
-rw-r--r--src/auditordb/0002-auditor_emergency.sql9
-rw-r--r--src/auditordb/0002-auditor_emergency_by_count.sql6
-rw-r--r--src/auditordb/0002-auditor_fee_time_inconsistency.sql1
-rw-r--r--src/auditordb/0002-auditor_historic_denomination_revenue.sql5
-rw-r--r--src/auditordb/0002-auditor_historic_reserve_summary.sql3
-rw-r--r--src/auditordb/0002-auditor_misattribution_in_inconsistency.sql5
-rw-r--r--src/auditordb/0002-auditor_pending_deposits.sql1
-rw-r--r--src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql7
-rw-r--r--src/auditordb/0002-auditor_purses.sql3
-rw-r--r--src/auditordb/0002-auditor_refreshes_hanging.sql5
-rw-r--r--src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql2
-rw-r--r--src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql5
-rw-r--r--src/auditordb/0002-auditor_reserve_in_inconsistency.sql2
-rw-r--r--src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql4
-rw-r--r--src/auditordb/0002-auditor_reserves.sql1
-rw-r--r--src/auditordb/0002-auditor_row_inconsistency.sql3
-rw-r--r--src/auditordb/0002-auditor_wire_format_inconsistency.sql5
-rw-r--r--src/auditordb/0002-auditor_wire_out_inconsistency.sql1
-rw-r--r--src/auditordb/pg_helper.c1
-rw-r--r--src/auditordb/pg_helper.h28
-rw-r--r--src/auditordb/pg_insert_amount_arithmetic_inconsistency.c20
-rw-r--r--src/auditordb/pg_insert_auditor_closure_lags.c13
-rw-r--r--src/auditordb/pg_insert_bad_sig_losses.c22
-rw-r--r--src/auditordb/pg_insert_coin_inconsistency.c14
-rw-r--r--src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c9
-rw-r--r--src/auditordb/pg_insert_denominations_without_sigs.c7
-rw-r--r--src/auditordb/pg_insert_emergency.c15
-rw-r--r--src/auditordb/pg_insert_fee_time_inconsistency.c11
-rw-r--r--src/auditordb/pg_insert_misattribution_in_inconsistency.c1
-rw-r--r--src/auditordb/pg_insert_purse_not_closed_inconsistencies.c13
-rw-r--r--src/auditordb/pg_insert_refreshes_hanging.c16
-rw-r--r--src/auditordb/pg_insert_row_inconsistency.c1
-rw-r--r--src/auditordb/pg_insert_wire_format_inconsistency.c9
-rw-r--r--src/auditordb/plugin_auditordb_postgres.c2
-rw-r--r--src/include/taler_auditordb_plugin.h8
47 files changed, 137 insertions, 202 deletions
diff --git a/src/auditor/taler-helper-auditor-aggregation.c b/src/auditor/taler-helper-auditor-aggregation.c
index a6122e513..22ba23b4c 100644
--- a/src/auditor/taler-helper-auditor-aggregation.c
+++ b/src/auditor/taler-helper-auditor-aggregation.c
@@ -140,13 +140,14 @@ report_amount_arithmetic_inconsistency (
}
{
- enum GNUNET_DB_QueryStatus qs;
struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
+ .problem_row_id = rowid,
.profitable = profitable,
.operation = (char *) operation,
.exchange_amount = *exchange,
.auditor_amount = *auditor
};
+ enum GNUNET_DB_QueryStatus qs;
qs = TALER_ARL_adb->insert_amount_arithmetic_inconsistency (
TALER_ARL_adb->cls,
@@ -899,7 +900,7 @@ wire_transfer_information_cb (
denom_pub))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "wire",
.loss = *coin_value,
.operation_specific_pub = coin.coin_pub.eddsa_pub
@@ -1128,6 +1129,7 @@ get_wire_fee (struct AggregationContext *ac,
wfi->start_date))
{
struct TALER_AUDITORDB_FeeTimeInconsistency ftib = {
+ .problem_row_id = 0, /* FIXME: fetch above! */
.diagnostic = "start date before previous end date",
.time = wfi->start_date.abs_time,
.type = (char *) method
@@ -1136,7 +1138,6 @@ get_wire_fee (struct AggregationContext *ac,
qs = TALER_ARL_adb->insert_fee_time_inconsistency (
TALER_ARL_adb->cls,
&ftib);
-
if (qs < 0)
{
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
@@ -1150,6 +1151,7 @@ get_wire_fee (struct AggregationContext *ac,
wfi->end_date))
{
struct TALER_AUDITORDB_FeeTimeInconsistency ftia = {
+ .problem_row_id = 0, /* FIXME: fetch above! */
.diagnostic = "end date date after next start date",
.time = wfi->end_date.abs_time,
.type = (char *) method
diff --git a/src/auditor/taler-helper-auditor-coins.c b/src/auditor/taler-helper-auditor-coins.c
index 8a9f8f0ac..6e530ef37 100644
--- a/src/auditor/taler-helper-auditor-coins.c
+++ b/src/auditor/taler-helper-auditor-coins.c
@@ -364,6 +364,7 @@ report_amount_arithmetic_inconsistency (
{
struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
.profitable = profitable,
+ .problem_row_id = rowid,
.operation = (char *) operation,
.exchange_amount = *exchange,
.auditor_amount = *auditor
@@ -1207,6 +1208,7 @@ check_known_coin (
denom_pub))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = (char *) operation,
.loss = *loss_potential,
.operation_specific_pub = coin_pub->eddsa_pub
@@ -1386,6 +1388,7 @@ refresh_session_cb (void *cls,
coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "melt",
.loss = *amount_with_fee,
.operation_specific_pub = coin_pub->eddsa_pub
@@ -1442,7 +1445,7 @@ refresh_session_cb (void *cls,
with invalid data, even if the exchange is correctly operating. We
still report it. */
struct TALER_AUDITORDB_RefreshesHanging rh = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.amount = *amount_with_fee,
.coin_pub = coin_pub->eddsa_pub
};
@@ -1731,6 +1734,7 @@ deposit_cb (void *cls,
&deposit->csig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "deposit",
.loss = deposit->amount_with_fee,
.operation_specific_pub = deposit->coin.coin_pub.eddsa_pub
@@ -1867,6 +1871,7 @@ refund_cb (void *cls,
merchant_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "refund",
.loss = *amount_with_fee,
.operation_specific_pub = coin_pub->eddsa_pub
@@ -2145,6 +2150,7 @@ check_recoup (struct CoinContext *cc,
denom_pub))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = (char *) operation,
.loss = *amount,
.operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2217,6 +2223,7 @@ check_recoup (struct CoinContext *cc,
if (! ds->was_revoked)
{
struct TALER_AUDITORDB_BadSigLosses bsldnr = {
+ .problem_row_id = rowid,
.operation = (char *) operation,
.loss = *amount,
.operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2286,6 +2293,7 @@ recoup_cb (void *cls,
coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "recoup",
.loss = *amount,
.operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2416,6 +2424,7 @@ recoup_refresh_cb (void *cls,
coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "recoup-refresh",
.loss = *amount,
.operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2607,6 +2616,7 @@ purse_deposit_cb (
&deposit->coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
+ .problem_row_id = rowid,
.operation = "purse-deposit",
.loss = deposit->amount,
.operation_specific_pub = deposit->coin_pub.eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-purses.c b/src/auditor/taler-helper-auditor-purses.c
index 8d86bba85..f9988fb52 100644
--- a/src/auditor/taler-helper-auditor-purses.c
+++ b/src/auditor/taler-helper-auditor-purses.c
@@ -146,6 +146,7 @@ report_amount_arithmetic_inconsistency (
{
struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
.profitable = profitable,
+ .problem_row_id = rowid,
.operation = (char *) operation,
.exchange_amount = *exchange,
.auditor_amount = *auditor
@@ -504,7 +505,7 @@ handle_purse_requested (
purse_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "purse-request",
.loss = *target_amount,
.operation_specific_pub = purse_pub->eddsa_pub
@@ -629,7 +630,7 @@ handle_purse_deposits (
&deposit->coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "purse-deposit",
.loss = deposit->amount,
.operation_specific_pub = deposit->coin_pub.eddsa_pub
@@ -736,7 +737,7 @@ handle_purse_merged (
merge_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "merge-purse",
.loss = *amount,
.operation_specific_pub = merge_pub->eddsa_pub
@@ -845,7 +846,7 @@ handle_account_merged (
reserve_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "account-merge",
.loss = *purse_fee,
.operation_specific_pub = reserve_pub->eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-reserves.c b/src/auditor/taler-helper-auditor-reserves.c
index 111290adf..54fa043f5 100644
--- a/src/auditor/taler-helper-auditor-reserves.c
+++ b/src/auditor/taler-helper-auditor-reserves.c
@@ -170,7 +170,7 @@ report_amount_arithmetic_inconsistency (
{
struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.profitable = profitable,
.operation = (char *) operation,
.exchange_amount = *exchange,
@@ -581,7 +581,7 @@ handle_reserve_out (
execution_date))
{
struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency dkvwi ={
- .row_id = rowid,
+ .problem_row_id = rowid,
.execution_date = execution_date.abs_time,
.denompub_h = *&h_denom_pub,
.reserve_pub = *reserve_pub
@@ -609,7 +609,7 @@ handle_reserve_out (
reserve_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "withdraw",
.loss = *amount_with_fee,
.operation_specific_pub = reserve_pub->eddsa_pub
@@ -720,7 +720,7 @@ handle_recoup_by_reserve (
coin_sig))
{
struct TALER_AUDITORDB_BadSigLosses bslr = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "recoup",
.loss = *amount,
.operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -799,7 +799,7 @@ handle_recoup_by_reserve (
"master signature invalid")))
{
struct TALER_AUDITORDB_BadSigLosses bslrm = {
- .row_id = rev_rowid,
+ .problem_row_id = rev_rowid,
.operation = "recoup-master",
.loss = *amount,
.operation_specific_pub = TALER_ARL_master_pub.eddsa_pub
@@ -945,7 +945,7 @@ handle_reserve_open (
reserve_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "reserve-open",
.loss = *reserve_payment,
.operation_specific_pub = reserve_pub->eddsa_pub
@@ -1100,7 +1100,7 @@ handle_reserve_closed (
&reserve_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = close_request_row,
+ .problem_row_id = close_request_row,
.operation = "close-request",
.loss = *amount_with_fee,
.operation_specific_pub = reserve_pub->eddsa_pub
@@ -1246,7 +1246,7 @@ handle_account_merged (
reserve_sig))
{
struct TALER_AUDITORDB_BadSigLosses bsl = {
- .row_id = rowid,
+ .problem_row_id = rowid,
.operation = "account-merge",
.loss = *purse_fee,
.operation_specific_pub = reserve_pub->eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-wire-debit.c b/src/auditor/taler-helper-auditor-wire-debit.c
index 2a714d3f3..d3f9aacc0 100644
--- a/src/auditor/taler-helper-auditor-wire-debit.c
+++ b/src/auditor/taler-helper-auditor-wire-debit.c
@@ -455,6 +455,7 @@ check_pending_rc (void *cls,
if (! TALER_amount_is_zero (&rc->amount))
{
struct TALER_AUDITORDB_ClosureLags cl = {
+ .problem_row_id = rc->rowid,
.account = rc->receiver_account,
.amount = rc->amount,
.deadline = rc->execution_date.abs_time,
diff --git a/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql b/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
index 286f612bc..8dcf7b742 100644
--- a/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
+++ b/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
@@ -14,15 +14,11 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
--- TODO: The constraints of operation are just for testing
-
CREATE TABLE auditor_amount_arithmetic_inconsistency
(
- row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+ row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
problem_row_id BIGINT NOT NULL,
- -- TODO: correct constraintcheck, currently wrong
- --operation BYTEA NOT NULL CHECK (LENGTH(operation)=16),
- operation TEXT NOT NULL PRIMARY KEY,
+ operation TEXT NOT NULL,
exchange_amount taler_amount NOT NULL,
auditor_amount taler_amount NOT NULL,
profitable BOOLEAN NOT NULL,
diff --git a/src/auditordb/0002-auditor_bad_sig_losses.sql b/src/auditordb/0002-auditor_bad_sig_losses.sql
index 8be983670..bcaaf4987 100644
--- a/src/auditordb/0002-auditor_bad_sig_losses.sql
+++ b/src/auditordb/0002-auditor_bad_sig_losses.sql
@@ -14,16 +14,14 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_bad_sig_losses
(
- row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+ row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
problem_row_id BIGINT NOT NULL,
operation TEXT NOT NULL,
loss taler_amount NOT NULL,
operation_specific_pub BYTEA NOT NULL CHECK (LENGTH(operation_specific_pub)=32),
- suppressed BOOLEAN NOT NULL DEFAULT FALSE,
- PRIMARY KEY (operation, operation_specific_pub)
+ suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_bad_sig_losses
IS 'Report a (serious) inconsistency with losses due to bad signatures';
diff --git a/src/auditordb/0002-auditor_closure_lags.sql b/src/auditordb/0002-auditor_closure_lags.sql
index d41a55eae..73743e8a1 100644
--- a/src/auditordb/0002-auditor_closure_lags.sql
+++ b/src/auditordb/0002-auditor_closure_lags.sql
@@ -14,14 +14,13 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_closure_lags
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
problem_row_id BIGINT NOT NULL,
amount taler_amount NOT NULL,
deadline BIGINT NOT NULL,
- wtid BYTEA NOT NULL,
+ wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32),
account BYTEA NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
diff --git a/src/auditordb/0002-auditor_coin_inconsistency.sql b/src/auditordb/0002-auditor_coin_inconsistency.sql
index c9c1b02fc..73ac1db13 100644
--- a/src/auditordb/0002-auditor_coin_inconsistency.sql
+++ b/src/auditordb/0002-auditor_coin_inconsistency.sql
@@ -14,18 +14,16 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_coin_inconsistency
(
- row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
- problem_row_id BIGINT NOT NULL,
+ row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
operation TEXT NOT NULL,
exchange_amount taler_amount NOT NULL,
auditor_amount taler_amount NOT NULL,
coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32),
profitable BOOLEAN NOT NULL,
- suppressed BOOLEAN NOT NULL DEFAULT FALSE,
- PRIMARY KEY (operation, coin_pub)
+ suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_coin_inconsistency
IS 'Report a (serious) inconsistency in the exchange''s database with respect to calculations involving amounts';
diff --git a/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql b/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
index 4c91eded6..6bde7400b 100644
--- a/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
+++ b/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
@@ -14,14 +14,13 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_denomination_key_validity_withdraw_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
problem_row_id BIGINT NOT NULL,
- execution_date BIGINT,
- reserve_pub BYTEA NOT NULL,
- denompub_h BYTEA NOT NULL,
+ execution_date BIGINT NOT NULL,
+ reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
+ denompub_h BYTEA NOT NULL CHECK (LENGTH(denompub_h)=64),
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_denomination_key_validity_withdraw_inconsistency
diff --git a/src/auditordb/0002-auditor_denominations_without_sigs.sql b/src/auditordb/0002-auditor_denominations_without_sigs.sql
index 77dc3b153..abd7d981f 100644
--- a/src/auditordb/0002-auditor_denominations_without_sigs.sql
+++ b/src/auditordb/0002-auditor_denominations_without_sigs.sql
@@ -14,11 +14,9 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_denominations_without_sigs
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
- problem_row_id BIGINT NOT NULL,
denompub_h BYTEA PRIMARY KEY,
value taler_amount NOT NULL,
start_time BIGINT NOT NULL,
diff --git a/src/auditordb/0002-auditor_deposit_confirmations.sql b/src/auditordb/0002-auditor_deposit_confirmations.sql
index 2c9bbf951..7e47b4fd1 100644
--- a/src/auditordb/0002-auditor_deposit_confirmations.sql
+++ b/src/auditordb/0002-auditor_deposit_confirmations.sql
@@ -16,7 +16,6 @@
CREATE TABLE auditor_deposit_confirmations
(deposit_confirmation_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
- ,problem_row_id BIGINT NOT NULL
,h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)
,h_policy BYTEA NOT NULL CHECK (LENGTH(h_policy)=64)
,h_wire BYTEA NOT NULL CHECK (LENGTH(h_wire)=64)
diff --git a/src/auditordb/0002-auditor_emergency.sql b/src/auditordb/0002-auditor_emergency.sql
index a97befc0b..90f0ca8b8 100644
--- a/src/auditordb/0002-auditor_emergency.sql
+++ b/src/auditordb/0002-auditor_emergency.sql
@@ -1,5 +1,3 @@
-
-
--
-- This file is part of TALER
-- Copyright (C) 2014--2024 Taler Systems SA
@@ -16,17 +14,16 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_emergency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
denompub_h BYTEA CHECK (LENGTH(denompub_h)=64),
denom_risk taler_amount NOT NULL,
denom_loss taler_amount NOT NULL,
deposit_start BIGINT NOT NULL,
- deposit_end BIGINT,
- value taler_amount NOT NULL
+ deposit_end BIGINT NOT NULL,
+ value taler_amount NOT NULL,
+ suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_emergency
IS 'Report an emergency denomination.';
diff --git a/src/auditordb/0002-auditor_emergency_by_count.sql b/src/auditordb/0002-auditor_emergency_by_count.sql
index 41ff89cea..6d2be80aa 100644
--- a/src/auditordb/0002-auditor_emergency_by_count.sql
+++ b/src/auditordb/0002-auditor_emergency_by_count.sql
@@ -14,17 +14,15 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_emergency_by_count
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
- denompub_h BYTEA NOT NULL,
+ denompub_h BYTEA NOT NULL CHECK (LENGTH(denompub_h)=64),
num_issued BIGINT NOT NULL,
num_known BIGINT NOT NULL,
risk taler_amount NOT NULL,
start BIGINT NOT NULL,
- deposit_end BIGINT,
+ deposit_end BIGINT NOT NULL,
value taler_amount NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
diff --git a/src/auditordb/0002-auditor_fee_time_inconsistency.sql b/src/auditordb/0002-auditor_fee_time_inconsistency.sql
index 128204bc4..b8cf3c212 100644
--- a/src/auditordb/0002-auditor_fee_time_inconsistency.sql
+++ b/src/auditordb/0002-auditor_fee_time_inconsistency.sql
@@ -14,7 +14,6 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_fee_time_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
diff --git a/src/auditordb/0002-auditor_historic_denomination_revenue.sql b/src/auditordb/0002-auditor_historic_denomination_revenue.sql
index 8576387a4..a902fe456 100644
--- a/src/auditordb/0002-auditor_historic_denomination_revenue.sql
+++ b/src/auditordb/0002-auditor_historic_denomination_revenue.sql
@@ -15,9 +15,8 @@
--
CREATE TABLE auditor_historic_denomination_revenue
- (row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
- problem_row_id BIGINT NOT NULL,
- denom_pub_hash BYTEA PRIMARY KEY CHECK (LENGTH(denom_pub_hash)=64)
+ (row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
+ ,denom_pub_hash BYTEA PRIMARY KEY CHECK (LENGTH(denom_pub_hash)=64)
,revenue_timestamp BIGINT NOT NULL
,revenue_balance taler_amount NOT NULL
,loss_balance taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_historic_reserve_summary.sql b/src/auditordb/0002-auditor_historic_reserve_summary.sql
index 0c97befb2..742a59f32 100644
--- a/src/auditordb/0002-auditor_historic_reserve_summary.sql
+++ b/src/auditordb/0002-auditor_historic_reserve_summary.sql
@@ -14,16 +14,13 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_historic_reserve_summary
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
- problem_row_id BIGINT NOT NULL,
start_date BIGINT NOT NULL,
end_date BIGINT NOT NULL,
reserve_profits taler_amount NOT NULL,
PRIMARY KEY (start_date, end_date)
-
);
COMMENT ON TABLE auditor_historic_reserve_summary
IS 'historic profits from reserves; we eventually GC auditor_historic_reserve_revenue, and then store the totals in here (by time intervals).';
diff --git a/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql b/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
index d212f5768..a351f7dfd 100644
--- a/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
+++ b/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
@@ -14,14 +14,13 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_misattribution_in_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
amount taler_amount NOT NULL,
bank_row BIGINT NOT NULL,
- reserve_pub BYTEA NOT NULL,
+ reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_misattribution_in_inconsistency
diff --git a/src/auditordb/0002-auditor_pending_deposits.sql b/src/auditordb/0002-auditor_pending_deposits.sql
index 847885e48..083c81fb5 100644
--- a/src/auditordb/0002-auditor_pending_deposits.sql
+++ b/src/auditordb/0002-auditor_pending_deposits.sql
@@ -17,7 +17,6 @@
CREATE TABLE IF NOT EXISTS auditor_pending_deposits
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
total_amount taler_amount NOT NULL,
wire_target_payto TEXT NOT NULL,
batch_deposit_serial_id BIGINT NOT NULL,
diff --git a/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql b/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
index 470f759c6..79a6ec432 100644
--- a/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
+++ b/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
@@ -14,12 +14,11 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_purse_not_closed_inconsistencies
(
- row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
- problem_row_id BIGINT NOT NULL,
- purse_pub BYTEA PRIMARY KEY NOT NULL,
+ row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
+ purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32),
amount taler_amount NOT NULL,
expiration_date BIGINT NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
diff --git a/src/auditordb/0002-auditor_purses.sql b/src/auditordb/0002-auditor_purses.sql
index 6a100fd6e..c9c108dc9 100644
--- a/src/auditordb/0002-auditor_purses.sql
+++ b/src/auditordb/0002-auditor_purses.sql
@@ -1,6 +1,6 @@
--
-- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2024 Taler Systems SA
--
-- TALER is free software; you can redistribute it and/or modify it under the
-- terms of the GNU General Public License as published by the Free Software
@@ -16,7 +16,6 @@
CREATE TABLE auditor_purses
(auditor_purses_rowid BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE NOT NULL
- ,problem_row_id BIGINT NOT NULL
,purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32) NOT NULL
,balance taler_amount NOT NULL DEFAULT(0,0)
,target taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_refreshes_hanging.sql b/src/auditordb/0002-auditor_refreshes_hanging.sql
index f9ef5b743..ebe3368ca 100644
--- a/src/auditordb/0002-auditor_refreshes_hanging.sql
+++ b/src/auditordb/0002-auditor_refreshes_hanging.sql
@@ -14,13 +14,12 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_refreshes_hanging
(
- row_id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+ row_id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
problem_row_id BIGINT NOT NULL,
amount taler_amount NOT NULL,
- coin_pub BYTEA PRIMARY KEY NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_refreshes_hanging
diff --git a/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql b/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
index 00ec2fee2..83e93a4e7 100644
--- a/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
@@ -14,11 +14,9 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_reserve_balance_insufficient_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
inconsistency_gain BOOLEAN NOT NULL,
inconsistency_amount taler_amount NOT NULL,
diff --git a/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql b/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
index bd99e1dc8..7679f93f0 100644
--- a/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
@@ -14,12 +14,11 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_reserve_balance_summary_wrong_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
- reserve_pub BYTEA NOT NULL,
+ reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
exchange_amount taler_amount NOT NULL,
auditor_amount taler_amount NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
diff --git a/src/auditordb/0002-auditor_reserve_in_inconsistency.sql b/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
index 088aab597..5e14f0189 100644
--- a/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
@@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS auditor_reserve_in_inconsistency
bank_row_id INT8 NOT NULL,
amount_exchange_expected taler_amount NOT NULL,
amount_wired taler_amount NOT NULL,
- reserve_pub BYTEA NOT NULL,
+ reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
timestamp BIGINT NOT NULL,
account BYTEA NOT NULL,
diagnostic BYTEA NOT NULL,
diff --git a/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql b/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
index 7c588a34c..82d378a44 100644
--- a/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
@@ -14,12 +14,10 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
CREATE TABLE IF NOT EXISTS auditor_reserve_not_closed_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE ,
- problem_row_id BIGINT NOT NULL,
- reserve_pub BYTEA PRIMARY KEY NOT NULL,
+ reserve_pub BYTEA PRIMARY KEY NOT NULL CHECK (LENGTH(reserve_pub)=32),
balance taler_amount NOT NULL,
expiration_time BIGINT,
diagnostic BYTEA,
diff --git a/src/auditordb/0002-auditor_reserves.sql b/src/auditordb/0002-auditor_reserves.sql
index 9a7506b0f..f50653512 100644
--- a/src/auditordb/0002-auditor_reserves.sql
+++ b/src/auditordb/0002-auditor_reserves.sql
@@ -16,7 +16,6 @@
CREATE TABLE auditor_reserves
(auditor_reserves_rowid BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
- ,problem_row_id BIGINT NOT NULL
,reserve_pub BYTEA PRIMARY KEY CHECK(LENGTH(reserve_pub)=32)
,reserve_balance taler_amount NOT NULL
,reserve_loss taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_row_inconsistency.sql b/src/auditordb/0002-auditor_row_inconsistency.sql
index 195d33030..c033814e4 100644
--- a/src/auditordb/0002-auditor_row_inconsistency.sql
+++ b/src/auditordb/0002-auditor_row_inconsistency.sql
@@ -14,11 +14,10 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_row_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
row_table TEXT NOT NULL,
diagnostic TEXT NOT NULL,
problem_row_id INT8 NOT NULL,
diff --git a/src/auditordb/0002-auditor_wire_format_inconsistency.sql b/src/auditordb/0002-auditor_wire_format_inconsistency.sql
index e77870a62..c11d8e63a 100644
--- a/src/auditordb/0002-auditor_wire_format_inconsistency.sql
+++ b/src/auditordb/0002-auditor_wire_format_inconsistency.sql
@@ -14,14 +14,13 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-SET search_path TO auditor;
+
CREATE TABLE IF NOT EXISTS auditor_wire_format_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
amount taler_amount NOT NULL,
wire_offset BIGINT NOT NULL,
- diagnostic BYTEA,
+ diagnostic BYTEA NOT NULL,
suppressed BOOLEAN NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE auditor_wire_format_inconsistency
diff --git a/src/auditordb/0002-auditor_wire_out_inconsistency.sql b/src/auditordb/0002-auditor_wire_out_inconsistency.sql
index 9e605d068..d46c2b283 100644
--- a/src/auditordb/0002-auditor_wire_out_inconsistency.sql
+++ b/src/auditordb/0002-auditor_wire_out_inconsistency.sql
@@ -17,7 +17,6 @@
CREATE TABLE IF NOT EXISTS auditor_wire_out_inconsistency
(
row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
- problem_row_id BIGINT NOT NULL,
destination_account TEXT NOT NULL,
diagnostic TEXT NOT NULL,
wire_out_serial_id INT8 NOT NULL,
diff --git a/src/auditordb/pg_helper.c b/src/auditordb/pg_helper.c
index f022d8e57..242b85efd 100644
--- a/src/auditordb/pg_helper.c
+++ b/src/auditordb/pg_helper.c
@@ -22,6 +22,7 @@
#include "platform.h"
#include "taler_auditordb_plugin.h"
#include <ltdl.h>
+#include "pg_helper.h"
const char *
diff --git a/src/auditordb/pg_helper.h b/src/auditordb/pg_helper.h
index 3c22dd424..9f354c2c1 100644
--- a/src/auditordb/pg_helper.h
+++ b/src/auditordb/pg_helper.h
@@ -75,27 +75,27 @@ struct PostgresClosure
* @param name name to prepare the statement under
* @param sql actual SQL text
*/
-#define PREPARE(pg,name,sql) \
+#define PREPARE(pg,name,sql) \
do { \
static struct { \
unsigned long long cnt; \
struct PostgresClosure *pg; \
- } preps[2]; /* 2 ctrs for taler-auditor-sync*/ \
- unsigned int off = 0; \
- \
- while ( (NULL != preps[off].pg) && \
- (pg != preps[off].pg) && \
- (off < sizeof(preps) / sizeof(*preps)) ) \
- off++; \
- GNUNET_assert (off < \
- sizeof(preps) / sizeof(*preps)); \
- if (preps[off].cnt < pg->prep_gen) \
+ } preps_[2]; /* 2 ctrs for taler-auditor-sync*/ \
+ unsigned int off_ = 0; \
+ \
+ while ( (NULL != preps_[off_].pg) && \
+ (pg != preps_[off_].pg) && \
+ (off_ < sizeof(preps_) / sizeof(*preps_)) ) \
+ off_++; \
+ GNUNET_assert (off_ < \
+ sizeof(preps_) / sizeof(*preps_)); \
+ if (preps_[off_].cnt < pg->prep_gen) \
{ \
struct GNUNET_PQ_PreparedStatement ps[] = { \
GNUNET_PQ_make_prepare (name, sql), \
GNUNET_PQ_PREPARED_STATEMENT_END \
}; \
- \
+ \
if (GNUNET_OK != \
GNUNET_PQ_prepare_statements (pg->conn, \
ps)) \
@@ -103,8 +103,8 @@ struct PostgresClosure
GNUNET_break (0); \
return GNUNET_DB_STATUS_HARD_ERROR; \
} \
- preps[off].pg = pg; \
- preps[off].cnt = pg->prep_gen; \
+ preps_[off_].pg = pg; \
+ preps_[off_].cnt = pg->prep_gen; \
} \
} while (0)
diff --git a/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c b/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
index afc84e5ba..4a58c5985 100644
--- a/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
+++ b/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
@@ -13,12 +13,9 @@
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/>
*/
-
#include "platform.h"
#include "taler_pq_lib.h"
-
#include "pg_helper.h"
-
#include "pg_insert_amount_arithmetic_inconsistency.h"
enum GNUNET_DB_QueryStatus
@@ -28,12 +25,13 @@ TAH_PG_insert_amount_arithmetic_inconsistency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_string (dc->operation),
- TALER_PQ_query_param_amount (pg->conn, &dc->exchange_amount),
- TALER_PQ_query_param_amount (pg->conn, &dc->auditor_amount),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->exchange_amount),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->auditor_amount),
GNUNET_PQ_query_param_bool (dc->profitable),
-
GNUNET_PQ_query_param_end
};
@@ -41,15 +39,11 @@ TAH_PG_insert_amount_arithmetic_inconsistency (
"auditor_amount_arithmetic_inconsistency_insert",
"INSERT INTO auditor_amount_arithmetic_inconsistency "
"(operation"
+ ",problem_row_id"
",exchange_amount"
",auditor_amount"
",profitable"
- ") VALUES ($1,$2,$3,$4)"
- " ON CONFLICT (operation) DO UPDATE"
- " SET exchange_amount = excluded.exchange_amount,"
- " auditor_amount = excluded.auditor_amount,"
- " profitable = excluded.profitable,"
- " suppressed = false;"
+ ") VALUES ($1,$2,$3,$4,$5);"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_amount_arithmetic_inconsistency_insert",
diff --git a/src/auditordb/pg_insert_auditor_closure_lags.c b/src/auditordb/pg_insert_auditor_closure_lags.c
index e858f5ac7..b437a5d7f 100644
--- a/src/auditordb/pg_insert_auditor_closure_lags.c
+++ b/src/auditordb/pg_insert_auditor_closure_lags.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_auditor_closure_lags.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_auditor_closure_lags (
void *cls,
@@ -28,12 +26,12 @@ TAH_PG_insert_auditor_closure_lags (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
- TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->amount),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
GNUNET_PQ_query_param_absolute_time (&dc->deadline),
GNUNET_PQ_query_param_auto_from_type (&dc->wtid),
GNUNET_PQ_query_param_string (dc->account),
-
GNUNET_PQ_query_param_end
};
@@ -41,10 +39,11 @@ TAH_PG_insert_auditor_closure_lags (
"auditor_closure_lags_insert",
"INSERT INTO auditor_closure_lags "
"(amount"
+ ",problem_row_id"
",deadline"
",wtid"
",account"
- ") VALUES ($1,$2,$3,$4);");
+ ") VALUES ($1,$2,$3,$4,$5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_closure_lags_insert",
params);
diff --git a/src/auditordb/pg_insert_bad_sig_losses.c b/src/auditordb/pg_insert_bad_sig_losses.c
index 88ce7d2aa..7cf7cf5cc 100644
--- a/src/auditordb/pg_insert_bad_sig_losses.c
+++ b/src/auditordb/pg_insert_bad_sig_losses.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_bad_sig_losses.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_bad_sig_losses (
void *cls,
@@ -28,30 +26,22 @@ TAH_PG_insert_bad_sig_losses (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_string (dc->operation),
- TALER_PQ_query_param_amount (pg->conn, &dc->loss),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->loss),
GNUNET_PQ_query_param_auto_from_type (&dc->operation_specific_pub),
-
GNUNET_PQ_query_param_end
};
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--storing new bsl\n");
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--operation %s\n", dc->operation);
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--loss %s\n", TALER_amount_to_string (
- &dc->loss));
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--operation_specific_pub %s\n",
- TALER_B2S (&dc->operation_specific_pub));
PREPARE (pg,
"auditor_bad_sig_losses_insert",
"INSERT INTO auditor_bad_sig_losses "
"(operation"
+ ",problem_row_id"
",loss"
",operation_specific_pub"
- ") VALUES ($1,$2,$3)"
- " ON CONFLICT (operation, operation_specific_pub) DO UPDATE"
- " SET loss = excluded.loss,"
- " suppressed = false;"
+ ") VALUES ($1,$2,$3,$4);"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_bad_sig_losses_insert",
diff --git a/src/auditordb/pg_insert_coin_inconsistency.c b/src/auditordb/pg_insert_coin_inconsistency.c
index 32c57a3c8..70d105175 100644
--- a/src/auditordb/pg_insert_coin_inconsistency.c
+++ b/src/auditordb/pg_insert_coin_inconsistency.c
@@ -13,13 +13,9 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
-
#include "pg_helper.h"
-
#include "pg_insert_coin_inconsistency.h"
@@ -30,7 +26,6 @@ TAH_PG_insert_coin_inconsistency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_string (dc->operation),
TALER_PQ_query_param_amount (pg->conn,
&dc->exchange_amount),
@@ -38,7 +33,6 @@ TAH_PG_insert_coin_inconsistency (
&dc->auditor_amount),
GNUNET_PQ_query_param_auto_from_type (&dc->coin_pub),
GNUNET_PQ_query_param_bool (dc->profitable),
-
GNUNET_PQ_query_param_end
};
@@ -46,16 +40,12 @@ TAH_PG_insert_coin_inconsistency (
"auditor_coin_inconsistency_insert",
"INSERT INTO auditor_coin_inconsistency "
"(operation"
+ ",problem_row_id"
",exchange_amount"
",auditor_amount"
",coin_pub"
",profitable"
- ") VALUES ($1,$2,$3,$4,$5)"
- " ON CONFLICT (operation, coin_pub) DO UPDATE"
- " SET exchange_amount = excluded.exchange_amount,"
- " auditor_amount = excluded.auditor_amount,"
- " profitable = excluded.profitable,"
- " suppressed = false;"
+ ") VALUES ($1,$2,$3,$4,$5,$6)"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_coin_inconsistency_insert",
diff --git a/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c b/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
index 2d0cb3cf5..9755739f3 100644
--- a/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
+++ b/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_denomination_key_validity_withdraw_inconsistency.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
void *cls,
@@ -28,8 +26,8 @@ TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_absolute_time (&dc->execution_date),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
GNUNET_PQ_query_param_auto_from_type (&dc->reserve_pub),
GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
@@ -40,9 +38,10 @@ TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
"auditor_denomination_key_validity_withdraw_inconsistency_insert",
"INSERT INTO auditor_denomination_key_validity_withdraw_inconsistency "
"(execution_date"
+ ",problem_row_id"
",reserve_pub"
",denompub_h"
- ") VALUES ($1,$2,$3);");
+ ") VALUES ($1,$2,$3,$4);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_denomination_key_validity_withdraw_inconsistency_insert",
params);
diff --git a/src/auditordb/pg_insert_denominations_without_sigs.c b/src/auditordb/pg_insert_denominations_without_sigs.c
index f06034602..d8aacbd0b 100644
--- a/src/auditordb/pg_insert_denominations_without_sigs.c
+++ b/src/auditordb/pg_insert_denominations_without_sigs.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_denominations_without_sigs.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_denominations_without_sigs (
void *cls,
@@ -28,13 +26,10 @@ TAH_PG_insert_denominations_without_sigs (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
TALER_PQ_query_param_amount (pg->conn, &dc->value),
GNUNET_PQ_query_param_absolute_time (&dc->start_time),
GNUNET_PQ_query_param_absolute_time (&dc->end_time),
-
-
GNUNET_PQ_query_param_end
};
diff --git a/src/auditordb/pg_insert_emergency.c b/src/auditordb/pg_insert_emergency.c
index a966be43b..6af7c527f 100644
--- a/src/auditordb/pg_insert_emergency.c
+++ b/src/auditordb/pg_insert_emergency.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_emergency.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_emergency (
void *cls,
@@ -28,14 +26,15 @@ TAH_PG_insert_emergency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
- TALER_PQ_query_param_amount (pg->conn, &dc->denom_risk),
- TALER_PQ_query_param_amount (pg->conn, &dc->denom_loss),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->denom_risk),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->denom_loss),
GNUNET_PQ_query_param_absolute_time (&dc->deposit_start),
GNUNET_PQ_query_param_absolute_time (&dc->deposit_end),
- TALER_PQ_query_param_amount (pg->conn,&dc->value),
-
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->value),
GNUNET_PQ_query_param_end
};
diff --git a/src/auditordb/pg_insert_fee_time_inconsistency.c b/src/auditordb/pg_insert_fee_time_inconsistency.c
index ad1a8b25f..852e58018 100644
--- a/src/auditordb/pg_insert_fee_time_inconsistency.c
+++ b/src/auditordb/pg_insert_fee_time_inconsistency.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_fee_time_inconsistency.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_fee_time_inconsistency (
void *cls,
@@ -28,12 +26,10 @@ TAH_PG_insert_fee_time_inconsistency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
-
GNUNET_PQ_query_param_string (dc->type),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
GNUNET_PQ_query_param_absolute_time (&dc->time),
GNUNET_PQ_query_param_string (dc->diagnostic),
-
GNUNET_PQ_query_param_end
};
@@ -41,9 +37,10 @@ TAH_PG_insert_fee_time_inconsistency (
"auditor_fee_time_inconsistency_insert",
"INSERT INTO auditor_fee_time_inconsistency "
"(type"
+ ",problem_row_id"
",time"
",diagnostic"
- ") VALUES ($1,$2,$3);");
+ ") VALUES ($1,$2,$3,$4);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_fee_time_inconsistency_insert",
params);
diff --git a/src/auditordb/pg_insert_misattribution_in_inconsistency.c b/src/auditordb/pg_insert_misattribution_in_inconsistency.c
index c557160da..e1641c61c 100644
--- a/src/auditordb/pg_insert_misattribution_in_inconsistency.c
+++ b/src/auditordb/pg_insert_misattribution_in_inconsistency.c
@@ -18,6 +18,7 @@
#include "pg_helper.h"
#include "pg_insert_misattribution_in_inconsistency.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_misattribution_in_inconsistency (
void *cls,
diff --git a/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c b/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
index 7ae2dc7d8..ff8100376 100644
--- a/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
+++ b/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_purse_not_closed_inconsistencies.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_purse_not_closed_inconsistencies (
void *cls,
@@ -28,11 +26,10 @@ TAH_PG_insert_purse_not_closed_inconsistencies (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
GNUNET_PQ_query_param_auto_from_type (&dc->purse_pub),
- TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->amount),
GNUNET_PQ_query_param_absolute_time (&dc->expiration_date),
-
GNUNET_PQ_query_param_end
};
@@ -43,10 +40,6 @@ TAH_PG_insert_purse_not_closed_inconsistencies (
",amount"
",expiration_date"
") VALUES ($1,$2,$3)"
- " ON CONFLICT (purse_pub) DO UPDATE"
- " SET amount = excluded.amount,"
- " expiration_date = excluded.expiration_date,"
- " suppressed = false;"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_purse_not_closed_inconsistencies_insert",
diff --git a/src/auditordb/pg_insert_refreshes_hanging.c b/src/auditordb/pg_insert_refreshes_hanging.c
index 5a7fe018c..fead922cf 100644
--- a/src/auditordb/pg_insert_refreshes_hanging.c
+++ b/src/auditordb/pg_insert_refreshes_hanging.c
@@ -13,14 +13,12 @@
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/>
*/
-
-
#include "platform.h"
#include "taler_pq_lib.h"
#include "pg_helper.h"
-
#include "pg_insert_refreshes_hanging.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_refreshes_hanging (
void *cls,
@@ -28,10 +26,10 @@ TAH_PG_insert_refreshes_hanging (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
- TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->amount),
+ GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
GNUNET_PQ_query_param_auto_from_type (&dc->coin_pub),
-
GNUNET_PQ_query_param_end
};
@@ -39,11 +37,9 @@ TAH_PG_insert_refreshes_hanging (
"auditor_refreshes_hanging_insert",
"INSERT INTO auditor_refreshes_hanging "
"(amount"
+ ",problem_row_id"
",coin_pub"
- ") VALUES ($1,$2)"
- " ON CONFLICT (coin_pub) DO UPDATE"
- " SET amount = excluded.amount,"
- " suppressed = false;"
+ ") VALUES ($1,$2);"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_refreshes_hanging_insert",
diff --git a/src/auditordb/pg_insert_row_inconsistency.c b/src/auditordb/pg_insert_row_inconsistency.c
index 8ab92dbb7..f5cc630f2 100644
--- a/src/auditordb/pg_insert_row_inconsistency.c
+++ b/src/auditordb/pg_insert_row_inconsistency.c
@@ -19,6 +19,7 @@
#include "pg_helper.h"
#include "pg_insert_row_inconsistency.h"
+
enum GNUNET_DB_QueryStatus
TAH_PG_insert_row_inconsistency (
void *cls,
diff --git a/src/auditordb/pg_insert_wire_format_inconsistency.c b/src/auditordb/pg_insert_wire_format_inconsistency.c
index 73fe677b4..a824ae76d 100644
--- a/src/auditordb/pg_insert_wire_format_inconsistency.c
+++ b/src/auditordb/pg_insert_wire_format_inconsistency.c
@@ -26,8 +26,8 @@ TAH_PG_insert_wire_format_inconsistency (
{
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
-
- TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+ TALER_PQ_query_param_amount (pg->conn,
+ &dc->amount),
GNUNET_PQ_query_param_uint64 (&dc->wire_offset),
GNUNET_PQ_query_param_auto_from_type (&dc->diagnostic),
GNUNET_PQ_query_param_end
@@ -36,11 +36,10 @@ TAH_PG_insert_wire_format_inconsistency (
PREPARE (pg,
"auditor_wire_format_inconsistency_insert",
"INSERT INTO auditor_wire_format_inconsistency "
- "(row_id,"
- " amount,"
+ "(amount,"
" wire_offset,"
" diagnostic"
- ") VALUES ($1,$2,$3,$4);"
+ ") VALUES ($1,$2,$3);"
);
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"auditor_wire_format_inconsistency_insert",
diff --git a/src/auditordb/plugin_auditordb_postgres.c b/src/auditordb/plugin_auditordb_postgres.c
index 5c55e65e6..14d2e4377 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -477,7 +477,7 @@ postgres_rollback (void *cls)
* @param cls the `struct PostgresClosure` with the plugin-specific state
* @return transaction status code
*/
-enum GNUNET_DB_QueryStatus
+static enum GNUNET_DB_QueryStatus
postgres_commit (void *cls)
{
struct PostgresClosure *pg = cls;
diff --git a/src/include/taler_auditordb_plugin.h b/src/include/taler_auditordb_plugin.h
index 176e1b45b..5a7bd61ed 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -215,8 +215,8 @@ struct TALER_AUDITORDB_Generic_Update
*/
struct TALER_AUDITORDB_AmountArithmeticInconsistency
{
- // FIXME: which row?
uint64_t row_id;
+ uint64_t problem_row_id;
char *operation;
struct TALER_Amount exchange_amount;
struct TALER_Amount auditor_amount;
@@ -253,6 +253,7 @@ struct TALER_AUDITORDB_RowInconsistency
struct TALER_AUDITORDB_BadSigLosses
{
uint64_t row_id;
+ uint64_t problem_row_id;
char *operation;
struct TALER_Amount loss;
struct GNUNET_CRYPTO_EddsaPublicKey operation_specific_pub;
@@ -264,6 +265,7 @@ struct TALER_AUDITORDB_BadSigLosses
struct TALER_AUDITORDB_ClosureLags
{
uint64_t row_id;
+ uint64_t problem_row_id;
struct TALER_Amount amount;
struct GNUNET_TIME_Absolute deadline;
struct TALER_WireTransferIdentifierRawP wtid;
@@ -316,6 +318,7 @@ struct TALER_AUDITORDB_Progress
struct TALER_AUDITORDB_RefreshesHanging
{
uint64_t row_id;
+ uint64_t problem_row_id;
struct TALER_Amount amount;
struct GNUNET_CRYPTO_EddsaPublicKey coin_pub;
};
@@ -326,6 +329,7 @@ struct TALER_AUDITORDB_RefreshesHanging
struct TALER_AUDITORDB_FeeTimeInconsistency
{
uint64_t row_id;
+ uint64_t problem_row_id;
char *type;
struct GNUNET_TIME_Absolute time;
char *diagnostic;
@@ -337,6 +341,7 @@ struct TALER_AUDITORDB_FeeTimeInconsistency
struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency
{
uint64_t row_id;
+ uint64_t problem_row_id;
struct GNUNET_TIME_Absolute execution_date;
struct TALER_ReservePublicKeyP reserve_pub;
struct TALER_DenominationHashP denompub_h;
@@ -688,7 +693,6 @@ struct TALER_AUDITORDB_DenominationsWithoutSigs
struct GNUNET_TIME_Absolute start_time;
struct GNUNET_TIME_Absolute end_time;
bool suppressed;
-
};
struct TALER_AUDITORDB_MisattributionInInconsistency